Android.Obtendo o tamanho da imagem a partir do ID do recurso
-
11-12-2019 - |
Pergunta
Esta é uma parte da minha atividade:
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);
}
Tento exibir uma imagem dentro de um ImageView usando uma matriz como tipo de escala (quero adicionar multitoque mais tarde).Mas antes que o usuário inicie a interação, quero que a imagem seja centralizada e caiba dentro do ImageView.Já encontrei respostas sobre como resolver isso, mas há um problema para mim:para centralizar a imagem usando a matriz, preciso saber sua largura e altura.Existe alguma maneira de obter o tamanho da imagem quando tudo o que você tem é recurso interno ?
Solução
Usar BitmapFactory.decodeResource para obter um objeto Bitmap do recurso e, a partir do bitmap, você pode recuperar facilmente a largura/altura da imagem com obterAltura e obterLargura
Também não se esqueça de reciclar seu bitmap
EDITAR:
Desta forma você obterá um null
bitmap como saída, mas BitmapFactory.Options será definido com with e height para o bitmap.Então, neste caso, você não precisa reciclar o 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;
Outras dicas
Para quem não leu o comentário do dmon.O código para fazer isso é assim:
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