【问题标题】:Android L Elevation Effect in Pre L (only using elevation property)Pre L中的Android L Elevation Effect(仅使用elevation属性)
【发布时间】:2014-12-15 13:54:12
【问题描述】:

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

我找不到任何 API,如果有人指出在 Pre L 中实现此目的的任何文档或支持库中的任何 sn-p,我们将不胜感激。

【问题讨论】:

  • 高程不适用于 pre L.
  • 我在这里读到“您也可以使用 getElevation()/setElevation() 从代码中设置它(在 ViewCompat 中使用垫片)”:android-developers.blogspot.de/2014/10/…
  • @AdrianoCelentano 没错,但它对 5.0 之前的设备没有影响
  • yourAppNs:elevation="4dp" 会好的

标签: java android android-5.0-lollipop


【解决方案1】:

如果您想设置 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

希望对您有所帮助。

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

【讨论】:

  • 您是否导入了 android-design-library 并在您的根视图上设置了 xmlns:yourAppNs="http://schemas.android.com/apk/res-auto"
  • 当然可以,但它对我的视图没有任何影响,所以我使用 ViewCompat.setElevation(myView, 5) 从 java 代码中解决了这个问题
  • ViewCompat.setElevation(myView, 5) 效果好吗?
【解决方案2】:
  • ViewCompat.setElevation()/getElevation() 在 Lollipop 之前不起作用。
  • 至少在 21.1.1 版之前,支持库中没有任何值得检查的内容
  • 至于自己制作立面效果 看一眼 this

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 2021-08-31
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多