PhotoView的方法分享(代码设置缩放度,息屏之后缩放度不重置)

       最近两天看了研究了一下大热的照片缩放控件开源框架的源码。根据项目上面的要求找到了几个方法,看着网上好像没有人分享这一块,索性把这几个方法贴出了分享一下。

       本文有些地方可能会有问题,请大佬指正。

--------------------------------------------------------------------------------------------------------

github: https://github.com/chrisbanes/PhotoView

环境:AS 3.2.1,Win7,photoview 1.3.1

--------------------------------------------------------------------------------------------------------

代码设置缩放度

      photoView 在加载完一个图片之后,默认是没有缩放的。如果我们想加载完图片之后,进行自定义的缩放的等级的话,则需要进行进一步的处理。

      进入源码,我们可以看到在photoview中,没有直接处理点击事件的方法,都是通过一个叫 PhotoViewAttacher 类,来进行点击事件的处理的(在写这篇博客的时候,突然发现这种模式不是跟 Andorid中的 WindowManagerImpl 与 WindowManagerGlobal 类似。。。),终于在PhotoView中找到了一系列的设置缩放的方法

还是通过这个PhotoViewAttacher 来控制缩放的,我们进入到这个方法里面去看一下

瞅了一眼,应该就是这个方法,获取到了对应的imageview,然后进行缩放。

那我们试一下这个方法:

   photoview.setScale(2.25f, width / 2,height / 2,  true);

说明一下几个参数,第一个参数放大级别(float)

第二个参数和第三个参数则是有点迷,看上去感觉像是放大的中心点,但是我试了一下好像并不太像,这个有待再挖一下(由于需求所要求的放大位置不是这么的高,所以我没有深入下去)

第四个参数是是否启动动画,如果是true,就会启动一个runable,进行放大图片。这里我也试了一下false,发现没有图片还是保持原样,没有进行缩放,我估计可能是需要进行一次界面或者view的刷新才行

另外:这个方法还需要在图片加载完成之后,在进行调用。不然可能会无效。

--------------------------------------------------------------------------------------------------------

息屏之后缩放度不重置

在使用photoView的过程中,发现在息屏或者父布局发生了重绘事件之后,photoview就会重新恢复成未进行缩放的样子。

这时候我就想能不能让他不恢复呢,让我继续一头闷进photoview的源码。

最后发现在这种情况下,photoview都会调用到一个方法

mAttacher.update() 这个方法除了在这里用到,其他都是在设置图片源那里用到。

那我们改一下这个方法不就行了

重写一个类继承photoview,重写这个方法,让他只在第一次调用的时候启用

再把控件替换一下,运行一下,息屏一下,再唤醒,缩放不变,好像完成我们的需求了。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值