ListViewを含むアクティビティがあります。リストは左側にサムネイル、右側にテキストで、連絡先リストとほとんど同じです。
サムネイルはSDカードからの絶対パスから読み込まれ、各画像サイズは約5MBです。メモリ不足を回避するために、このチュートリアルでは、拡大縮小されたバージョンの画像のみをロードし、多くのメモリを使用しないクラスを作成しました。
さて、何が問題なのですか?なぜなら、画像のサイズを変更したい幅と高さ(px)を渡す必要があるのですが、デバイスが異なれば、絶対値の設定に問題が発生します。だから、私はビューを引数に渡してみて、クラスでそれを操作して幅と高さを取得しました。わかりました、しかしそれはうまくいきませんでした、サムネイルがはっきりと描かれていないので(私は推測します)、私は彼のサイズ値をとることができません。
lisviewアダプタからgetView()メソッド内のサイズを取得するにはどうすればよいですか?
/** short passage of getView() method */
ImageView image = (ImageView) view.findViewById(R.id.image_thumb);
Bitmap bMap = BitmapAdjusted.decodeSampleBitmap("/sdcardpath/",
image); // "image" is the view passed by args
image.setImageBitmap(bMap);
ここに問題があります:
public static decodeSimpleBitmap(String path, View view){
/** unworth previous code */
int width = view.getWidth(); // always give zero, getMeasuredWidth() too
int height = view.getHeight(); // always give zero
// options is BitmapFactory.Options class, declared before that do the magic
options.inSampleSize = calculateInSampleSize(options, width, height);
}
ありがとう!