Android小应用开发示例,Android应用开发经常使用知识(示例代码)

1、近期打开的应用不在近期任务列表中显示

android:excludeFromRecents="true"

设置为true,则排除在近期任务列表之外。不在近期任务列表中显示

2、推断一个一个String str 是否为NULL或者是否为空字符串

TextUtils.isEmpty(str)

3、android:imeOptions="actionSearch|flagNoFullscreen"的使用方法

在做一个把EditText放到到ActionBar中作为搜索框的功能时,设置EditText的属性为android:imeOptions="actionSearch"。会遇到一个问题,当在横屏时。EditText的宽度会填充掉屏幕上除了软键盘之外的地方,与需求不符,改为android:imeOptions="actionSearch|flagNoFullscreen"后就OK了。

4、改变图片亮度的方法

1、使用image.setColorFilter(Color.GRAY,PorterDuff.Mode.MULTIPLY);能够使图片变暗。然后使用image.clearColorFilter();清除滤镜,恢复到原来的亮度;

2、使用

int brightness = -80;

ColorMatrix matrix = new ColorMatrix();

matrix.set(new float[] { 1, 0, 0, 0, brightness, 0, 1, 0, 0,

brightness, 0, 0, 1, 0, brightness, 0, 0, 0, 1, 0 });

v.setColorFilter(new ColorMatrixColorFilter(matrix));

但这样的方法会使颜色不太正常。图片留有黑边;

5、用Handler来实现有时间间隔事件的推断

看到Android中GestureDetector.java是用以下代码实现手势的单击和双击推断的:

public boolean onTouchEvent(MotionEvent ev) {

……

case MotionEvent.ACTION_DOWN:

if (mDoubleTapListener != null) {

boolean hadTapMessage = mHandler.hasMessages(TAP);

if (hadTapMessage) mHandler.removeMessages(TAP);

if ((mCurrentDownEvent != null) && (mPreviousUpEvent != null) && hadTapMessage &&

isConsideredDoubleTap(mCurrentDownEvent, mPreviousUpEvent, ev)) {

// This is a second tap

mIsDoubleTapping = true;

// Give a callback with the first tap of the double-tap

handled |= mDoubleTapListener.onDoubleTap(mCurrentDownEvent);

// Give a callback with down event of the double-tap

handled |= mDoubleTapListener.onDoubleTapEvent(ev);

} else {

// This is a first tap

mHandler.sendEmptyMessageDelayed(TAP, DOUBLE_TAP_TIMEOUT);

}

}

……

}

private boolean isConsideredDoubleTap(MotionEvent firstDown, MotionEvent firstUp,

MotionEvent secondDown) {

if (!mAlwaysInBiggerTapRegion) {

return false;

}

final long deltaTime = secondDown.getEventTime() - firstUp.getEventTime();

if (deltaTime > DOUBLE_TAP_TIMEOUT || deltaTime < DOUBLE_TAP_MIN_TIME) {

return false;

}

int deltaX = (int) firstDown.getX() - (int) secondDown.getX();

int deltaY = (int) firstDown.getY() - (int) secondDown.getY();

return (deltaX * deltaX + deltaY * deltaY < mDoubleTapSlopSquare);

}

private class GestureHandler extends Handler {

GestureHandler() {

super();

}

GestureHandler(Handler handler) {

super(handler.getLooper());

}

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case SHOW_PRESS:

mListener.onShowPress(mCurrentDownEvent);

break;

case LONG_PRESS:

dispatchLongPress();

break;

case TAP:

// If the user‘s finger is still down, do not count it as a tap

if (mDoubleTapListener != null) {

if (!mStillDown) {

mDoubleTapListener.onSingleTapConfirmed(mCurrentDownEvent);

} else {

mDeferConfirmSingleTap = true;

}

}

break;

default:

throw new RuntimeException("Unknown message " + msg); //never

}

}

详细能够參考源代码,这里是妙用了mHandler.sendEmptyMessageDelayed。假设在DOUBLE_TAP_TIMEOUT时间内mHandler把TAP消息发送出去了。就是单击时间,假设在这个时间内没有发送出去,就是双击事件。

6、ImageView的setImageResources方法

ImageView的setImageResources方法不仅能够接受drawable的资源,还能够接受color资源:

imageView.setImageResource(R.drawable.XX);

imageView.setImageResource(R.color.XX);

7、android:addStatesFromChildren

属性说明该viewgroup的drawable属性是否把它的子类的drawable的state包括进来.測试中linearlayout假设不包括该属性(false),当子widget被点击时不会出现被选中的状态。也就是子类的state不会被传递给父类了。

比方要实现一个LinearLayout中包括一个TextView和一个EditText,在用户点的时候实现焦点的效果。将android:addStatesFromChildren设为true,当组中的EditText或是Button获取焦点时,将Layout的Background设置成对应EditText或的Button的Drawable ,这样看上去该linear中的view是一个总体。

8、android:descendantFocusability

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

afterDescendants:viewgroup仅仅有当其子类控件不须要获取焦点时才获取焦点

blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

9、手机息屏控制

PowerManager pm = (PowerManager) mActivity

.getSystemService(Context.POWER_SERVICE);

WakeLock mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK,

TAG);

mWakeLock.acquire();

//做你想做的时。

mWakeLock.release();

newWakeLock的第一个參数有三种不同选择:

PowerManager.PARTIAL_WAKE_LOCK

PowerManager.SCREEN_DIM_WAKE_LOCK

PowerManager.SCREEN_BRIGHT_WAKE_LOCK

10、android:windowSoftInputMode

1、当有焦点产生时,软键盘是隐藏还是显示

2、是否降低活动主窗体大小以便腾出空间放软键盘

11、RelativeLayout 实现类似 LinearLayout layout_weight 的效果:

android:id="@+id/text1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentStart="true"

android:text="Test1"

android:background="@android:color/holo_blue_light"

android:textSize="16dp"/>

android:id="@+id/text2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentEnd="true"

android:layout_toEndOf="@id/text1"

android:text="Test2"

android:background="@android:color/holo_red_light"

android:textSize="16dp"/>

12、Handler.removeCallbacksAndMessages(null)

在使用Handler中,假设Activity退出之后我们不再须要发送消息或者运行Runnable,那么就要在onDestory中运行这段代码。否则可能会引起报错。由于可能在onDestory之后才会这些Handler发出的动作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值