Android.L'obtention de la taille de l'image à partir de son id de ressource
-
11-12-2019 - |
Question
C'est une partie de mon Activité:
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);
}
J'essaie d'afficher une image dans une ImageView l'aide d'une matrice comme le type d'échelle (je veux ajouter multitouch plus tard).Mais avant que l'utilisateur démarre l'interaction, je veux que l'image soit centrée et à l'intérieur de l'ImageView.J'ai déjà trouvé des réponses sur la façon de résoudre le problème, mais il y a un problème pour moi:pour faire une image centrée à l'aide de la matrice j'ai besoin de savoir sa largeur et sa hauteur.Est-il possible d'obtenir la taille de l'image lorsque tout ce que vous avez est int ressources ?
La solution
Utilisation BitmapFactory.decodeResource pour obtenir un objet Bitmap de la ressource, et puis, à partir de l'image bitmap, vous pouvez facilement récupérer l'image en largeur/hauteur avec getHeight et getWidth
Aussi, n'oubliez pas de recycler votre image bitmap
EDIT:
De cette façon, vous obtiendrez un null
bitmap en tant que sortie, mais la BitmapFactory.Les Options seront à définir avec la avec la et la hauteur de l'image bitmap.Donc, dans ce cas,, vous n'avez pas besoin de recycler l'image 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;
Autres conseils
Pour quiconque n'a pas lu le commentaire de Dmon.Le code pour le faire ressemble à ceci:
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