Vla*_*nov 6 android gradient blur dropshadow
我需要在我的按钮上添加模糊的阴影:
我尝试使用layer-list xml drawable创建背景,但它看起来不像模糊.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Drop Shadow Stack -->
<item>
<shape>
<corners android:radius="45dp" />
<padding
android:bottom="2dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<stroke
android:width="6dp"
android:color="#007879E8" />
</shape>
</item>
////// 10 more items
<item>
<shape>
<corners android:radius="45dp" />
<padding
android:bottom="2dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<stroke
android:width="6dp"
android:color="#177879E8" />
</shape>
</item>
<!-- Background -->
<item>
<shape>
<corners android:radius="45dp" />
<stroke
android:width="2dp"
android:color="@color/main_purple_text_color" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
此外,我试图使用背景元素隐藏按钮与blured png但它使用了很多资源,我不能创建选择器来改变悬停或点击背景.
我需要为按钮设置单个背景文件,并使用选择器在悬停/单击时更改模糊和渐变.有任何想法如何用Android SDK实现这样的效果?
更新1
谢谢大家的答案,但我不是在问如何创建渐变.我已经这样做了.我需要创建模糊的阴影.
Vla*_*nov 15
我找到了解决方案:我们需要通过此生成器创建带有模糊阴影的9.png,并将其传递给包含按钮背景渐变的可绘制图层列表:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/blurred_9_path_png" />
<item>
<shape android:shape="rectangle" android:padding="10dp">
<corners android:radius="45dp" />
<gradient
android:angle="45"
android:endColor="@color/facebook_btn_fill_grad2"
android:startColor="@color/facebook_btn_fill_grad1"
android:type="linear" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
之后我们可以使用具有不同9.path模糊阴影的这种drawable来创建选择器.
我将其添加为背景可绘制(灰色阴影):
<!-- Drop Shadow Stack -->
<item>
<shape>
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="#1f000000" />
<corners android:radius="30dp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="#2f000000" />
<corners android:radius="30dp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<solid android:color="#3f000000" />
<corners android:radius="30dp" />
</shape>
</item>
<!-- Background -->
<item>
<shape>
<solid android:color="@android:color/white" />
<corners android:radius="30dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
确保 textview 的高度/宽度/填充足够大以包含以上阴影 3dp(从 #3f000000 到 #1f000000 的所有颜色为 1dp+1dp+1dp)。
| 归档时间: |
|
| 查看次数: |
16798 次 |
| 最近记录: |