Android事件处理和手势

  • [1] 事件处理概述
  • [2] 物理按键事件
  • [3]单击事件
  • [4]长按事件
  • [4]触摸事件
  • [5]手势检测

[1] 事件处理概述

  1. 基于监听的事件处理
  2. 基于回调的事件处理
    重写相应方法实现

[2] 物理按键事件

 @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {       if(keyCode==KeyEvent.KEYCODE_BACK){           exit();           return true;       }        return super.onKeyDown(keyCode, event);    }    private void exit() {        if(System.currentTimeMillis()-exitTime>2000){            Toast.makeText(MainActivity.this,"再按一次退出应用程序",Toast.LENGTH_SHORT).show();            exitTime=System.currentTimeMillis();        }else{            finish();            System.exit(0);        }    }

[3]单击事件

setOnClickListener()

[4]长按事件

2秒以上setOnLongClickListener() 
//示例代码   add.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View v) {                //1.注册菜单                registerForContextMenu(v);                //2.打开菜单                openContextMenu(v);                return true;            }        });    }    @Override    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        menu.add("收藏");        menu.add("举报");    }}

[4]触摸事件

单击事件触发一个动作
触摸事件触发两个动作,按下和抬起

//图像重绘对象 public class RabbitView extends View {    public float bitmapX;    public float bitmapY;    public RabbitView(Context context) {        super(context);        //构造方法中赋初值        bitmapX=290;        bitmapY=130;    }    //重写ondraw方法    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        //1建立画笔        Paint paint = new Paint();        //2.解析资源        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.mipmap.touzi);        //3.绘制        canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);        //4.回收图片        if(bitmap.isRecycled()){            bitmap.recycle();        }    }}

[5]手势检测

GestureDetector

GestureDetector.OnGestureListener 重写所有方法

//示例代码//第一步:让类实现GestureDetector.onGestureListener并重写所有方法public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener {    private int [] images={            R.mipmap.b1,R.mipmap.b2,R.mipmap.b3,            R.mipmap.b4,R.mipmap.b5,R.mipmap.b6,            R.mipmap.b7,R.mipmap.b8,R.mipmap.b9    };     final int distance=50;    //第二步:定义一个全局的手势检测器    GestureDetector detector ;    private ViewFlipper flipper;    Animation [] animation=new Animation[4];    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        detector = new GestureDetector(MainActivity.this,this); //实例化GestureDetector        //第三步:将要显示的图片加载到viewFlipper中,并初始化动画资源数组        flipper = findViewById(R.id.flipper);        for(int i=0;idistance){            flipper.setInAnimation(animation[2]);            flipper.setOutAnimation(animation[1]);            flipper.showPrevious();            return true;          //从左向右滑        }else if(e2.getX()-e1.getX()>distance){            flipper.setInAnimation(animation[0]);            flipper.setOutAnimation(animation[3]);            flipper.showNext();            return true;        }        return false;    }    //第五步:把Activity上的触摸事件交给GestureDetector处理    @Override    public boolean onTouchEvent(MotionEvent event) {        return detector.onTouchEvent(event);    }}

更多相关文章

  1. Android之广播大全 Intent Action 事件
  2. Android(安卓)- AppCompatEditText 重写,实现 3个文字中间使用空
  3. 浅尝安卓事件分发机制
  4. Android(安卓)H5 js webView初体验
  5. Android(安卓)View的事件分发机制
  6. Android应用程序Click事件与Touch事件处理
  7. Android中OptionMenu用法实例
  8. 关于Android触屏监听的一些想法
  9. S5PV310 Android(安卓)电容屏驱动调试

随机推荐

  1. [置顶] 总结的一些android公共库
  2. Android ADT插件配置
  3. 将要更新到android 4.0的手机列表
  4. 在 Android 4.1上,分析 input -- android
  5. Android UI基础——SeekBar&RatingBar控
  6. Android读写XML(上)
  7. Android layout属性
  8. Android 滑动侧边栏(Sliding Menu)第一种实
  9. Android应用程序怎么刷到手机上
  10. Android Studio 单刷《第一行代码》系列