Android中用户手势检测详述(OnCliskListener、OnTouchListener和GestureDetecter)

以前做项目只是简单应用一些点击事件以及滑动事件,没有系统的学习手势检测,今天特意学习了一下,顺便分享一下,以便于以后的记忆一、先说点击事件:点击事件很简单,我们只要绑定点击事件的监听接口并实现点击事件的监听方法,在onClik方法中进行点击事件的处理即可。如点击事件监听接口OnClickListener、长按事件的监听接口OnLongClickListener等。下面是一个点击事件的简单实
摘要由CSDN通过智能技术生成

以前做项目只是简单应用一些点击事件以及滑动事件,有些细节方便不是很清楚,今天特意学习了一下,顺便分享,以便于以后的记忆

一、先说点击事件:

点击事件很简单,我们只要绑定点击事件的监听接口并实现点击事件的监听方法,在onClik方法中进行点击事件的处理即可。如点击事件监听接口OnClickListener、长按事件的监听接口OnLongClickListener等。下面是一个点击事件的简单实现过程:

<span style="font-size:14px;"><span style="font-family:SimSun;font-size:14px;">class CliclLister implements OnClickListener{

	@Override
	public void onClick(View v) {
		switch(v.getId()){
		case R.id.but:
			if(v.isPressed()){
				btn.setText("单击成功");
			}else{
				btn.setText("单击");
			}
			break;
		}
	}
}
</span></span>
Button绑定监听事件后,点击Button可以出发该事件,if(v.idPressed)内部的代码可以执行,但else后面的代码是不会执行的,如果我们想捕获点击事件时按下与弹起的这些动作,在该方法内是无法完成的。那如果我们详见听点击事件的按下与弹起怎么做呢?其实很简单,一种方法是我们自定义View,在自定义的View里面重写onTouchEvent方法实现这些手势的监听,不过这种方法是很愚蠢的,我们就只是想监听一下用户的简单手势还需要重写View的方法。其实还有更加简单的方法了,呵呵。。

二、再说OnTouchListener

最简单的方法就是实现OnTouchListener接口,在该接口中实现OnTouch方法來监听用户的手势操作。这里注意一下,如果我们为某一控件设置了OnTouchListener监听,那么该View本身内部的onTouchEvent方法是否会执行就要看OnTouchListener接口中onTouch方法的返回值了,如果返回值是true,那么View本身内部的onTouchEvent方法不会被调用,如果返回的是false,那么onTouchEvent也会被正常调用。由此可见OnTouchListener监听事件的优先级要比onTouchEvent高。

下面简单看一下OnTouchListener的简单实现:

<span style="font-size:14px;"><span style="font-family:SimSun;font-size:14px;">public class MainActivity extends Activity {
	private Button but;
	private TextView text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        but = (Button) findViewById(R.id.but);
        text = (TextView) findViewById(R.id.text);
        but.setOnTouchListener(new MyTouchListener());
        but.setOnClickListener(new MyClickListener());
    }
    
    class MyTouchListener implements OnTouchListener{

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			switch (event.getAction()) {
			case KeyEvent.ACTION_DOWN:
				but.setText("已经按下按钮"); 
				break;
			case KeyEvent.ACTION_UP:
				but.setText("按
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值