手势处理

来源:互联网 发布:南京的市政设计院 知乎 编辑:程序博客网 时间:2024/04/20 00:40
Android事件处理(event)分:按键处理和手势处理
手势处理指用户在设备的屏幕上的触控操作,通常包括按下、弹起、滑动等等,由这些基本操作可以构成各种常见手势,例如单击、长按、滑动等等。
处理触控操作主要依赖于重写Activity的onTouchEvent()方法,方法的参数MotionEvent中封装了触控相关的参数,例如触控点的坐标等。
如果只针对于某些控件,则可以通过调用控件对象的setOnTouchListener()方法为控件配置手势操作的监听器。
【注意】
在手势操作的处理中,需要保证多次的触控点的坐标范围,即单击时按下、弹起的坐标是允许存在一定差异的,滑动时按下、弹起的坐标是需要大于一定的差异的。
JAVA Activity:
     public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}private float downX;//记录下按下的x的住标,声明变量//实现手势的处理,重写ontouch()方法@Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();//event是一个常量switch (action) {//手指按下case MotionEvent.ACTION_DOWN://在承载“event”对象事件“MotionEvent”的里面找对应的常量Log.d("tedu", "ACTION_DOWN,X="+event.getX()+",Y"+event.getY());//通过日志进行观察downX = event.getX();//变量的初始化break;//手指弹起case MotionEvent.ACTION_UP://在承载“event”对象事件“MotionEvent”的里面找对应的常量Log.i("tedu", "ACTION_UP,X="+event.getX()+",Y"+event.getY());//通过日志进行观察   #下面两个“if”不能写成“if...else...”格式#if (event.getX()-downX>50) {Log.w("tedu", "left->right");}if (downX-event.getX()>50) {//按下去的点减去弹起的点Log.w("tedu","right->left");}break;case MotionEvent.ACTION_MOVE:Log.v("tedu", "ACTION_MOVE,X="+event.getX()+",Y"+event.getY());}return super.onTouchEvent(event);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}} 
0 0
原创粉丝点击