我已经使用Mike Ortiz的TouchImageView和自定义的TouchViewPager让应用程序在几个版本中非常好地支持了捏合缩放,以便它可以在视图页面内工作。这种方法效果很好 - TouchViewPager覆盖的唯一方法是onInterceptTouchEvent:
public boolean onInterceptTouchEvent(MotionEvent ev) {
TouchImageView view = getTouchView();
if( null != view ){
if( !view.isAtLimit() && view.getCurrentScale() > 1){
return false;
} else {
Log.v(TAG, "View limit = " + view.isAtLimit());
Log.v(TAG, "View scale = " + view.getCurrentScale());
}
}
return super.onInterceptTouchEvent(ev);
}
最近,我们创建了一个新的视图,扩展了FrameLayout并管理从互联网下载位图。当位图下载正在进行时,此布局显示ProgressBar,然后在准备就绪后添加TouchImageView。在视觉上,这似乎有效-我们看到ProgressBar,然后TouchImageView加载-但是触摸功能变得混乱,通常不能正常工作。
我已经尝试将进度图像视图的onTouchEvent委托给触摸图像视图-没有成功。我还尝试在进度图像视图中重写onInterceptTouchEvent以始终返回false,但也没有起作用。
有人可以帮忙提出一些继续调试此问题的想法吗?我已经在这个问题上工作了大约一周,但收效甚微。
这是我看到的行为:
活动加载时,图像可在ViewPager -> FrameLayout -> TouchImageView中看到。
ViewPager工作以滑动和更改图像,但是第一或第二张图像无法捏合缩放。最终,您会到达一个可以进行捏合缩放的位置。我想不出有什么不同。
如果您在滑动之前尝试捏合缩放,则ViewPager的滑动将无法正常工作,并且需要多次滑动才能翻页。
一旦您处于“工作位置”,滑动翻页就可以正常工作,捏合缩放和平移缩放图像也可以正常工作。此后所有位置都可以工作。
onInterceptTouchEvent()
еҮҪж•°еҜ№жҲ‘еҮ д№Һе®ҢзҫҺең°иҝҗдҪң :) дҪ жҳҜеҰӮдҪ•е®һзҺ°isAtLimit()
еҮҪж•°зҡ„пјҹ - Izydorr