首先扯点别的:昨天约人打拳皇,又被一顿海虐,也是艰难。万水千山总是情,虐我轻点行不行?八神用的越来越水了,昨天下午饭都没有胃口了。看样是时候退出拳皇97界了。

进入正题:今天说一个GITHUB上的一个开源的项目TouchImageView,链接地址如下:TouchImageView,今天的博客就照着github上的英文给大家翻译一下(我得为自己的560的四级,460的六级找个说法啊),顺便给大家展示一下demo,让大家看的更直观一点。

  1. TouchImageView功能介绍:TouchImageView继承并涵盖了ImageView的所用功能。另外TouchImageView增加了双指缩放,拖拽,滑动,双击缩放的功能和其他动画效果。我们的目的是使TouchImageView的功能尽可能和那些展示图片的应用程序相似。
  2. 例子:请查看包括以下功能例子的应用示例应用程序

  3. 单个TouchImageView: 单个TouchImageView的基础使用,包括 OnTouchImageViewListener(触摸监听), getScrollPosition()(得到所放的中心位置), getZoomedRect()(得到缩放的矩形), isZoomed()(判断是否所放了),and getCurrentZoom()(得到当前的所放比).的使用。如果大家现在对这几个函数还没有什么概念很正常,坚持一下,继续往下看。
    3.1,先看效果,再解释
    3.2,这是主界面,点击 Single TouchImageView 进入到相应的活动

    3.3Single TouchImageView Activity


    可以进行双击缩放,双指缩放,拖拽的操作,我操做的效果如下(注意。你的操作效果跟我的不一样)
    3.4 操作效果

  4. ViewPager 的例子:多个TouchImageView放在ViewPager 里面,就像是展示图片的画廊app。
    4.1 点击主界面的ViewPager Example进入到相应的界面,效果如下,可以左右滑动测试ViewPager的效果

    4.2左右滑动改变图片

  5. 镜子效果:使用onTouchImageViewListener and setZoom()使两个TouchImageView的展示效果相同。
    5.1 点击主界面的Mirroring Example 进入相应的界面,一张图片的所有手势效果会被同样应用在另外一张图片上,你点击放大上面的一张图片,下面的图片就会跟着放大。

  6. 更换图片的例子
    6.1 点击TouchImageView更换图片,注意图片的缩放状态会被保持。就是说如果当前图片没有缩放点击更换下一张图片也不会缩放,如果当前的图片放大了,点击更换下一张图片也会被放大,看效果

  1. 更换图片缩放类型的例子:点击图片更换支持的图片的缩放效果(关于缩放效果的文章可以看看这个http://blog.csdn.net/leilifengxingmw/article/details/50787831),行看看更换缩放类型的图片效果,就看两个。

以下是关于TouchImageView的一些说明

  1. 限制:TouchImageView不支持手势旋转,另外FIT_START 和FIT_END现在还不支持。
  2. 支持最小API 8.
  3. 使用方式:把TouchImageView.java复制到你的工程里,就可以像ImageView一样使用了,例如
TouchImageView img = (TouchImageView) findViewById(R.id.img);如果你在xml文件里使用,那你必须使用完整的包名,因为TouchImageView 是一个自定义view。<com.example.touch.TouchImageView
        android:id="@+id/img”android:layout_width="match_parent"android:layout_height="match_parent" />

4.API

// 得到当前的缩放比。是和TouchImageView相关的所放比,而和原始的图片没有关系
float getCurrentZoom();// 得到最大的缩放倍数.
float getMaxZoom();// 得到最小的缩放倍数.
float getMinZoom();// 返回可缩放图片的中心点。PointF的坐标在0到1之间,焦点以整个view的左上角的百分比来表示。例如,图片的左上角是(0,0),右下角是(1,1)。
PointF getScrollPosition();// 返回代表缩放图片的矩形
RectF getZoomedRect();// 如果图片初始化是没有缩放的状态,返回false,否则返回true;
boolean isZoomed();// 重新设定缩放级别返回到初始化状态。
void resetZoom();// 设置最大的缩放级别. 默认值是: 3.
void setMaxZoom(float max);// 设置最小的缩放级别. 默认值是: 1.
void setMinZoom(float min);// 设置图片的所放焦点。焦点以整个view的左上角为基准表示为百分比的形式取值为0到1之间。
void setScrollPosition(float focusX, float focusY);// 设置特定级别的所放比。图片默认是放在整个view的中间
void setZoom(float scale);// 设置特定级别的所放比。图片的中心点就是所设置的点的位置(focusX, focusY)。focusX和focusY以view的左上角为基准表示为取值0到1的百分比。例如,图片的左上角表示为(0,0),图片的右下角表示为(1,1)。
三个参数分别表示;缩放级别,横纵坐标。
void setZoom(float scale, float focusX, float focusY);// 设置特定级别的所放比。图片的中心点就是所设置的点的位置(focusX, focusY)。focusX和focusY以view的左上角为基准表示为取值0到1的百分比。例如,图片的左上角表示为(0,0),图片的右下角表示为(1,1)。
四个参数分别表示;缩放级别,横纵坐标,缩放类型。
void setZoom(float scale, float focusX, float focusY, ScaleType scaleType);// 设置和别的TouchImageView一样的缩放比。包括缩放级别,缩放位置和缩放的类型。
void setZoom(TouchImageView img);
//最后在列一下TouchImageView所支持的缩放类型的取值:
centerCrop,centerInside,fitXY,fitCenter,center。

Using TouchImageView with Glide library

在TouchImageView 结合Glide使用的时候遇到了这样一种情况:使用ViewPager+PagerAdapter 实现图片浏览的时候,在加载网络图片的时候,第一张图片不能正常加载。参考了github上的issure Using TouchImageView with Glide library,解决方法代码如下。

PagerAdapter的方法

 @Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = LayoutInflater.from(context).inflate(R.layout.item_album_img, container, false);final TouchImageView imageView = view.findViewById(R.id.img_main);imageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (albumClickListener != null) {albumClickListener.onAlbumClick();}}});Glide.with(context).asBitmap().load(list.get(position)).into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {imageView.setImageBitmap(resource);//调用这个方法即可正常显示,具体原因并不了解imageView.setZoom(1);}});container.addView(view);return view;}

结尾:

实话是说。翻译还是借助了有道词典,学了十几年的英语,都忘的差不多了,就会说一个Hello,Hi了,艰难。写的不好,大家多多包涵。
结尾:我们专业的学安卓的有在上海的。北京的。杭州的。工资有15000的,10000的。但是我们专业学安卓的还有在青岛即墨的。工资2000,就是我,也是艰难啊。还有2,3个月就毕业了,该考虑一下到底何去何从了。

TouchImageView 实现图片的缩放,双击放大缩小,多点触控的功能相关推荐

  1. Android图片查看支持双击放大缩小、多点触摸(多机型测试,长期使用很稳定)

    该模块主要实现了放大和原大两个级别的缩放. 另外功能更加强大的一个类见本人另一篇博客 http://blog.csdn.net/gfg156196/article/details/49741233#r ...

  2. 图片的缩放(放大缩小)

    package com.school.util;import java.awt.Graphics; import java.awt.Image; import java.awt.image.Buffe ...

  3. 网页端实现大尺寸图片的查看、放大缩小、标记标尺等功能

    前段时间接到任务,主要实现网页端查看病理图片(图片很大),并能够在图片上进行标注和刻度显示,对于其他各种辅助功能,参考成熟的网站.网站地址:http://image.kfbio.cn/HTML5/Se ...

  4. 用开源项目PhotoView实现图片的双指缩放和双击放大缩小

    项目地址:https://github.com/chrisbanes/PhotoView 用开源项目有个好处,一是实现简单,二是bug少.那么我们就来说下这个项目能够实现的效果: 1.单个图片的双指缩 ...

  5. Android 展示一个图片,可以双击放大/缩小(放大后可以移动)

    布局***.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  6. Android imageview 双击放大缩小手势放大缩小自由滑动

    public class ZoomImageView extends ImageView implements ViewTreeObserver.OnGlobalLayoutListener {pri ...

  7. 最新版CameraX入门(拍照、存储展示、切换前后摄像头、手电筒、闪光灯、手势伸缩、双击放大缩小)

    基于官网demo,增加了对焦.手势缩放.手电.闪光灯等操作 Camera的预备知识 熟悉的大佬可以跳过 Surface.SurfaceView.SurfaceHolder这三个是啥 Surface是什 ...

  8. v-viewer预览图的使用(图片预览旋转/放大缩小/上下切换等)

    前言: 之前项目需求,需要找一个预览图的组件,最开始,找了vue-preview组件.因为vue-preview是直接引入 < vue-preview>这个标签,无法看到对组件里面的图片i ...

  9. Iwfu-安卓Gesture手势(2)-实现多点触控控制图片的放大缩小。

    上一篇介绍安卓Gesture手势初步使用,这一篇用Gesture来实现多点触控达到控制图片放大缩小. 上文中写道,进行手势监听的Activity要实现对应的OnGestureListener接口,重写 ...

最新文章

  1. 16:00面试,16:08就出来了 ,问的实在是太...
  2. JavaScript权威Douglas Crockford:代码阅读和每个人都该学的编程
  3. python subprocess.Popen 实时输出 stdout
  4. SQL Server 2016 列存储技术做实时分析
  5. Linux 进程管理数据结构
  6. java中的10的算法,Java中10个常用的排序算法
  7. 特斯拉Model 3产能跟不上,是因为用了太多机器人
  8. 物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
  9. 远程过程调用失败 异常来自 HRESULT:0x800706BE
  10. 使用mongoTemplate进行Aggregation聚合查询
  11. 9.3.2另一种计算机器2
  12. VisionPro初始化 - C#
  13. DFS(深度优先搜索算法)入门保姆级超详解
  14. webpack4踩坑——图片打包
  15. Objective-C中的instancetype和id区别
  16. 二叉树的先序创建、前中后序遍历(递归)C++
  17. 单元测试之 Xunit
  18. UE的rtsp插件崩溃过程排查
  19. 【Python实战】自动邮件天气提醒
  20. 中文繁体字与简体字转换

热门文章

  1. 2019中国边缘计算企业20强
  2. 元宇宙产业委李安民:云网融合是算力基础设施的核心特征
  3. 万能码:大数据时代的新星(安全扫码专业委员会)
  4. DDNS动态域名解析功能与实现设置
  5. linux开发工程师前景_选择成为软件开发工程师的5个原因
  6. 战狼2百度云资源Mp4观看【Mp4/2.5G国语BD】战狼2云盘链接迅雷BT下载edk
  7. 机器人把大龙拉出来_lol:用谁抢到大龙最刺激?机器人勉强,用它抢到过的都是天才...
  8. java 实现邮件的发送, 抄送及多附件
  9. JAVA计算机毕业设计某服装店购物网站(附源码、数据库)
  10. python处理office文件的第三方库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...