Android 触摸ViewPager/FrameLayout下的缩放
我不得不为一些现在使用的应用程序版本和一个定制的TouchViewPager进行缩放,这样它就可以在一个view pager中工作。这工作得很好-TouchViewPager覆盖的唯一方法是: 最近,我们创建了一个新视图,它扩展并管理从internet下载位图。位图下载过程中,此布局显示一个进度条,然后在准备就绪后添加TouchImageView。从视觉上看,这似乎是可行的——我们看到一个ProgressBar,然后加载TouchImageView——但是触摸会变得一团糟,而且通常不会持续工作 我尝试过将onTouchEvent从进度图像视图委托给触摸图像视图-运气不好。我还尝试在progress image视图中重写onInterceptTouchEvent以始终返回false,但这也不起作用 有没有人能提供一些关于在哪里继续调试这个问题的想法?我已经在这方面工作了大约一个星期,几乎没有成功 这就是我看到的行为:Android 触摸ViewPager/FrameLayout下的缩放,android,imageview,android-imageview,android-framelayout,pinchzoom,Android,Imageview,Android Imageview,Android Framelayout,Pinchzoom,我不得不为一些现在使用的应用程序版本和一个定制的TouchViewPager进行缩放,这样它就可以在一个view pager中工作。这工作得很好-TouchViewPager覆盖的唯一方法是: 最近,我们创建了一个新视图,它扩展并管理从internet下载位图。位图下载过程中,此布局显示一个进度条,然后在准备就绪后添加TouchImageView。从视觉上看,这似乎是可行的——我们看到一个ProgressBar,然后加载TouchImageView——但是触摸会变得一团糟,而且通常不会持续工作
奇怪的是,我能够通过在TouchImageView类中实现重置方法来实现这一点:
public void resetZoom() {
Matrix imageMatrix = getImageMatrix();
RectF drawableRect = new RectF(0, 0, bmWidth, bmHeight);
RectF viewRect = new RectF(0, 0, getWidth(), getHeight());
imageMatrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
matrix = imageMatrix;
setImageMatrix(matrix);
fitAndCenterView();
invalidate();
}
此方法在调用时重置图像的缩放-当我们在framelayout中设置图像时,调用此方法将设置所有内容。奇怪的是,当图像不在FrameLayout中时,这不是必需的
当然,我非常感谢任何代码清理以及我们所能做的任何事情。如果您共享更多的代码,可能会有所帮助。您的
onInterceptTouchEvent()
函数对我来说几乎非常好:)您是如何实现isAtLimit()
函数的?我实际上不再使用该代码了,但我在TouchImageView中添加了getter以返回limitX和limitY布尔值。这就是我要检查的。
public void resetZoom() {
Matrix imageMatrix = getImageMatrix();
RectF drawableRect = new RectF(0, 0, bmWidth, bmHeight);
RectF viewRect = new RectF(0, 0, getWidth(), getHeight());
imageMatrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
matrix = imageMatrix;
setImageMatrix(matrix);
fitAndCenterView();
invalidate();
}