android多点触控,图片的拖拽与放大缩小
//直接复制粘贴就可以使用
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多点触控,图片的拖拽与放大缩小相关推荐
- vue+openlayers中实现图片展示与图片的拖拽和放大缩小(一)
前言: openlayers中渲染图片是有多种方法的, Icon ,Image 等等都可以实现将图片放到地图上面,但是操作图片的话,方法比较少了,这里是配合 ol-ext 来实现的. 相关资料: 1. ...
- Android多点触控详解
本文转载自GcsSloop的 安卓自定义View进阶-多点触控详解 的文章 Android 多点触控详解,在前面的几篇文章中我们大致了解了 Android 中的事件处理流程和一些简单的处理方案,本次带 ...
- Android多点触控揭秘
本文原创,转载请注明:http://blog.csdn.net/cloudzfy1/article/details/6582707 Google 暑期大学生博客分享大赛 - 2011 Android ...
- Android多点触控技术
1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouc ...
- Android 多点触控消息捕获与处理
1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouc ...
- 模拟Android多点触控
Android多点触控 Android多点触控 多点触控实现思路 第一种adb shell input方式 第二种adb shell sendevent方式 多点触控实现思路 经过资料的查询,要在 ...
- android 多点触控缩放,Android多点触控(图片的缩放Demo)
本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.需要实现OnTouchListener接口,重写其中的onTouch方法. 实现效果图: 源代码: 布局文件: ac ...
- Android多点触控之ZoomImageView完全解析
ZoomImageView是一个类似photoview的图片预览控件,实现了对图片的手势放大缩小平移,以及双击放大缩小解决和viewpager滑动冲突等功能,主要是通过GestureDetector, ...
- Android多点触控MultiTouch浅析
申明: 参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0226/914.html 下面实现如何通过应用层支持多点触控操作, ...
最新文章
- Docker配置指南系列(二):指令集(二)
- Flutter使用CupertinoAlertDialog 报 'alertDialogLabel' was called on null.
- 2019.08.17【NOIP?提高组】模拟 A 组 总结
- layui 单选项 点击显示与隐藏 很实用
- 阅读类app界面设计UI可临摹素材模板
- 加快github下载速度绝招
- windows+nginx+tomcat实现集群负载均衡(生产环境必读)
- 合并查找到的文件,至新的文件中
- 最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总
- 软件测试工程师自我介绍范文_软件测试自我介绍范文
- Arch-008ArchLinux安装steam
- 解析HTTP协议六种请求方法
- 数据,源码防泄密解决方案
- for 语句的基本用法
- GDG深圳站,我又来了~
- 既然不能独自养家糊口,的确就不应该去抱怨发牢骚
- 如何加密html文件怎么打开,文件加密巧用IE浏览器
- 深入Java虚拟机(六)线程同步
- Bearer Token的相关定义与使用方法
- 密码学相关基础二(非对称加密和数字签名篇)