//直接复制粘贴就可以使用

public class MainActivity extends AppCompatActivity {private ImageView MyImageView;private float yd;private float xd;//定义三个状态记录按压时是单点还是多点private final int MODE_ONE = 1;private final int MODE_TOW = 2;private final int MODE_NONE = 0;//默认的状态private int currentMode = MODE_NONE;private double spa;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}Matrix m = new Matrix();Matrix mNew = new Matrix();private void initView() {MyImageView = (ImageView) findViewById(R.id.Image);MyImageView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {//选择到底是 按压。移动。 抬起,switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN:currentMode = MODE_ONE;//一个手指的时候按压下时(x,y)xd = event.getX();yd = event.getY();// 将图片的矩阵放入定义的矩阵中()m.set(MyImageView.getImageMatrix());break;case MotionEvent.ACTION_POINTER_DOWN://计算两手指间的距离(按下的时候有)spa = spacing(event);//只有两只之间的距离大于20像素的是时候算是多点的触摸if (spa > 20) {currentMode = MODE_TOW;}break;case MotionEvent.ACTION_MOVE:if (currentMode == MODE_ONE) {//老矩阵放入新的矩阵(啥意思我也不知道跟着写的)mNew.set(m);//移动后(X,Y)float xm = event.getX();float ym = event.getY();//将移动后的位置设置到另一个矩阵(方法别弄错)mNew.postTranslate(xm - xd, ym - yd);} else if (currentMode == MODE_TOW) {//移动后的距离double spa2 = spacing(event);PointF pointF = madPinte(event);//将比例设置到矩阵中float v1 = (float) (spa2 / spa);mNew.postScale(v1, v1, pointF.x, pointF.y);}break;case MotionEvent.ACTION_UP:break;}//将图片的设置成新的矩阵MyImageView.setImageMatrix(mNew);return true;}});}//将计算两个手指间的距离public double spacing(MotionEvent event) {float x = 0;float y = 0;x = event.getX(0) - event.getX(1);y = event.getY(0) - event.getY(1);return Math.sqrt(x * x + y * y);}//缩放的起点为点见得中点public PointF madPinte(MotionEvent event) {float x1 = event.getX(0);float x2 = event.getX(1);float y1 = event.getY(0);float y2 = event.getY(1);float x = (x1 + x2) / 2;float y = (y1 + y2) / 2;PointF pointF = new PointF(x, y);return pointF;}}

android多点触控,图片的拖拽与放大缩小相关推荐

  1. vue+openlayers中实现图片展示与图片的拖拽和放大缩小(一)

    前言: openlayers中渲染图片是有多种方法的, Icon ,Image 等等都可以实现将图片放到地图上面,但是操作图片的话,方法比较少了,这里是配合 ol-ext 来实现的. 相关资料: 1. ...

  2. Android多点触控详解

    本文转载自GcsSloop的 安卓自定义View进阶-多点触控详解 的文章 Android 多点触控详解,在前面的几篇文章中我们大致了解了 Android 中的事件处理流程和一些简单的处理方案,本次带 ...

  3. Android多点触控揭秘

    本文原创,转载请注明:http://blog.csdn.net/cloudzfy1/article/details/6582707 Google 暑期大学生博客分享大赛 - 2011 Android ...

  4. Android多点触控技术

    1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouc ...

  5. Android 多点触控消息捕获与处理

    1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouc ...

  6. 模拟Android多点触控

    Android多点触控 Android多点触控 多点触控实现思路 第一种adb shell input方式 第二种adb shell sendevent方式 多点触控实现思路   经过资料的查询,要在 ...

  7. android 多点触控缩放,Android多点触控(图片的缩放Demo)

    本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.需要实现OnTouchListener接口,重写其中的onTouch方法. 实现效果图: 源代码: 布局文件: ac ...

  8. Android多点触控之ZoomImageView完全解析

    ZoomImageView是一个类似photoview的图片预览控件,实现了对图片的手势放大缩小平移,以及双击放大缩小解决和viewpager滑动冲突等功能,主要是通过GestureDetector, ...

  9. Android多点触控MultiTouch浅析

    申明: 参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0226/914.html 下面实现如何通过应用层支持多点触控操作, ...

最新文章

  1. Docker配置指南系列(二):指令集(二)
  2. Flutter使用CupertinoAlertDialog 报 'alertDialogLabel' was called on null.
  3. 2019.08.17【NOIP?提高组】模拟 A 组 总结
  4. layui 单选项 点击显示与隐藏 很实用
  5. 阅读类app界面设计UI可临摹素材模板
  6. 加快github下载速度绝招
  7. windows+nginx+tomcat实现集群负载均衡(生产环境必读)
  8. 合并查找到的文件,至新的文件中
  9. 最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总
  10. 软件测试工程师自我介绍范文_软件测试自我介绍范文
  11. Arch-008ArchLinux安装steam
  12. 解析HTTP协议六种请求方法
  13. 数据,源码防泄密解决方案
  14. for 语句的基本用法
  15. GDG深圳站,我又来了~
  16. 既然不能独自养家糊口,的确就不应该去抱怨发牢骚
  17. 如何加密html文件怎么打开,文件加密巧用IE浏览器
  18. 深入Java虚拟机(六)线程同步
  19. Bearer Token的相关定义与使用方法
  20. 密码学相关基础二(非对称加密和数字签名篇)

热门文章

  1. winows10和centos 双系统 安装记录
  2. 混血网站诞生 公司相互嫁接成就新商业模式
  3. 用python编写一个点餐程序_急急急!求大神帮忙做个Python在线点餐小软件
  4. vue使用高德地图-进行显示地图和查询天气
  5. Android 贝塞尔曲线实战之网易云音乐鲸云特效,apm性能监控系统
  6. antd页面多表单校验
  7. python中异常语句_python 异常
  8. 吉他谱_C调往后余生(新手友好
  9. 前端面试题集锦——JavaScript
  10. RT-Thread 柿饼GUI