我会尽量说清楚。
在这里我想要做什么
图像查看器,图像将在设备屏幕上尽可能大地显示。为了这个目的和更好的用户体验,我想到了一个画廊。直到那里一切正常!
问题
问题是在我的适配器的 getView 函数中,它只使用了我在画廊中拥有的第一个图像的 Gallery.LayoutParams。这意味着如果第一张图片是风景,第二张是肖像,那么第二张将显示为风景,与第一张具有相同的尺寸。我确实重置了 Gallery.LayoutParams 但没关系,它仍然具有第一个 ImageView 的 LayoutParams。
编码
public View getView(int position, View convertView, ViewGroup parent) {
ImageView im = new ImageView(mContext);
Bitmap bm = BitmapFactory.decodeByteArray(gallery.get(position).mContent, 0, gallery.get(position).mContent.length);
im.setImageBitmap(bm);
int width = 0;
int height = 0;
if (bm.getHeight() < bm.getWidth()) {
width = getWindowManager().getDefaultDisplay().getWidth();
height = bm.getHeight() * width / bm.getWidth();
}
else {
height = getWindowManager().getDefaultDisplay().getHeight();
width = bm.getWidth() * height/ bm.getHeight();
}
Gallery.LayoutParams lp = new Gallery.LayoutParams(width, height);
im.setLayoutParams(lp);
return im;
}
如果你们中的任何人明白为什么我真的很乐意知道答案,