Android.Ottenere la dimensione dell'immagine dall'ID di risorsa
-
11-12-2019 - |
Domanda
Questa è una parte della mia attività:
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);
}
.
Provo a visualizzare un'immagine all'interno di imageview utilizzando una matrice come tipo di scala (Voglio aggiungere multitouch in seguito).Ma prima dell'utente inizia l'interazione, voglio che l'immagine sia centrata e adattarsi all'interno dell'immaginazione. Ho già trovato risposte riguardanti come risolverlo, ma c'è un problema per me: Per creare un'immagine centrata usando la matrice ho bisogno di conoscere la sua larghezza e altezza.C'è un modo per ottenere la dimensione dell'immagine quando tutto ciò che hai è Int Resource ?
Soluzione
Usa Bitmapfactory.decoderesource per ottenere un oggetto bitmap della risorsa, quindi dalla bitmap è possibile recuperare facilmente la larghezza / altezza dell'immagine con getheight e GetWidth
Anche non dimenticare di riciclare La tua bitmap
Modifica:
In questo modo otterrai una bitmap null
come uscita, ma le bitmapfactory.options saranno impostate con l'altezza con l'altezza per la bitmap.Quindi, in questo caso, non è necessario riciclare la 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;
. Altri suggerimenti
Per chiunque non abbia letto il commento di Dmon.Il codice da fare è simile a questo:
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
.