大佬教程收集整理的这篇文章主要介绍了android – 用于PhotoView的缩放监听器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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); } } });
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的缩放监听器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。