具有可缩放ImageView的Android ViewPager

时间:2011-12-16 10:04:49

标签: android image-zoom android-viewpager

我有一个由ImageViews制作的ViewPager,如下所示:

@Override
    public Object instantiateItem(View collection, int position) {
        ImageView iv = new ImageView(ctx);
        if (pageList.size() > position)
            iv.setImageBitmap(pageList.get(position));
        else
            iv.setImageResource(R.drawable.loading);

        iv.setOnTouchListener(this);
        ((ViewPager) collection).addView(iv, 0);
        System.out.println("POS: " + position);
        return iv;
    }

我有机会通过双击(并滑动图像)或缩放缩放来缩放ImageView吗?

4 个答案:

答案 0 :(得分:6)

这是可能的,这是我如何做到的。

我的顶级布局元素是FrameLayout,它允许多个视图堆叠在一起。 FrameLayout有两个孩子:ViewPagerImageView我将用于显示放大的图片。

ImageView通常是隐藏的。我在ViewPager内的图片上听取触摸事件,并根据这些事件,显示和隐藏并平移ImageView。它运作得相当好。如果需要,我可以提供更多细节。

答案 1 :(得分:2)

我使用了Mike Ortiz的TouchImageView课程。它并不完美。但它很酷,因为你可以很容易地放弃它!双击缩放动画可以很有趣。捏缩放可以通过双击来触发,这很奇怪。

如果将其直接放入ViewPager(通过适配器类),它确实可以正常工作。放大后,您可以左右自由移动而不会触发页面更改,除非您正好在边缘,这真的很酷!

https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/ortiz/touch/TouchImageView.java

答案 2 :(得分:1)

在大量过时和删除的库中搜索了很多之后,我发现了这个是最新的,并且在 Viewpagers 中也很有魅力: https://github.com/davemorrissey/subsampling-scale-image-view

这是它的工作原理:

imageView.setImage(ImageSource.resource(R.drawable.monkey));
// ... or ...
imageView.setImage(ImageSource.asset("map.png"))
// ... or ...
imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));

答案 3 :(得分:0)