非常に多くの画像を表示するギャラリーを作成したいと思います。これを行うために、ImageView [3]を持つアダプタクラスを作成し、getViewをImageView [position%3]に渡しました。また、非同期に読み込まれる大きなビットマップをImageViewに取り込むようにアダプタを設定しています。Androidのギャラリーの高さに合ったギャラリー用のImageViewを作成する
フリンジはデバイスがイメージに読み込むことができるよりも速くスクロールすることがあるため、サムネイルの配列も長くなります(最終的にサムネイルギャラリーにも使用されます)。大きなビットマップが利用できない場合、ImageViewにサムネイルが設定され、大きなビットマップが読み込まれると、再度読み込まれます。
私の問題はそれ故に憂鬱なことです。ImageViewは私が望むように拡大縮小していません。望ましい挙動は、ImageViewがその親と同じ高さであるが、その内容と同じアスペクト比を有することである。私はImageViewの[]を使用してこのコード取り込む場合は、:)とすぐにギャラリーgetViewメソッドを(呼び出すよう
private void initializeStaticArrays() {
//initialize envelope arrays
for(int i=0; i<ENVELOPE_ARRAY_SIZE; ++i)
{
mEnvelopeViews[i] = new ImageView(mContext);
//make the views as wide as their content and as tall as their parent
mEnvelopeViews[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
//then make them scale the contained image
mEnvelopeViews[i].setScaleType(ImageView.ScaleType.FIT_CENTER);
mEnvelopeIds[i] = Gallery.INVALID_POSITION;
mBundles[i] = new BitmapFilePathBundle();
}
for(int i=0; i<THUMBNAIL_ARRAY_SIZE; ++i)
{
mThumbnailViews[i] = new ImageView(mContext);
if(mThumbnailParams!=null) mThumbnailViews[i].setLayoutParams(new Gallery.LayoutParams(mThumbnailParams));
mThumbnailViews[i].setScaleType(ImageView.ScaleType.FIT_CENTER);
mThumbnailIds[i] = Gallery.INVALID_POSITION;
}
}
を、それがクラッシュ()(私は他の場所でコードにsetImageBitmapと呼ばれてきたし、それは間違いなくgetViewメソッドの前に起こっている注意してください。が呼び出されます)。私はこれが算術ループであると考えています。ビットマップをビットマップを含むようにしようとしているようなビットマップのストレッチを試みるのと同じようなものですが、レイアウトパラメータの組み合わせによって私が望む結果を得ることができません。
ImageViewを親のように背の高いものにする方法はありますか?そのコンテンツを正しいアスペクト比に合わせてズームし、ImageViewの幅をコンテンツの幅と正確に一致させますか?
編集:クラッシュは、LayoutParamsからGallery.LayoutParamsへのCastExceptionによって引き起こされました。適切な行を次のように変更してください:
この問題は解決されましたが、ズームの問題は修正されません。