自定义View:山寨PhotoView

2021年2月24日 pm11:09发布4年前 (2021)更新 91es.com站长
101 2 0

前言

众所周知,PhotoView是一个开源的图片控件。

下面是PhotoView 的介绍

PhotoView 是一款扩展自 Android ImageView ,支持通过单点 / 多点触摸来进行图片缩放的智能控件。

特性:

  1. 支持单点 / 多点触摸,即时缩放图片;

  2. 支持平滑滚动;

  3. 在滑动父控件下能够运行良好;(例如:ViewPager)

虽然Baseflow的PhotoView很好用,但部分需求还是无法满足客户的定制。

正文

山寨的PhotoView的接口跟Baseflow的PhotoView差不多,支持如:

  1. 支持单点 / 多点触摸,即时缩放图片

  2. 支持平滑滚动

  3. 在滑动父控件下能够运行良好

  4. 支持旋转[旋转后支持适配屏幕高宽]

  5. 支持设置缩放和双击tap范围等

当然,部分效果可能没有Baseflow的好,但基本功能都满足。

下载

隐藏内容!
评论可看后才能查看!

V1.6@PhotoView
  1. 新增双击否以显示区中心点还是当前点进行缩放

  2. 优化双击缩放判断

/**
 * 双击缩放以显示区域中心进行缩放
 */
private boolean mDoubleTapZoomCenter = true;

public void setDoubleTapZoomCenter(boolean doubleTapZoomCenter) {
    mDoubleTapZoomCenter = doubleTapZoomCenter;
}

使用

把PhotoView.jar放入/libs/中

implementation fileTree(include: ['*.jar'], dir: 'libs')

常用方法

//单机击监听
mPhotoView.setOnSingleTapListener(mOnSingleTapListener);
//scale变化监听
mPhotoView.setOnScaleChangedListener(mOnScaleChangeListener)
//是否支持双击
mPhotoView.setCanDoubleTap(true);
//适配可显示区域
mPhotoView.setScreenSize(MediaUtils.getScreenWidth(), MediaUtils.getScreenHeight());

一般图片全屏显示,但是也存在不全屏显示。

//旋转角度
mPhotoView.setRotation(angle)
//放大
mPhotoView.zoomIn()
//传入的值越大,放大越快
mPhotoView.setScaleFactor(1.1f)
//缩小
mPhotoView.zoomOut()
//传入的值越小,缩放越快
mPhotoView.setScaleFactor(0.9f)
//恢复默认状态
mPhotoView.resetDefault()

如果是显示区域变化了[全屏和非全屏切换],导致图片显示区域不一样时,不能调用resetDefault()会有问题

mPhotoView.resetTranslate();
loadImage();//自己实现的。

这个jar,需要传入setScreenSize(),这个别搞错了。

参考文章

  1. PhotoView

赏一杯可乐

如果觉得OK,欢迎打赏一杯可乐哈,谢谢

有bug,欢迎留言

版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

2 条评论

  • 流浪地球
    流浪地球 游客

    V1.5双击缩放图片,双击非图片所在位置(屏幕1920*720,照片图片是800*600)也会进行缩放,这样体验不太好。是否可以改为以显示中心进展缩放?

    广东省梅州市
    回复
    • 改变自己
      改变自己 管理员

      @流浪地球

      嗯嗯,新增配置条件,默认中心缩放。
      广东省深圳市
      回复

随机推荐

穆旦:冥想

为什么万物之灵的我们,遭遇还比不上一棵小树?今天你摇摇它,优越地微笑,明天就化为根下的泥土。为什么由手写出的这些字,竟比这只手更长久,健壮?它们会把腐烂的手抛开,而默默生存在一张破纸上。因此,我傲然生活了几十年,仿佛曾做着万物的导演,实则在它们长久的秩序下我只当一会小小的演员。...

为TV屏适配GridView选中并实现缩放动画

前言GridView自定义话选中框,并进行缩放处理,试用于展示图片和视频缩略图。好记性不如烂笔头正文原理在监听onKeyUp处理,此时选中的Item由Android处理完了,我们只需要刷新界面当old view跟new view不一样时才需要缩放处理。对图片缩放一定要用属性动画,对...

毕淑敏:提醒幸福

我们从小就习惯了在提醒中过日子。天气刚有一丝风吹草动,妈妈就说,别忘了多穿衣服。才相识了一个朋友,爸爸就说,小心他是个骗子。你取得了一点成功,还没容得乐出声来,所有关切着你的人一起说,别骄傲!你沉浸在欢快中的时候,自己不停地对自己说:“千万不可太高兴,苦难也许马上就要降临……”我们已经习惯了在提醒中...

毕淑敏: 流露你的真表情

学医的时候,老师出过一道题目:人和动物,在解剖上的最大区别是什么?学生们争先恐后发言,都想由自己说出那个正确的答案。这看起来并不是个很难的问题。有人说,是直立行走。先生说,不对。大猩猩也是可以直立行走的。有人说,是懂得用火。先生不悦道,我问的是生理上的区别,并不是进化工的异同。更有同学答,是...

CountDownTimer音量值淡入淡出

前言有时候播放开始播放和暂停时,需要做一个淡入淡出的效果,要不然急速暂停或播放,容易出现尖锐的杂音。正文显示对MediaPlayer播放和暂停时音量淡入和淡出代码片段。隐藏内容!付费阅读后才能查看!¥1 ¥3多个隐藏块只需支付一次付费阅读

书单-白岩松《痛并快乐着》

1”是健康,婚姻、事业、金钱就是后面一个又一个“0”;健康这个“1”在的时候,后面的“0”越多,你的人生越丰富;而前面这个健康的“1”一旦不在了,你后面的“0”再多,人生也只是一个“0”。【笔记:生命是革命的本钱】 背靠着大树,自己却并不是大树。【笔记:那就让自己成为大树吧】&nbs...