android事件处理学习笔记

基于监听的事件处理

  1. 监听处理模型:
  • Event Sourse(事件源)
  • Event(事件):用户的一次操作会封装在事件中,一般通过Event对象获得界面组建的事件信息
  • Event Listener: 监听事件源发生的事件并对其作出响应
  1. 委派式事件处理方式: 每个组件可为特定事件指定一个事件监听器,每个事件监听器可以监听一个或者多个事件源。
  2. 基于监听的事件处理模型编程步骤:
  3. 获取事件源即监听对象
  4. 将事件监听器绑定至事件源上(可以使用匿名内部类)
  5. 实现事件处理器

事件和事件监听器

参见实例

  • 内部类形式:将事件监听器设置为当前类的内部类
  • 外部类形式:将事件监听器设置为当前类的外部类
  • 匿名内部类:。。。(推荐)
  • Activity本身实现监听器接口并实现事件处理
  • 绑定标签:onClick属性(常用)

基于回调的事件处理

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

基于回调的事件的传播

  • 关于回调事件方法中的boolean返回值,其用于标示该处理方法能否完全处理该事件,返回true表示可以并不会传播出去,返回false则相反,该事件会传播出去
  • 若该事件可以传播到该Activity,则该组件所发生的事件不仅会激发该组件的回调方法也会激发该Activity上的回调方法

重写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清单: **


  

响应系统设置事件

Configuration类简介

程序可调用Aactivity的如下方法获得Cconfiguration类对象:

 Configuration cfg = getResourses().getConfiguration();

该类用于描述手机设备配置信息,具体方法参考
Configureration简介(自备梯子)

你可能感兴趣的:(android事件处理学习笔记)