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 ?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top