- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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.
您可能关注的文档
- 231520北交《交通运输市场管理》在线作业一15秋答案全解.docx
- 2平面划线全解.docx
- 2燃煤突发事件应急预案.docx
- 34冬雨期施工方案......docx
- 3600mw盘车说明详解.docx
- 3万头生态环保新型猪场建设项目可研报告.docx
- 3万平米地源与水冷螺杆对比方案.docx
- 3章.载体总结剖析.docx
- 431——商业银行经营管理剖析.docx
- 5.2螺纹轴配合件加工全解.docx
- 2025年人工智能教育平台投资可行性研究报告.docx
- 2025年智能语音语义理解在智能教育辅助工具中的应用报告.docx
- 数字遗产保护法-洞察与解读.docx
- 未来五到十年设施农业智能化市场前景与发展趋势研究报告.docx
- 2025年新能源汽车充电服务模式创新与用户需求满足报告.docx
- 低空经济2025年航空信息安全市场分析报告.docx
- 2025年有机农产品市场潜力分析及未来五到十年行业增长趋势报告.docx
- 2025年全球粮食安全与粮食浪费问题研究报告.docx
- 餐饮行业未来五到十年数字化餐饮业智能化餐饮业竞争态势研究报告.docx
- 2025年装配式建筑在建筑产业化进程中的应用与发展前景报告.docx
最近下载
- 酒店礼宾英语.docx
- 红色资源讲解员服务规范 DB32 T 5069-2025.pdf VIP
- 第9课+水墨井冈+++课件+2025-2026学年赣美版(2024)初中美术八年级上册.pptx VIP
- 《习作:“漫画”老师》优质教案(第一课时).docx VIP
- 第7课+中国传统色++课件+2025-2026学年赣美版(2024)初中美术八年级上册.pptx VIP
- 查理和巧克力工厂.ppt VIP
- 第7课 中国传统色 课件 2025赣美版美术八年级上册.pptx
- 医美整形面部美学设计及微整产品知识课件.ppt
- 第一财经商业数据中心&自然堂:2024中国女性肌肤衰老趋势变化报告.pdf VIP
- 酒店礼宾部英语新版.pdf VIP
文档评论(0)