600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > TouchImageView 实现图片的缩放 双击放大缩小 多点触控的功能

TouchImageView 实现图片的缩放 双击放大缩小 多点触控的功能

时间:2021-10-04 23:48:24

相关推荐

TouchImageView 实现图片的缩放 双击放大缩小 多点触控的功能

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

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

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

例子:请查看包括以下功能例子的应用示例应用程序

单个TouchImageView: 单个TouchImageView的基础使用,包括 OnTouchImageViewListener(触摸监听), getScrollPosition()(得到所放的中心位置), getZoomedRect()(得到缩放的矩形), isZoomed()(判断是否所放了),and getCurrentZoom()(得到当前的所放比).的使用。如果大家现在对这几个函数还没有什么概念很正常,坚持一下,继续往下看。

3.1,先看效果,再解释

3.2,这是主界面,点击 Single TouchImageView 进入到相应的活动

3.3Single TouchImageView Activity

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

3.4 操作效果

ViewPager 的例子:多个TouchImageView放在ViewPager 里面,就像是展示图片的画廊app。

4.1 点击主界面的ViewPager Example进入到相应的界面,效果如下,可以左右滑动测试ViewPager的效果

4.2左右滑动改变图片

镜子效果:使用onTouchImageViewListener and setZoom()使两个TouchImageView的展示效果相同。

5.1 点击主界面的Mirroring Example 进入相应的界面,一张图片的所有手势效果会被同样应用在另外一张图片上,你点击放大上面的一张图片,下面的图片就会跟着放大。

更换图片的例子

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

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

以下是关于TouchImageView的一些说明

限制:TouchImageView不支持手势旋转,另外FIT_START 和FIT_END现在还不支持。支持最小API 8.使用方式:把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个月就毕业了,该考虑一下到底何去何从了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。