Bitmap von Android ImageView im Fall von ScaleType, obere und untere RectF-Koordinaten der Bitmap, Kotlin
Normalerweise skaliert Android nach dem Festlegen von ScaleType in ImageView das Originalbild und platziert es in ImageView, zum Beispiel:
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@mipmap/p2" />
Angezeigte Ergebnisse:
Die Höhe von ImageView wird hier speziell eingestellt:
android:layout_height="match_parent"
Es füllt die Höhe von ImageView aus, aber die Breite der in ImageView angezeigten Bitmap füllt die Bildschirmbreite aus, aber die Höhe von Bitmap unterscheidet sich von der von ImageView und oben und unten gibt es Lücken. Denn der Skalierungsmodus ist:
android:scaleType="fitCenter"
Wenn Sie zu diesem Zeitpunkt den oberen Wert oder einen anderen unteren Wert der Bitmap erhalten möchten, die über „scaleType“ in der ImageView skaliert wurde, gehen Sie wie folgt vor:
private fun getImageBounds(imageView: ImageView): RectF {
val bounds = RectF()
val drawable = imageView.drawable
if (drawable != null) {
imageView.imageMatrix.mapRect(bounds, RectF(drawable.bounds))
}
return bounds
}
Der obere Rand des zurückgegebenen RectF ist der Abstand zwischen dem oberen Rand der skalierten Bitmap im ImageView und dem oberen Rand des ImageView.
Da die Höhe der ImageView auf „match_parent“ und der ScaleType „fitCenter“ festgelegt ist, besteht eine Lücke zwischen dem oberen Rand der Bitmap im Inneren und dem oberen Rand der ImageView. Wenn Sie diese Lücke schließen möchten, ist das ganz einfach: Ändern Sie einfach die XML direkt und ändern Sie die Höhe der ImageView von match_parent in wrap_content:
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@mipmap/p2" />
Zu diesem Zeitpunkt bewegt sich die Bitmap in der ImageView nach oben und stimmt mit der Oberseite der ImageView überein.
Ein solch einfacher Prozess kann in einigen Szenarien die Berechnung der Breiten- und Höhenkoordinatenpositionen von ImageView und Bitmap in ImageView vereinfachen.