【问题标题】:Android | JAVA | How to add a shadow to vector?安卓 |爪哇 |如何为矢量添加阴影?
【发布时间】:2021-04-24 10:27:47
【问题描述】:

我有一个 svg 矢量文件。我怎样才能给它添加彩色阴影。我对 google 和 stackoverflow 进行了研究,但看起来它不适用于我的情况。

SVG XML

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="50dp"
    android:height="50dp"
    android:viewportWidth="35"
    android:viewportHeight="35">
  <path
      android:pathData="M18.5,18.5m-12.5,0a12.5,12.5 0,1 1,25 0a12.5,12.5 0,1 1,-25 0"
      android:fillColor="@color/green"/>
</vector>

里面的代码 activity_main.xml

<ImageView
        android:id="@+id/green"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:src="@drawable/ic_green_light" />

我找不到简单甚至可行的方法来为其添加阴影。

我想添加这样的阴影..

注意:ImageView 的高程不起作用。

【问题讨论】:

    标签: android imageview shadow android-vectordrawable


    【解决方案1】:

    我不确定阴影是否适用于矢量。计算所有正在投射的阴影可能很复杂。相反,您应该创建阴影形状的背景:

    drawable/background.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="oval">
                <solid android:color="@color/green" />
            </shape>
        </item>
    </layer-list>
    

    1) 海拔

    当使用高程时,Android 会自动渲染阴影。 android:elevation="16dp ImageView 应该可以解决问题。

    <ImageView
        android:id="@+id/green"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:elevation="16dp"
        android:background="@drawable/background"
        android:src="@drawable/ic_green_light" />
    

    注意:

    海拔越高,阴影越大,越模糊。

    使用较低的高度,会产生更小但更粗糙的阴影。

    为了控制颜色,您可以在 API28+ 上使用这些:

    android:outlineAmbientShadowColor="#ff0000" // api 28+ only
    android:outlineSpotShadowColor="#ff0000" // api 28+ only
    

    2) 阴影

    另一种选择是使用:

    android:shadowColor="@color/almost_black"
    android:shadowDx="1.5f"
    android:shadowDy="1.5f"
    android:shadowRadius="12f"
    

    以获得更多控制权。但这可能需要一个 TextView。

    3) 改变向量

    如果这一切都失败了,您应该考虑自己创建阴影作为矢量的一部分

    【讨论】:

    • 我把这些android:shadowColor ="@color/almost_black"这些选项放在哪里?它似乎无处可寻。不在我的矢量内,不在任何形状 xml 内,也不在 imageview 内。
    猜你喜欢
    • 2019-01-03
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    相关资源
    最近更新 更多