我试图实现一个组件来为按钮或其他组件制作自定义阴影,我知道使用9patch或带阴影的png会更容易,但我想在程序上以其状态更改颜色和大小(按下等),所以我决定试用9张图片,所有这些都是用XML格式设置的,所以阴影色调从组件的一侧开始渐变。
<!-- Left Shadow layer -->
<item>
<shape android:shape="rectangle" >
<gradient
android:angle="0"
android:endColor="#FFFF0000"
android:startColor="#00FF0000" />
</shape>
</item>
它看起来不错,问题是在角落和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>
那就是我现在的地方:(我不知道如何设置这个大小以适应其父视图。
任何帮助将不胜感激,当我完成组件我将把代码放在答案:)所以典型的按钮可以在xml中具有可自定义的阴影。
应得组件的图像。
- 编辑 -
我仍然对此感兴趣:)没有人知道吗?
答案 0 :(得分:2)
我认为你应该放弃xml并在代码中实现drawable。 扩展Drawable类时,可以使用getBounds()将大小设置为矩形。您还可以在onBoundsChange方法中动态重新计算。 您还可以轻松地构建渐变并在Paint对象(setShader方法)中使用它们