This is a part of my Activity:
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);
}
I try to display an image within an ImageView using a matrix as scale type (I want to add multitouch later). But before user starts interaction i want the image to be centered and fit inside the ImageView.
I already found answers concerning how to solve it but there is one problem for me:
to make image centered using matrix I need to know its width and height. Is there any way of getting image size when all you have is int resource ?
Use BitmapFactory.decodeResource to obtain a Bitmap object of the resource, and then from the bitmap you can easily retrieve the image width/height with getHeight and getWidth
Also do not forget to recycle your bitmap
EDIT:
This way you will get a null
bitmap as output, but the BitmapFactory.Options will be set with the with and height for the bitmap. So, in this case,, you do not need to recycle the bitmap
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;
For anyone that didn't read dmon's comment. The code to do this looks like this:
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