我现在使用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并管理从 Internet 下载位图的新视图。在位图下载过程中,此布局显示一个 ProgressBar,然后在准备好后添加 TouchImageView。从视觉上看,这似乎可行——我们看到一个 ProgressBar,然后加载了 TouchImageView——但触摸变得一团糟,而且通常不能始终如一地工作。
我尝试将 onTouchEvent 从进度图像视图委托给触摸图像视图 - 不走运。我还尝试在进度图像视图中覆盖 onInterceptTouchEvent 以始终返回 false,但这也不起作用。
任何人都可以提供一些关于在哪里继续调试此问题的想法吗?我已经为此工作了大约一个星期,但收效甚微。
这是我看到的行为:
活动加载,图像在 ViewPager -> FrameLayout -> TouchImageView 中可见。
ViewPager 可以滑动和更改图像,但捏缩放不适用于第一张或第二张图像。最终你会到达一个可以使用捏缩放的位置。我无法弄清楚有什么不同。
如果您确实尝试在滑动之前捏缩放,那么 ViewPager 滑动将不起作用,并且需要多次滑动才能使 ViewPager 进入页面。
一旦您处于“工作位置”,滑动到页面就可以正常工作,以及捏缩放和平移缩放的图像。在此之后,所有职位都有效。