Pregunta

Esto es parte de mi Actividad:

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);
}

Intento mostrar una imagen dentro de ImageView usando una matriz como tipo de escala (quiero agregar multitáctil más adelante).Pero antes de que el usuario comience a interactuar, quiero que la imagen esté centrada y quepa dentro de ImageView.Ya encontré respuestas sobre cómo solucionarlo pero hay un problema para mí:Para centrar la imagen usando una matriz, necesito saber su ancho y alto.¿Hay alguna forma de obtener el tamaño de la imagen cuando todo lo que tienes es recurso int ?

¿Fue útil?

Solución

Usar BitmapFactory.decodeRecurso para obtener un objeto de mapa de bits del recurso, y luego desde el mapa de bits puede recuperar fácilmente el ancho/alto de la imagen con obtener altura y obtener ancho

Además no olvides reciclar tu mapa de bits

EDITAR:

De esta manera obtendrás un null mapa de bits como salida, pero BitmapFactory.Options se configurará con y la altura del mapa de bits.Entonces, en este caso, no es necesario reciclar el mapa de bits.

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;

Otros consejos

Para cualquier persona que no leí el comentario de DMON.El código para hacer esto se ve así:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top