图像视图在android中的图库视图内放大和缩小

时间:2011-09-16 06:48:53

标签: android-widget

我正在开发一个用于维护图库应用程序的应用程序。它工作正常,但我需要实现放大和缩小效果的全尺寸图像视图。在全尺寸图像视图中,我在图库视图中使用图库视图,我有逐个显示的图像。我需要在图库视图中实现可视图像的缩放缩放。

我在网上搜索了很长时间但是我只得到了图像视图捏缩放如果我将在图库视图中使用该图像视图滚动方法上的图库视图是隐藏仅执行图像视图onScroll()和onFling()方法。所以任何人都有任何想法与我分享。

提前致谢

1 个答案:

答案 0 :(得分:3)

我实际上只是遇到了这个并完成了它。 (在我的例子中)画廊在第一次触摸后(当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变量是我是否放大图像的指示器。如果图像不可拖动,a.k.a。未放大,则我们还会将触摸事件发送到图库以进行滑动检测。

祝你好运!