我有一个由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吗?
答案 0 :(得分:6)
这是可能的,这是我如何做到的。
我的顶级布局元素是FrameLayout
,它允许多个视图堆叠在一起。 FrameLayout
有两个孩子:ViewPager
和ImageView
我将用于显示放大的图片。
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)
在github中使用此库:https://github.com/matabii/scale-imageview-android。