これは私のアクティビティの一部です:
private ImageView mImageView;
private int resource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
resource = getIntent().getIntExtra("res", -1);
Matrix initMatrix = new Matrix();
mImageView = new ImageView(getApplicationContext());
mImageView.setScaleType( ImageView.ScaleType.MATRIX );
mImageView.setImageMatrix( initMatrix );
mImageView.setBackgroundColor(0);
mImageView.setImageResource(resource);
}
マトリックスをスケールタイプとして使用して、ImageView内に画像を表示しようとしています(後でマルチタッチを追加したい)。しかし、ユーザーがインタラクションを開始する前に、画像を中央に配置してImageView内に収めたいと思います。私はそれを解決する方法に関する答えをすでに見つけましたが、私にとって1つの問題があります:マトリックスを使用して画像を中央に配置するには、その幅と高さを知る必要があります。 int resourceだけの場合、画像サイズを取得する方法はありますか?
BitmapFactory.decodeResource を使用してリソースのビットマップオブジェクトを取得すると、ビットマップから を使用して画像の幅/高さを簡単に取得できます。/getHeight および getWidth
また、ビットマップを recycle することを忘れないでください
編集:
このようにして、出力としてnull
ビットマップを取得しますが、BitmapFactory.Optionsは、ビットマップのwithとheightで設定されます。したがって、この場合、ビットマップをリサイクルする必要はありません。
BitmapFactory.Options dimensions = new BitmapFactory.Options();
dimensions.inJustDecodeBounds = true;
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap, dimensions);
int height = dimensions.outHeight;
int width = dimensions.outWidth;
Dmonのコメントを読んでいない人のために。これを行うためのコードは次のようになります。
final Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.your_photo, opt);
opt.outHeight; // height of resource
opt.outWidth; // width of resource