手势处理

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;
	}


} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值