全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详谈OnTouchListener与OnGestureListener的区别

Android事件处理机制是基于Listener实现的,比如触摸屏相关的事件,是通过OnTouchListener实现的;而手势是通过OnGestureListener实现的,那么这两者有什么关联呢?

OnTouchListener

OnTouchListener接口中包含一个onTouch()方法,直接看一个例子:

public class MainActivity extends Activity implements OnTouchListener {
	public void onCreate(Bundle outState) {
  	super.onCreate(outState);
  	setContentView(R.layout.main);
  	TextView tv = (TextView) findViewById(R.id.tv);
  	tv.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent event) {
  	Toast.makeText(this, "Touch Touch", Toast.LENGTH_SHORT).show();
		return false ; 
  }
}

我们可以通过MotionEvent的getAction()方法来获取Touch事件的类型,包括 ACTION_DOWN(按下触摸屏), ACTION_MOVE(按下触摸屏后移动受力点), ACTION_UP(松开触摸屏)和ACTION_CANCEL(不会由用户直接触发)。借助对于用户不同操作的判断,结合getRawX()、 getRawY()、getX()和getY()等方法来获取坐标后,我们可以实现诸如拖动某一个按钮,拖动滚动条等功能。

可以看到OnTouchListener只能监听到三种触摸事件,即按下,移动,松开,如果想要监听到双击、滑动、长按等复杂的手势操作,这个时候就必须得用到OnGestureListener了。

OnGestureListener

接着上面的例子,这次加入手势监听:

public class MainActivity extends Activity implements OnTouchListener, OnGestureListener {
	private GestureDetector mGestureDetector; 

	public void onCreate(Bundle outState) {
  	super.onCreate(outState);
  	setContentView(R.layout.main);

  	mGestureDetector = new GestureDetector(this);
  	TextView tv = (TextView) findViewById(R.id.tv);
  	tv.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent event) {
  	return mGestureDetector.onTouchEvent(event);
  }

  // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发 
  public boolean onDown(MotionEvent arg0) {
		Log.i("MyGesture", "onDown");
		Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();   
		return true;
	}

	// 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发, 注意和onDown()的区别,强调的是没有松开或者拖动的状态
	public void onShowPress(MotionEvent e) {
		Log.i("MyGesture", "onShowPress");      
		Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();
	}

	// 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发

	public  boolean onSingleTapUp(MotionEvent e) {
		Log.i("MyGesture", "onSingleTapUp");
		Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();
		return true;
	}

	// 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发    

	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  
		Log.i("MyGesture", "onFling");
		Toast.makeText(this, "onFling", Toast.LENGTH_LONG).show();   
		return true;
	}

 	// 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发

	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {      
		Log.i("MyGesture", "onScroll");
 		Toast.makeText(this, "onScroll", Toast.LENGTH_LONG).show();
		return true;
 	}

 	// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发

	public  void onLongPress(MotionEvent e) {
		Log.i("MyGesture", "onLongPress");
		Toast.makeText(this, "onLongPress", Toast.LENGTH_LONG).show();
 	}
}

以上这篇详谈OnTouchListener与OnGestureListener的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# OnTouchListener  # OnGestureListener  # 拖动  # 按下  # 多个  # 轻触  # 给大家  # 方法来  # 的是  # 有什么  # 我们可以  # 希望能  # 可以看到  # 三种  # 这个时候  # 双击  # 可以实现  # 这篇  # 等功能  # 小编  # 大家多多  # 这两者 


相关文章: 小型网站建站如何选择虚拟主机?  如何在橙子建站上传落地页?操作指南详解  如何高效利用亚马逊云主机搭建企业网站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何快速搭建响应式可视化网站?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何高效配置IIS服务器搭建网站?  如何基于云服务器快速搭建网站及云盘系统?  如何获取上海专业网站定制建站电话?  长沙企业网站制作哪家好,长沙水业集团官方网站?  内部网站制作流程,如何建立公司内部网站?  建站主机默认首页配置指南:核心功能与访问路径优化  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星与建站宝盒如何选择最佳方案?  南平网站制作公司,2025年南平市事业单位报名时间?  如何在宝塔面板中创建新站点?  建站之星官网登录失败?如何快速解决?  建站之星如何快速生成多端适配网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  家庭建站与云服务器建站,如何选择更优?  小程序网站制作需要准备什么资料,如何制作小程序?  如何通过cPanel快速搭建网站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何配置IIS站点权限与局域网访问?  如何快速搭建二级域名独立网站?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何将凡科建站内容保存为本地文件?  高端建站如何打造兼具美学与转化的品牌官网?  jQuery 常见小例汇总  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星好吗?新手能否轻松上手建站?  如何快速配置高效服务器建站软件?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  北京网站制作的公司有哪些,北京白云观官方网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何在建站之星绑定自定义域名?  ,怎么用自己头像做动态表情包?  设计网站制作公司有哪些,制作网页教程?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  重庆市网站制作公司,重庆招聘网站哪个好?  建站之星安装后界面空白如何解决?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  电商网站制作公司有哪些,1688网是什么意思?  制作电商网页,电商供应链怎么做? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。