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

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. JavaWeb 使用nginx负载均衡
  2. target与currentTarget的区别?
  3. Bootstrap部分---环境安装及一个可视化的布局;
  4. Linux IPC实践(8) --共享内存/内存映射
  5. 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )
  6. 爬过这 6 个坡,你就能对 Linux 操作系统了如指掌
  7. 【GAN优化】详解SNGAN(频谱归一化GAN)
  8. android 广告弹出层,安卓广告活动弹窗控件 android-adDialog
  9. python语言原理_梯度下降算法的原理用Python语言实现,易于理解,python,更
  10. Linux虚拟内存管理 | 虚拟地址与物理地址映射、段错误SIGSEGV
  11. windows下MySQL 5.7+ 解压缩版安装配置方法
  12. 十(7)rsync:介绍、常用选项、通过ssh同步、通过服务同步、linux系统日志、screen...
  13. java自动化测试成长日记-之CVS客户端和服务端安装和部署1:CVS服务端的配置和基本使用...
  14. 利用反射和元数据编写的通用更新和通用查询
  15. 【Java进阶】Java并发包提供了哪些并发工具类?
  16. Vmware虚拟机win10详细安装之典型安装
  17. 从零开始搭建一个K8S的环境
  18. CF891D Sloth
  19. 极致小巧的画图工具,只有548K,有20多种工具,图层功能 类PS
  20. “匠心之韵,数据之美”之数字营销专访【友盟+】一周年:不忘初心,从整合到融合,从合并到合力...

热门文章

  1. lemonldap java_Java LDAP操作
  2. 【转载】浅的不能再浅的浅谈百利金单双胡及全字尖
  3. 计算机系统(一)期末复(yu)习(3):LC-3汇编,输入与输出
  4. 新一代开源免费的轻量级 SSH 终端,非常炫酷好用
  5. [ kvm ] 学习笔记 1:Linux 操作系统及虚拟化
  6. 2019年面试大概问题
  7. 中文分词后去除停用词
  8. 污水处理设备:生物技术如何处理畜禽养殖污水?
  9. Working With JSON
  10. 手机号 MD5加密解密工具类