android - studio - tamaño de imagen para fondo de pantalla para celular
Androide. Obtención del tamaño de la imagen a partir de su ID de recurso (2)
Esta es una 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 un ImageView usando una matriz como tipo de escala (quiero agregar multitouch más adelante). Pero antes de que el usuario inicie la interacción, quiero que la imagen esté centrada y que se ajuste dentro de ImageView. Ya encontré respuestas sobre cómo resolverlo, pero hay un problema para mí: para hacer que la imagen se centre utilizando la matriz, necesito saber su ancho y alto. ¿Hay alguna forma de obtener el tamaño de la imagen cuando todo lo que tiene es un recurso int ?
Para cualquiera que no haya leído 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
Utilice BitmapFactory.decodeResource 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 getHeight y getWidth
Además, no olvides recycle tu bitmap.
EDITAR:
De esta manera obtendrá un mapa de bits null
como salida, pero las Opciones de BitmapFactory se establecerán con la altura y para el 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;