图像视图放大和缩小内画廊视图在android



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

我在网上搜索了很长一段时间,但我只得到图像视图缩放,如果我将使用图像视图在画廊视图中,画廊视图上的滚动方法被隐藏,只执行图像视图onScroll()和onFling()方法。所以谁有什么想法和我分享。

Thanks in advance

实际上我只是碰到了这个问题并解决了它。(在我的情况下)画廊是在第一次触摸后抓取触摸事件(发生在ImageView. ontouchevent()返回false时),这永远不允许ImageView在第一次触摸后处理这些事件。这可以通过实现三件事来解决。

首先,在可缩放的ImageView中,确保onTouchEvent总是返回true,以表明它正在处理触摸事件。这将确保触摸事件永远不会发送到图库,允许第二个手指事件和任何移动由ImageView处理。

其次,你需要在ImageView中创建某种标志,表明它当前是否被放大。

最后,您需要在图库中手动捕获触摸事件,因为它永远不会从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变量是图像是否放大的指示器。如果图像不可拖拽,也就是不能放大,那么我们也会给touch事件给Gallery来进行滑动检测。

祝你好运!

最新更新