gpt4 book ai didi

java - Pre L中的Android L Elevation Effect(仅使用elevation属性)

转载 作者:IT老高 更新时间:2023-10-28 23:16:08 25 4
gpt4 key购买 nike

我正在开发一个应用程序,并希望对 Pre L API 中的 ImageView 或任何 View(支持库中的!CardView)产生提升效果。但我无法实现我尝试使用的 android:elevation 属性,但它没有任何效果(无海拔)。

如果有人指出在 Pre L 中实现此目的的任何文档或支持库中的任何 fragment ,我找不到任何 API。

最佳答案

如果你想设置 3D 形状的 View ,View.setElevation()View.setTranslationZ() 是个好主意。

但不幸的是,这两个属性和方法是从 Android API 21 开始引入的。因此,您不能在 pre-L 或 API 21- 设备上使用它们。

但是,仍然有一种方法可以自定义 View 的阴影和轮廓。

View 的背景可绘制对象的边界决定了其阴影的默认形状。轮廓表示图形对象的外部形状并定义触摸反馈的波纹区域。

考虑这个用背景可绘制对象定义的 View :

<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />

背景可绘制对象定义为圆角矩形:

<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>

View 用圆角转换阴影,因为背景可绘制对象定义了 View 的轮廓。提供自定义轮廓会覆盖 View 阴影的默认形状。

在代码中为 View 定义自定义轮廓:

  1. 扩展 ViewOutlineProvider 类。
  2. 重写 getOutline() 方法。
  3. 使用View.setOutlineProvider() 方法。

您可以使用 Outline 类中的方法创建带圆角的椭圆形和矩形轮廓。 View 的默认大纲提供程序从 View 的背景中获取大纲。要防止 View 转换阴影,请将其轮廓提供程序设置为 null

希望对您有所帮助。

附注:如果您使用的是 android-design-libraryyourAppNs:elevation="4dp" 将是一个好主意。

关于java - Pre L中的Android L Elevation Effect(仅使用elevation属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468087/

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