Goo*_*ead 7 android android-layout android-xml
我试图实现一个组件来为按钮或其他组件制作自定义阴影,我知道使用9patch或带有阴影的png会更容易,但我想在其状态下以编程方式更改颜色和大小(按下,等等,所以我决定尝试9个图像,全部是XML格式,所以阴影色调从组件的一侧开始渐变.
<!-- Left Shadow layer -->
<item>
<shape android:shape="rectangle" >
<gradient
android:angle="0"
android:endColor="#FFFF0000"
android:startColor="#00FF0000" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
它看起来很好,问题是在角落和android:gradientRadius参数现在它设置为固定大小,但在上下文帮助据说可以设置为基本大小10%或父级大小10%的百分比p,我想要它设置一个100%的半径,所以渐变总是从主颜色开始,然后消失在正方形的边缘.
- 编辑 -
关于gradientRadius gradientRadius的android文档
<shape android:shape="rectangle" >
<gradient
android:endColor="#00FF0000"
android:startColor="#FFFF0000"
android:gradientRadius="18"
android:centerX="100%"
android:centerY="100%"
android:type="radial" />
</shape>
Run Code Online (Sandbox Code Playgroud)
那就是我现在:(我不知道如何设置这个大小以适应其父视图.
任何帮助将不胜感激,当我完成组件我将把代码放在答案:)所以典型的按钮可以在xml中具有可自定义的阴影.
应得组件的图像.
- 编辑 -
我仍然对此感兴趣:)没有人有线索?

我认为你应该放弃 xml 并在代码中实现drawable。当您扩展 Drawable 类时,您可以使用 getBounds() 获取矩形大小。您还可以在 onBoundsChange 方法中动态重新计算。您还可以轻松构造渐变并在 Paint 对象中使用它们(setShader 方法)