我正在开发一个应用程序来维护像画廊应用程序一样的图像。它的工作很好,但我需要实现放大和缩小的全尺寸图像查看效果。在全尺寸图像视图中,我使用画廊视图,在画廊视图中,我有一个接一个显示的图像。我需要在画廊视图中实现可见图像的收缩缩放。
我在网上搜索了很长一段时间,但我只得到了图像视图缩小缩放,如果我将使用画廊视图内部画廊视图滚动方法是隐藏的画廊视图只执行图像视图onScroll()和onFling()方法。因此,任何人有任何想法与我分享。
提前感谢
发布于 2011-11-03 06:08:40
实际上,我刚刚遇到了这个问题,并解决了这个问题。(在我的例子中)图库在第一次触摸之后(当ImageView.onTouchEvent()返回false时发生)获取触摸事件,这永远不允许ImageView在第一次触摸之后处理这些事件。这可以通过实现三件事来解决。
首先,在可缩放的ImageView中,确保onTouchEvent始终返回true,以指示它正在处理触摸事件。这将确保触摸事件永远不会发送到图库,从而允许ImageView处理第二个手指事件和任何移动。
其次,您需要在ImageView中创建某种标志,以指示它当前是否被放大。
最后,您需要在Gallery中手动捕获触摸事件,因为它永远不会从ImageView传递过来。这可以通过创建一个扩展Gallery的自定义类并覆盖onInterceptTouchEvent()来完成。此方法在触控事件传送子ImageView的过程中捕获触控事件。覆盖它让我们有机会允许ImageView和Gallery处理触摸事件。下面是为我工作的代码。
@Override
public boolean onInterceptTouchEvent( MotionEvent ev ) {
View view = getSelectedView();
CustomZoomImageView image = (CustomZoomImageView) view.findViewById( R.id.Image );
if ( !image.isDraggable ) {
onTouchEvent( ev );
}
return super.onInterceptTouchEvent( ev );
}isDraggable变量是图像是否被放大的指示器。如果图像不可拖动,则也称为。如果没有放大,那么我们也会将触摸事件提供给Gallery,以进行滑动检测。
祝好运!
https://stackoverflow.com/questions/7441114
复制相似问题