disons que j'ai une image 'A' avec une résolution de 400x400 dans mon dossier dessinable, j'ai une source ImageView définie sur A, cette ImageView est dans une disposition linéaire ou une disposition de carte.
3 Réponses :
Tout d'abord, vous devez obtenir la résolution de votre appareil, procédez comme suit:
DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int width = displayMetrics.widthPixels; int height = displayMetrics.heightPixels;
Ensuite, en fonction de la largeur et de la hauteur, vous pouvez définir ImageView.SetWidth (. ..) / Height / ScaleType en utilisant certaines instructions.
est-il préférable de le faire ou de créer une nouvelle mise en page pour des dpi inférieurs dans ces dossiers res / layout-w600dp / main_activity.xml res / layout-large / main_activity.xml res / layout-xlarge / main_activity.xml code>
Correction de ce problème en utilisant la disposition des contraintes et en définissant la largeur et la hauteur de l'image sur 0dp, ce qui la met à l'échelle en fonction de la taille de la source de l'image.
Utilisez ScaleType dans ImageView centerInside.
Ou
Vous pouvez créer un nouveau Bitmap
en fonction de la taille de l'écran en conservant le Rapport hauteur / largeur
. p >
Supposons que la taille de votre image soit 400x300 (LxH)
Et que la taille ImageView
attendue est 200x400
Et vous voulez l'adapter en fonction de la largeur ImageView
Ensuite, vous calculerez la nouvelle Hauteur
et la Largeur
en utilisant la formule ci-dessous et redimensionnerez le nouveau Bitmap
.
Rapport hauteur / largeur = hauteur / largeur (si nous avons pris une nouvelle largeur)
Rapport hauteur / largeur = Largeur / Hauteur (si nous prenons une nouvelle hauteur)
AR = 300/400 = 0.75
public static Bitmap scaleBitmap(Bitmap bitmap, int wantedWidth, int wantedHeight) { Bitmap output = Bitmap.createBitmap(wantedWidth, wantedHeight, Config.ARGB_8888); Canvas canvas = new Canvas(output); Matrix m = new Matrix(); m.setScale((float) wantedWidth / bitmap.getWidth(), (float) wantedHeight / bitmap.getHeight()); canvas.drawBitmap(bitmap, m, new Paint()); return output; }
Vous pouvez donc redimensionner Bitmap comme en prenant la hauteur et la largeur ci-dessus.
Calculateur de rapport hauteur / largeur d'image en ligne
Utilisez la méthode ci-dessous pour redimensionner Bitmap:
New Height = NewWidth * AR; NewHeight = 200 * 0.75; NewHeight = 150 ;
vous pouvez utiliser un poids LinearLayout + et un type d'échelle de fitCenter dans votre ImageView, ou une magie de ConstraintLayout (qui à coup sûr fonctionnera encore mieux, mais je ne sais pas comment l'utiliser)