文章类型: ANDROID
关键词: Android,onTouchListener,触屏接口总结
内容摘要: Android onTouchListener 触屏接口总结

Android onTouchListener 触屏接口总结

2017/6/1 16:48:29    来源:apple    阅读:

Android中一个控件可以同时注册多种事件,像一个Button,可以同时监听触摸事件、单击事件、长按事件;在不同的情况下可以执行不同的操作,那么是如何做到的呢?

首先,onTouch事件是最先发生的,该事件的返回值也决定了长按事件和单击事件能否发生。触屏操作由一些基本的事件组成:如down事件,up事件,move事件,scroll事件等等,经测试,各事件执行顺序结果如下:

        button.setOnClickListener(new View.OnClickListener()
	{

	    @Override
	    public void onClick(View v)
	    {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "单击事件", Toast.LENGTH_LONG).show();
	    }
	});
	button.setOnTouchListener(new View.OnTouchListener()
	{

	    @Override
	    public boolean onTouch(View v, MotionEvent event)
	    {
		// TODO Auto-generated method stub
		// Toast.makeText(MainActivity.this, "触摸事件", Toast.LENGTH_LONG).show();
		switch (event.getAction())
		{
		    case MotionEvent.ACTION_DOWN:
			Toast.makeText(MainActivity.this, "down事件", Toast.LENGTH_SHORT).show();
			break;
		    case MotionEvent.ACTION_UP:
			Toast.makeText(MainActivity.this, "up事件", Toast.LENGTH_SHORT).show();
			break;
		    default:
			break;
		}
		return true;
	    }
	});
	button.setOnLongClickListener(new View.OnLongClickListener()
	{

	    @Override
	    public boolean onLongClick(View v)
	    {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "长点击事件", Toast.LENGTH_LONG).show();
		return false;
	    }
	});
    }


1.默认情况下,onTouch和onLongClick都返回false;false的含义即为不消费该事件,事件可以传下去。可能发生的操作:

(1)down--up--longClick--click; 触摸事件--长按事件--单击事件

(2)down--up--click; 触摸事件--单击事件

造成这两种情况的原因是手指按下去停留时间的长短,如果长按了,就走(1);如果短暂点击,就走(2).

2.onTouch事件返回true;true即为消费该事件,事件不在传递下去,不会发生单击或长按事件。发生的操作:

down--up

3.onTouch返回false,onLongClick返回true。发生的操作:

(1)down--up--longClick 触摸事件--长按事件

(2)down--up--click 触摸事件--单击事件

通过1与3比较,发现如果不手动改变onLongClick事件返回值,发生长按事件时,一定会导致单击事件发生。

当然这只是从表面理解onTouch事件,如果想更深入学习,请查看下面文章:点击打开链接


↑ 上一篇文章:Android Toast 显示时间问题的探讨 关键词:Android,Toast,显示时间问题的探讨 发布日期:2017/5/31 18:22:31
↓ 下一篇文章:JAVA 方法或者类的注释快捷键 关键词:JAVA,方法或者类的注释快捷键 发布日期:2017/6/1 16:51:39
相关文章:
带你飞之Android多线程与异步任务(第一篇) 关键词:Android,多线程,异步任务,异常操作 发布日期:2017-09-12 17:22
android开发中出现了高德地图签名提示“INVALID_USER_SCODE”处理 关键词:android,高德地图,签名,提示,INVALID_USER_SCODE,处理,sdk,sha.. 发布日期:2017-12-21 11:13
带你飞之Android多线程与异步任务(第二篇) 关键词:Android,多线程,异步任务,第二篇,,android,thread,Async,异步 发布日期:2017-09-12 17:32
相关目录:.NETANDROIDJAVA软件开发
我要评论
正在加载评论信息......