android – 用于PhotoView的缩放监听器

android – 用于PhotoView的缩放监听器,第1张

概述我正在使用Chris Bane的 PhotoView在ViewPager中显示ImageViews.我想在用户放大图像时禁用ViewPager的滚动.我已经找到了这个 Hacky ViewPager,可以通过调用toggleLock()来启用/禁用滚动. public class HackyViewPager extends ViewPager { private boolean isL 我正在使用Chris Bane的 PhotoView在VIEwPager中显示ImageVIEws.我想在用户放大图像时禁用VIEwPager的滚动.我已经找到了这个 Hacky ViewPager,可以通过调用toggleLock()来启用/禁用滚动.
public class HackyVIEwPager extends VIEwPager {    private boolean isLocked;    public HackyVIEwPager(Context context) {        super(context);        isLocked = false;    }    public HackyVIEwPager(Context context,AttributeSet attrs) {        super(context,attrs);        isLocked = false;    }    @OverrIDe    public boolean onIntercepttouchEvent(MotionEvent ev) {        if (!isLocked) {            try {                return super.onIntercepttouchEvent(ev);            }            catch (IllegalArgumentException e) {                e.printstacktrace();                return false;            }        }        return false;    }    @OverrIDe    public boolean ontouchEvent(MotionEvent event) {        return !isLocked && super.ontouchEvent(event);    }    public voID toggleLock() {        isLocked = !isLocked;    }    public voID setLocked(boolean isLocked) {        this.isLocked = isLocked;    }    public boolean isLocked() {        return isLocked;    }}

所以我的问题是,我不确定我必须在哪个位置调用toogleLock().我想我必须实现一个监听器,但我不确定哪一个是最好的.在此先感谢帮助我!

编辑:我自己想出来了!

photovIEw.setonMatrixchangelistener(new PhotoVIEwAttacher.OnMatrixChangedListener() {            @OverrIDe            public voID onMatrixChanged(RectF rectF) {                if (photovIEw.getScale() > 1) {                    sPager.setLocked(true);                } else {                    sPager.setLocked(false);                }            }        });
解决方法@H_502_12@ 对我来说,photovIEw.getScale()== 1总是和我一起使用缩放.

setonScalechangelistener中的scaleFactor只是某个时间的刻度,与前一个值无关.我们需要计算累积scaleFactor.

private float cumulScaleFactor = 1;photoVIEwAttacher.setonScalechangelistener(new PhotoVIEwAttacher.OnScalechangelistener() { @OverrIDe public voID onScaleChange(final float scaleFactor,final float focusX,final float focusY) {     cumulScaleFactor = cumulScaleFactor * scaleFactor;     sPager.setLocked(isValueApproximate(1.0f,cumulScaleFactor)); }});private boolean isValueApproximate(final float expectedValue,final float value) {    final float errormargin = 0.01f;    return Math.abs(expectedValue - value) < errormargin;}
总结

以上是内存溢出为你收集整理的android – 用于PhotoView的缩放监听器全部内容,希望文章能够帮你解决android – 用于PhotoView的缩放监听器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1138120.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存