AndroidがビットマップをImageViewに読み込む方法で、私は全く変わった動作に遭遇しました。たとえば、urimg_01.jpgと呼ばれる500x313の画像ファイルがあります。このコードでは:奇妙なImageViewビットマップの処理
img.setImageResource(R.drawable.urimg_01);
Bitmap bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap();
Log.v(TAG,"---------------------> bitmap width = "+bitmap.getWidth());
Log.v(TAG,"---------------------> bitmap height = "+bitmap.getHeight());
ImageViewビットマップは750x470です。 (私は480X800ディスプレイとネクサスSを持っている。)
getFilesDir(にある同じファイルのコピーを読み込み、このコードは、)で:予想通り
Log.v(TAG,"image file is "+filelist[0].getAbsolutePath());
FileInputStream fis = new FileInputStream(filelist[0]);
FileDescriptor fd = fis.getFD();
Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fd);
if (bitmap != null) {
Log.v(TAG,"---------------------> bitmap width = "+bitmap.getWidth());
Log.v(TAG,"---------------------> bitmap height = "+bitmap.getHeight());
img.setImageBitmap(bitmap);
fis.close();
}
ImageViewのビットマップは、500x313です。
setImageResource()の場合、悪魔は750x470をどこから得るのですか?そして、それをdrawableのリソースの正しい次元で使う方法を教えてください。