1
votes

comment définir une valeur évolutive minimale pour un ImageView?

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.

 entrez la description de l'image ici


1 commentaires

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)


3 Réponses :


0
votes

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.


1 commentaires

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



0
votes

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.


0 commentaires

0
votes

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 ;


0 commentaires