gpt4 book ai didi

java - 在 API 19 上缩放 VectorDrawable

转载 作者:太空狗 更新时间:2023-10-29 13:45:12 25 4
gpt4 key购买 nike

我正在使用 minSdkVersion = 15 编写一个 Android 应用程序(在 19 上测试)。我想要一个覆盖层,中间有一张小手机图片。我从标准 Android 的图片中添加了可绘制 (xml) 资源 ic_smartphone_black_24dp 并为覆盖创建了一个 ImageView,如下所示:

<ImageView
android:id="@+id/overlay"
android:layout_width="0dp"
android:layout_height="0dp"
android:alpha="1."
android:background="@drawable/overlay_full"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>

这会渲染叠加层,但智能手机图片会拉伸(stretch)到整个 ImageView:screenshot

我尝试以各种方式缩放手机的图片(阅读 thisthat 和许多其他方式),但都没有用。特别是我试过:

  • vectorDrawables.useSupportLibrary = true 添加到 gradle.build
  • 添加
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

到 Activity

  • ImageView 更改为 android.support.v7.widget.AppCompatImageView(并在 java 代码中而不是在 xml 中设置背景)
  • 传递 wrap_content 而不是 0dp 作为 layout_width/height (并移除约束)
  • overlay_full 中设置大小:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/overlay_background">
<size
android:width="152dp"
android:height="152dp"/>
</item>
<item android:drawable="@drawable/ic_smartphone_black_24dp"
android:left="30dp"
android:top="30dp"
android:right="30dp"
android:bottom="30dp"
android:gravity="center"
android:scaleType="center"
android:width="30dp"
android:height="30dp">
<size
android:width="30dp"
android:height="30dp"/>
</item>
</layer-list>

该代码在我也测试过的 API 28 中按预期工作。知道如何在早期的 API 版本中进行这种缩放吗?

最佳答案

你可以尝试这样的事情:

<ImageView
android:id="@+id/overlay"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="center"
android:background="@drawable/just_the_background"
app:srcCompat="@drawable/ic_smartphone_black_24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>

此外,您不需要直接在布局中使用 AppCompat View ,只需让库为您处理(它们会在构建时自动替换)。只有在扩展它们以添加自定义功能时才需要使用它们。

关于java - 在 API 19 上缩放 VectorDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55431785/

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