Android | JAVA |如何给矢量图添加阴影?
Android | JAVA | How to add a shadow to vector?
我有一个 svg 矢量文件。我怎样才能给它添加 colored shadow。我对 google 和 Whosebug 进行了研究,但看起来它在我的情况下不起作用。
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 上的高度不起作用。
我不确定阴影是否适用于矢量。计算所有投射的阴影可能很复杂。相反,您应该创建一个阴影形状的背景:
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) 改变向量
如果这一切都失败了,您应该考虑自己创建阴影作为 Vector 的一部分
我有一个 svg 矢量文件。我怎样才能给它添加 colored shadow。我对 google 和 Whosebug 进行了研究,但看起来它在我的情况下不起作用。
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 上的高度不起作用。
我不确定阴影是否适用于矢量。计算所有投射的阴影可能很复杂。相反,您应该创建一个阴影形状的背景:
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) 改变向量
如果这一切都失败了,您应该考虑自己创建阴影作为 Vector 的一部分