Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDetector.OnGestureListener实例,该实例就是一个监听器,负责对用户的手势行为提供响应。

GestureDetector.OnGestureListener里包含的事件处理方法如下:

  • boolen onDown(MotionEvent e): 当触碰事件按下时触发该方法。

  • boolean onFling(MotionEvent e, MotionEvent e2, float velocityX, float velocityY): 当用户在屏幕上长按时触发该方法。其中velocityX、velocityY代表“拖过”动作在横向和纵向上的速度。

  • abstract void onLongPress(MotionEvent e): 当用户在屏幕上长按时触发该方法。

  • boolean onScroll(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY): 当用户在屏幕上滚动时触发该方法。

  • void onShowPress(MotionEvent e): 当用户在触摸屏上按下,而且还未移动和松开时触发该方法。

  • boolean onSingleTapUp(MotionEvent e): 用户在触摸屏上的轻击事件将会触发该方法。

下面的例子测试了用户不同的手势操作触发的手势动作:

import android.app.Activity;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.widget.Toast;

public class GestureTest extends Activity implements GestureDetector.OnGestureListener

{

//定义手势检测器实例

GestureDetector detector;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//创建手势检测器

detector = new GestureDetector(this);

}

//将该Activity上的触碰事件交给GestureDetector处理

@Override

public boolean onTouchEvent(MotionEvent e){

return detector.onTouchEvent(e);

}

@Override

public boolean onDown(MotionEvent e){

Toast.makeText(this, “onDown”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){

Toast.makeText(this, “onFling”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public void onLongPress(MotionEvent e){

Toast.makeText(this, “onLongPress”, Toast.LENGTH_SHORT).show();

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY){

Toast.makeText(this, “onScroll”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public void onShowPress(MotionEvent e){

Toast.makeText(this, “onShowPress”, Toast.LENGTH_SHORT).show();

}

@Override

public boolean onSingleTapUp(MotionEvent e){

Toast.makeText(this, “onSingleTapUp”, Toast.LENGTH_SHORT).show();

return false;

}

}

上述代码创建了一个GestureDetector对象,并实现了GestueDetector.OnGestureListener的监听器实例,然后为Activity的Touchevent事件绑定监听器,在事件处理中指定把Activity上的TouchEvent事件交给GestueDetector处理。GestueDetector就会检测是否触发了特定的手势动作。

运行上面的代码,当我们随意在屏幕上触碰时,程序将会检测到我们执行了什么手势。

效果:

下面看一个通过手势缩放图片的例子:

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.widget.ImageView;

import android.widget.Toast;

public class GestureTest extends Activity implements GestureDetector.OnGestureListener

{

//定义手势检测器实例

GestureDetector detector;

ImageView imageView;

//初始化的图片资源

Bitmap bitmap;

//定义图片的宽高

int width, height;

//记录当前的缩放比

float currentScale = 1;

//控制图片缩放的Matrix对象

Matrix matrix;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

最后

**针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能

优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!**

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。


以分享动态给身边好友一起学习!**

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

[外链图片转存中…(img-J9KrmyjS-1647702875925)]

[外链图片转存中…(img-DL1iYn3g-1647702875928)]

Android之GestureDetector-简单手势操作及通过手势缩放图片,我离职后面试收割小米等大厂offer相关推荐

  1. android自学难吗!我离职后面试收割小米等大厂offer,详细的Android学习指南

    最近很多人说,Android越来越不好找工作了,学习NDK开发会不会好点,今天就聊聊这个问题.是否应该选择学NDK? 1.哪些场景下要用到NDK开发? 跨平台的库,如FFmpeg, skip,weex ...

  2. Android之GestureDetector-简单手势操作及通过手势缩放图片

     Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDet ...

  3. android ormlite 查询,Android—Ormlite框架简单的操作数据库

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

  4. android适配器,我三年开发经验,从字节跳动抖音离职后,吐血整理

    前言 前不久写过一篇博客,里面介绍了一位朋友由二本渣渣毕业在外包公司工作两年多后,跳槽逆袭成功,现在进入了OPPO公司的故事. 后面很多朋友私信我,表示想要这位朋友的面经. 其实我觉得,大家对面经完全 ...

  5. android自学知乎!百度、阿里、滴滴、新浪的面试心经总结,大厂面试题汇总

    开头 经常会有人问:"现在学习Android开发还有前景?"我的看法是现在只是市场趋于平稳了,对开发人员的要求越来越好了,这并不代表没有前景了. 移动开发不等于App开发,所有新的 ...

  6. C#,一种简单的方式实现滚动鼠标缩放图片,平移

    1.缩放 private void ImageShow_Load(object sender, EventArgs e){pictureBox1.Load(@"E:\SQ1.jpg" ...

  7. 自定义Imageview控件实现多种手势操作 (拖动、水平缩放、竖直缩放、等比例缩放、双击、长按)

    项目中需要使用自定义控件的多种手势操作,之前在网上查阅资料的时候发现能找到的一般是只实现了其中的几种,这次就把我做的控件分享一下,人人为我,我为人人嘛,哈哈! 这个自定义控件实现的主要功能是控件的拖动 ...

  8. 分享1个模拟各种复杂的滑动或手势操作的方法,赶紧学起来~

    版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 此文章来源于项目官方公众号:"AirtestProject" 前言 滑动操作千千万,你是否会遇到过使用 swip ...

  9. android 手势缩放图片框架

    //图片手势放大 第一个ImageViewTouch 只支持图片放大和缩小位置不会变动 compile 'it.sephiroth.android.library.imagezoom:imagezoo ...

最新文章

  1. php No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax跨域访问解决方法
  2. python dns server开源列表 TODO
  3. 设计模式之Builder(建造者)(转)
  4. 初识 scrapy 框架 - 安装
  5. 使用javamail发信过程中的一些问题及解决方法
  6. 关于锁表查询的部分SQL
  7. Android JNI
  8. web安全day25:linux的NAT网络配置和yum的配置和使用
  9. 产品研发流程与周期(非原创)
  10. .NET基础示例系列之十五:操作Excel
  11. miui tv android,MIUI for TV 3.0上线 应用远程安装 手机反控电视
  12. 记录微信会员卡开卡跳过领取到卡包直接到激活页面
  13. android 监听飞行模式,如何在Android上检测飞行模式?
  14. Android支付宝刷步数,蚂蚁森林刷步数小技巧(一键修改支付宝步数)
  15. 全链路监控及普罗米修斯学习
  16. 天牛群,天牛须结合粒子群算法BAS-PSO。研究生阶段毕生所 学,低价出售!可定制pid参数整定。
  17. 每节课都是一个项目 手把手用STM32打造联网气象站-9-用LCD显示中文英文和图片
  18. 解决Flex项目下bin-debug文件在其他电脑打开不显示的问题
  19. 手机计算机桌面图标恢复,三种方法快速找回桌面图标(附电脑文件恢复教程)...
  20. AVS3码流结构解析

热门文章

  1. 【php】PHP单例模式
  2. Vue响应式实现原理
  3. CNN网络的搭建(Lenet5与ResNet18)
  4. 1989-2015各国平均关税水平
  5. 黑群晖NAS (ARPL引导)安装教程
  6. 数据库中对存储过程的理解
  7. el-backtop关于 target is not existed: .page-component__scroll .el-scrollbar__wrap的问题
  8. 开源的.Net IDE :SharpDevelop
  9. 积极思考综合调查表--调查自己的积极思考品质
  10. 重新注册组件修复IE