您的位置:首页 > 其它

手势处理

2016-04-03 12:38 344 查看
Android事件处理(event)分:按键处理和手势处理

手势处理指用户在设备的屏幕上的触控操作,通常包括按下、弹起、滑动等等,由这些基本操作可以构成各种常见手势,例如单击、长按、滑动等等。

处理触控操作主要依赖于重写Activity的onTouchEvent()方法,方法的参数MotionEvent中封装了触控相关的参数,例如触控点的坐标等。

如果只针对于某些控件,则可以通过调用控件对象的setOnTouchListener()方法为控件配置手势操作的监听器。

【注意】

在手势操作的处理中,需要保证多次的触控点的坐标范围,即单击时按下、弹起的坐标是允许存在一定差异的,滑动时按下、弹起的坐标是需要大于一定的差异的。


JAVA Activity:

     public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private float downX;//记录下按下的x的住标,声明变量
//实现手势的处理,重写ontouch()方法
@Override
public 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);
}
@Override
public 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;
}

} 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: