
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的缩放监听器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)