Android L 在 Pre L 中的高程效果(仅使用高程属性)
2022-09-02 22:40:53
我正在开发一个应用程序,并希望对或任何(!支持库中的 CardView)在 Pre L API 中。但是我无法实现我尝试的是使用的属性,但它没有任何效果(无提升)。ImageView
View
android:elevation
我找不到任何API,如果有人指出任何文档来实现Pre L或支持库中的任何片段,我们非常感谢。
我正在开发一个应用程序,并希望对或任何(!支持库中的 CardView)在 Pre L API 中。但是我无法实现我尝试的是使用的属性,但它没有任何效果(无提升)。ImageView
View
android:elevation
我找不到任何API,如果有人指出任何文档来实现Pre L或支持库中的任何片段,我们非常感谢。
如果要在3D形状中设置视图,并且是一个好主意。View.setElevation()
View.setTranslationZ()
但不幸的是,这两个属性和方法是自Android API 21以来引入的。因此,您不能在 pre-L 或 API 21- 设备上使用它们。
但是,仍然有一种方法可以自定义视图的阴影和轮廓。
视图的背景可绘制对象的边界决定了其阴影的默认形状。轮廓表示图形对象的外部形状,并定义触摸反馈的波纹区域。
请考虑以下视图,该视图由背景可绘制对象定义:
<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>
视图投射具有圆角的阴影,因为背景可绘制对象定义了视图的轮廓。提供自定义轮廓将覆盖视图阴影的默认形状。
在代码中为视图定义自定义大纲:
ViewOutlineProvider
getOutline()
View.setOutlineProvider()
您可以使用类中的方法创建带有圆角的椭圆形和矩形轮廓。视图的默认大纲提供程序从视图的背景中获取大纲。要防止视图投射阴影,请将其轮廓提供程序设置为 。Outline
null
希望它有所帮助。
P.S.:如果您使用的是Android-design-library,那将是一个好主意。yourAppNs:elevation="4dp"