gpt4 book ai didi

android - ImageView scaleType 'centerCrop' 相当于位图可绘制重力

转载 作者:IT老高 更新时间:2023-10-28 21:35:33 29 4
gpt4 key购买 nike

我创建了一个带有标题图像的 Activity 。此标题图像最初是使用 ImageView 在 Activity 的布局 xml 中创建的,其中 scaleType 设置为 centerCrop。这就是我想要的,它使图像居中,在纵向模式下左右剪切,在横向模式下全部显示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="30dp"
android:paddingBottom="6dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:background="#919EAC"
android:orientation="vertical" >

<ImageView
android:id="@+id/header_image"
android:layout_width="match_parent"
android:layout_height="120dp"
android:contentDescription="@string/header_description"
android:scaleType="centerCrop"
android:src="@drawable/header" />

.... <other views> ...

我想将其替换为背景可绘制对象,以便我可以使用标题图像空间来显示数据,并且它可以让我在不同的 Activity 中重复相同的布局。

出于这个原因,我创建了一个可在 android:background 属性中引用的可绘制对象:

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#919EAC" />
</shape>
</item>
<item>
<bitmap
android:antialias="true"
android:gravity="top|center_horizontal"
android:src="@drawable/header" />
</item>
</layer-list>

此可绘制对象定义了布局将定义的彩色背景,并定义了一个标题图像,否则该图像将作为 ImageView 包含在布局中。

但是现在我的图像被缩放了,而我希望它被裁剪。

查看 Android 文档我尝试了其他重力模式,例如

    android:gravity="top|clip_horizontal"

但它的显示/缩放似乎仍然与 ImageView 不同。

背景可绘制对象的正确定义是什么?

最佳答案

要在代码中居中裁剪位图,请执行以下操作:

public static Bitmap cropCenter(Bitmap bmp) {
int dimension = Math.min(bmp.getWidth(), bmp.getHeight());
return ThumbnailUtils.extractThumbnail(bmp, dimension, dimension);
}

我不知道有任何其他方式可以将位图 xml 居中裁剪。

希望对大家有所帮助。

我从这篇文章中找到了这个解决方案: Android Crop Center of Bitmap

关于android - ImageView scaleType 'centerCrop' 相当于位图可绘制重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381571/

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