【问题标题】:Android Gallery View: View one image at a time int he view?Android Gallery View:在视图中一次查看一张图像?
【发布时间】:2012-04-22 01:27:55
【问题描述】:
有没有办法设置画廊视图,以便一次只能看到一张图片?我创建了一个带有图像缩略图的画廊视图。当用户单击图像时,我想启动一个新活动,该活动在新的画廊视图中显示实际选择的图像。现在,当用户滑动手指时,他可以看到随后的图像。有没有办法做到这一点?
【问题讨论】:
标签:
android
gallery
android-gallery
galleryview
【解决方案1】:
您可以将“自定义适配器”用于带有图像视图的图库视图,并在 getView(int position, View convertView, ViewGroup) 中的自定义适配器中将“match_parent”或“fill_parent”用于图像视图的“LayoutParams”父) 方法。
public View getView(int position, View convertView, ViewGroup parent) {
imageView.setLayoutParams(...);
return imageView;
}
参考资料:
developer.android
developer.android
developer.android
【解决方案2】:
我也遇到了同样的问题,我做了一个小技巧。在我的情况下,图像是静态的,所以我使用批量重命名将图像编号为 0-100。对相应的缩略图做了同样的事情。我创建了两个活动一个使用gridview(您可以使用galleryview)来保存拇指和另一个使用galleryview 我为gridview设置了onclicklistener以获取单击的拇指的id并将其传递给带有galleryview的活动作为额外的意图。galleryview抓取 id 并跳转到具有给定 id 的图像。检查这个
answer 和 thistutorial
【解决方案3】:
在网上搜索时找到了替代解决方案。更简单的解决方案是继承 Gallery 类,并将 onFling 设置为始终返回 false。以下是解决方案的参考:
How can I limit fling in Android gallery to just one item per fling?
这是我根据上面链接中列出的用户“Someone Somewhere”和“vmihalca”的输入的组合实现:
public class SlowGallery extends Gallery {
public SlowGallery(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SlowGallery(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SlowGallery(Context context) {
super(context);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
}