Android L L前高程效果是怎样的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我正在开发一个应用程序,并且希望在Pre L API中有一个提升效果ImageView或任何View(!CardView支持库)。但我无法实现,我尝试使用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>

为代码中的视图定义自定义大纲:

  1. 扩大ViewOutlineProvider班级。
  2. 覆盖该getOutline()方法。
  3. 使用该View.setOutlineProvider()方法将新的大纲提供程序分配给您的视图 。

你可以使用Outline类中的方法创建具有圆角的椭圆形和矩形轮廓。视图的默认大纲提供程序从视图的背景中获取大纲。要阻止视图投射阴影,请将其大纲提供者设置为null。

用户回答回答于
  • ViewCompat.setElevation()/ getElevation()不适用于前Lollipop
  • 没有什么值得在支持库检查的,至少在版本21.1.1之前 。

扫码关注云+社区