1.获取手机屏幕分辨率
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.heightPixels
metrics.widthPixels
2.界面响应事件
button.setOnTouchListener(touchlistener);
android.view.MotionEvent
MotionEvent.getAction() MotionEvent.ACTION_DOWN MotionEventl.ACTION_MOVE
x = motionEvent.getX() y = motionEvent.getY()
ACTION_DOWN: 表示用户开始触摸.
ACTION_MOVE: 表示用户在移动(手指或者其他)
ACTION_UP:表示用户抬起了手指
ACTION_CANCEL:表示手势被取消了
ViewGroup.LayoutParams lp = new AbsoluteLayout.LayoutParams(WARP_CONTENT,WARP_CONTENT,motion.getRawX(),motion.getRawY());
button.setLayoutParams(lp);
3.控件外观的控制
9.png图片制作E:\\android new \ android-sdk-widowsj\tools\draw9patch.bat
4.定时改变Toast提示信息
一个Thread只能有一个Looper对象
对Looper有了基本的了解,总结几点:
1.每个线程有且最多只能有一个Looper对象,它是一个ThreadLocal
2.Looper内部有一个消息队列,loop()方法调用后线程开始不断从队列中取出消息执行
3.Looper使一个线程变成Looper线程。
通知MQ它要执行一个任务(sendMessage),并在loop到自己的时候执行该任务(handleMessage),整个过程是异步的。handler创建时会关联一个looper,默认的构造方法将关联当前线程的looper
在整个消息处理机制中,message又叫task,封装了任务携带的信息和处理该任务的handler。message的用法比较简单,这里不做总结了。但是有这么几点需要注意(待补充):
1.尽管Message有public的默认构造方法,但是你应该通过Message.obtain()来从消息池中获得空消息对象,以节省资源。
2.如果你的message只需要携带简单的int信息,请优先使用Message.arg1和Message.arg2来传递信息,这比用Bundle更省内存
3.擅用message.what来标识信息,以便用不同方式处理message。