585 Stimmen

Wie man ein Bild in ImageView skaliert, um das Seitenverhältnis beizubehalten

In Android habe ich die layout_width eines ImageView auf fill_parent festgelegt (was die gesamte Breite des Telefons einnimmt).

Wenn das Bild, das ich dem ImageView gebe, größer ist als die layout_width, wird Android es skalieren, oder? Aber was ist mit der Höhe? Behält Android das Seitenverhältnis bei, wenn es das Bild skaliert?

Was ich herausgefunden habe, ist, dass oben und unten im ImageView weißer Raum entsteht, wenn Android ein Bild skaliert, das größer ist als das ImageView. Stimmt das? Wenn ja, wie kann ich diesen weißen Raum eliminieren?

1voto

Flavio Capaccio Punkte 696

Ich benutze das:

0 Stimmen

Ich habe auch android:adjustViewBounds="true" gesetzt. centerInside war der richtige Weg, um ein Beschneiden zu verhindern und das Seitenverhältnis beizubehalten.

0voto

lvl4fi4 Punkte 1087

Im Falle der Verwendung von cardviewzum Runden von imageview und festgelegter android:layout_height für den Header hat das bei mir funktioniert, um das Bild mit Glide zu laden.

0voto

Niraj Punkte 31

Sie können das Bild skalieren, was auch die Größe Ihres Bildes reduzieren wird. Es gibt eine Bibliothek dafür, die Sie herunterladen und verwenden können. https://github.com/niraj124124/Images-Files-scale-and-compress.git

Wie man benutzt 1) Importieren Sie den compressor-v1.0.jar in Ihr Projekt. 2) Fügen Sie den unten stehenden Beispielcode zum Testen hinzu. ResizeLimiter resize = ImageResizer.build(); resize.scale("inputImagePath", "outputImagePath", imageWidth, imageHeight); Es gibt viele weitere Methoden, je nach Bedarf

0voto

myworldbox Punkte 150

Schnelle Antwort:

0voto

Kaviyarasan M Punkte 11

Programmatisch ein Seitenverhältnis auf ImageView anwenden:

aspectRatio = imageWidth/imageHeight   
ratioOfWidth = imageWidth/maxWidth  
ratioOfHeight = imageHeight/maxHeight  

if(ratioOfWidth > ratioOfHeight){
    imageWidth = maxWidth 
    imageHeight = imageWidth/aspectRatio
} else if(ratioOfHeight > ratioOfWidth){
    imageHeight = maxHeight
    imageWidth = imageHeight * aspectRatio
}

Danach kannst du das skalierte Bitmap auf die ImageView anwenden

Bitmap scaledBitmap= Bitmap.createScaledBitmap(bitmap, (int) imageWidth , (int) imageHeight , true);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X