Android应用中实现手势控制图片缩放的完全攻略剖析.docxVIP

Android应用中实现手势控制图片缩放的完全攻略剖析.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 应用中实现手势控制图片缩放的完全攻略 这篇文章主要介绍了 Android 应用中实现手势控制图片缩放的完全攻略 ,采用了 Matrix 矩阵 的方法 ,实例讲解了包括触摸点设置与各种冲突的处理等方面 ,相当全面 ,需要的朋友可以参 考下 一、概述 现在 app 中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点 击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位 ~~~ 我相信看图的整个步骤,大家或者说用户应该不希望被打断把 ~~~“我擦,竟然不能放大, 什么玩意,卸了 ~~“ , 我擦,竟然不能移动,留有何用,卸了 ~~。 哈 ~所以对于图片的预览,一来,我们要让用户爽;二来,我们作为开发者,也得知道如何实现 ~~~ 想要做到图片支持多点触控,自由的进行缩放、平移,需要了解几个知识点: Matrix , GestureDetector , ScaleGestureDetector 以及事件分发机制, ps:不会咋办,不会你懂的。 二、 Matrix 矩阵,看深入了都是 3 维矩阵的乘啊什么的,怪麻烦的 ~~ 其实这么了解下就行了: Matrix 数据结构: 3 维矩阵; 内部存储: new Float[9] ; 内部就是个一维数组,内部 9 个元素;可以进行 setValues(float[] values)进行初始化 每个元素代表的意思: { MSCALE_X, MSKEW_X, MTRANS_X, MSKEW_Y, MSCALE_Y, MTRANS_Y, MPERSP_0, MPERSP_1, MPERSP_2}; 字面上,应该能看出来哪个代表 x 方向缩放,哪个代表垂直方向的偏移量吧 ~~有不认识的 3 个,没事,请无视。 操作 比如你想要设置 matrix 的偏移量为 200, 100 你可以这么写: Matrix transMatrix = new Matrix(); float[] values = new float[] { 1.0, 0, 200, 0, 1.0, 100, 0, 0, 1.0 }; transMatrix.setValues(values); 如果需要在旋转 30 度,放大两倍 ~~ 这么写其实怪麻烦的 ~~ Matrix 提供了一些常用的 API:例如我们可以这么写: Matrix transMatrix = new Matrix(); transMatrix.postTranslate(200, 100); 如何获取值: 当然了,我们对一个 Matrix  进行了各种操作,一会  postScale,一会  postTranslate;那么现 在如何获得当前的缩放比例: 前面说 setValues 可以初始化,那么 getValues 就能拿到当前矩阵的值,拿到的是个一维数组, 9 个元素;再通过下标取对应值就可以。 比如我想知道现在  x 方向缩放比例: public final float getScale() { return matrixValues[Matrix.MSCALE_X];  scaleMValues(matrixValues); } 好了,知道这些就够了  ~~ GestureDetector : 嗯,自己看 API,能够捕捉到长按、双击什么的;用法会在例子中 ScaleGestureDetector: 嗯,有点像继承来的,其实不是的,独立的一个类  ~用于检测缩放的手势  ~~~用法会在例子 中 三、实战 为了大家更好的理解,我会独立出每个功能,最后再整合到一起 ~~也方面大家对每个 API 的使用的学习。 1、自由的缩放 需求:当图片加载时,将图片在屏幕中居中;图片宽或高大于屏幕的,缩小至屏幕大小;自由对图片进行方法或缩小; 代码不是很长,直接贴代码了: package com.zhy.view; import android.content.Context; import android.graphics.Matrix; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.view.ScaleGestureDOnScaleGestureListener; import android.view.View; import android.view.

文档评论(0)

187****5086 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档