できるだけ明確にしようと思います。
ここで私がやろうとしていること
画像がデバイス画面にできるだけ大きく表示される画像ビューア。この目的とユーザー エクスペリエンスの向上のために、ギャラリーを考えました。そこまでは大丈夫!
問題
問題は、アダプターの関数 getView で、ギャラリーにある最初の画像の Gallery.LayoutParams のみを使用することです。つまり、最初の写真が横向きで、2 番目の写真が縦向きの場合、2 番目の写真は最初の写真と同じ寸法で横向きとして表示されます。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;
}
答えを知りたい理由がわかる方がいらっしゃいましたら、