gpt4 book ai didi

android - 在 Android 中测量 "fitCenter"imageView 的边距

转载 作者:行者123 更新时间:2023-11-29 14:48:06 25 4
gpt4 key购买 nike

给定一个像这样的简单 RelativeLayout:

    <RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#0fffff">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/img001" />
</RelativeLayout>

布局边框和图片边框之间的左/上间距取决于正在加载到 imageView 中的图片的 W/H 比率。

enter image description here

在此布局中显示图像后,我如何知道(以编程方式)实际边距(青色区域的宽度和高度)?

最佳答案

此方法将计算在 FIT_CENTER 之后界定对象的新矩形 和所有其他相关值。

它应该适用于对象和容器的所有情况。

enter image description here

 public static Rect calculateFitCenterObjectRect(float containerWidth, float containerHeight, float objectWidth, float objectHeight) {

// scale value to make fit center
double scale = Math.min( (double)containerWidth / (double)objectWidth, (double)containerHeight / (double)objectHeight);

int h = (int) (scale * objectHeight); // new height of the object
int w = (int) (scale * objectWidth); // new width of the object

int x = (int) ((containerWidth - w) * 0.5f); // new x location of the object relative to the container
int y = (int) ((containerHeight - h) * 0.5f); // new y location of the object relative to the container

return new Rect(x, y, x + w, y + h);
}

您可以使用 FrameLayout 将 View 放置在您想要的任何位置后,使用之前的方法和缩放对象的新 x、y、宽度、高度。

关于android - 在 Android 中测量 "fitCenter"imageView 的边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com