2011-09-16 42 views
1

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

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

在此先感谢

回答

3

我其实只是碰到了这一点,并通过它的工作。 (在我的情况下)画廊在第一次触摸之后抓取触摸事件(发生在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变量是我的指示图像是否放大或不放大。如果图像不可拖动,则也不放大,然后我们也将触摸事件提供给图库进行轻扫检测。

祝你好运!

+1

非常非常好您的先生的答案。我感谢你为此付出的努力。 – Arslan

相关问题