android事件处理学习笔记

2016-06-25  本文已影响0人  juanxincai

基于监听的事件处理

  1. 监听处理模型:
  1. 委派式事件处理方式: 每个组件可为特定事件指定一个事件监听器,每个事件监听器可以监听一个或者多个事件源。
  2. 基于监听的事件处理模型编程步骤:
  3. 获取事件源即监听对象
  4. 将事件监听器绑定至事件源上(可以使用匿名内部类)
  5. 实现事件处理器

事件和事件监听器

参见实例

基于回调的事件处理

  1. 回调机制与监听机制


    ** 包含的方法 **
boolean onKeyDown(int keyCode, KeyEvent Event):用户按下某个按键时触动该方法
boolean onKeyLongPress(int keyCode,KeyEvent event):
boolean onKeyShortCut(int keyCode, KeyEvent event):当一个键盘快捷键事件发生调用此方法
boolean onKeyUp(...):当用户松开某个组件调用该方法
boolean onTouchEvent(MotionEvent event): 用户触发触摸屏事件调用
boolean onTrackballEvent(MotionEvent event):触发轨迹球事件调用

  1. ** 示例 ** :
 public class MyButton extends Button{
   public MyButton(Context Context, AttributeSet set){
     super(context, set);
   }

   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event){
     super.onKeyDown(keyCode,KeyEvent);
     Log.v("-crazyit.org-","the onKeyDown is in my button");
     return true;//返回true,表明事件不会向外扩散;
   }
 }

  1. 基于监听与基于回调的处理模型的区别:
    <pre> 事件源与事件监听器是分离的,当事件源上发生特定的事件时交给事件监听器处理;对于基于回调的事件处理模型,事件源与监听器是统一的,当事件源发生特定事件时该事件还是由事件源本身负责处理

基于回调的事件的传播

重写onTouchEvent方法响应触摸屏事件

实例** 通过回调实现跟随手指的小球 ** :

public class DrawView extends View{
  public float currentX = 40;
  public float currentY = 50;

  //定义,创建画笔

  Paint p = new Paint();

  public DrawView(Context context,AttributeSet set){
    super(context, set);
  }
  //重写onDraw()方法
  @Override
  public void onDraw(Canvas canvas){
    super.onDraw(canvas);
    p.setColor(Color.RED);
    canvas.drawCircle(currentX, currentY, 15, p);
  }
  //创建onTouchEvent()
  public boolean onTouchEvent(MotionEvent event){
    //设置当前组件的currentX与currentY属性
    this.currentX = event.getX();
    this.currentY = event.getY();
    //通知组件重绘
    this.invalidate();
    //返回true表明处理方法以经处理完该事件
    return true;
  }

}

** xml清单: **

<LinearLayout>
  <com.juanxincai.test.DrawView
    android:orientation:xxx
    android:layout_width:xxx
    android:layout_height:xxx/>
</LinearLayout>

响应系统设置事件

Configuration类简介

程序可调用Aactivity的如下方法获得Cconfiguration类对象:
<pre> Configuration cfg = getResourses().getConfiguration();</pre>
该类用于描述手机设备配置信息,具体方法参考
Configureration简介(自备梯子)

上一篇下一篇

猜你喜欢

热点阅读