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 ?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top