具有父级大小的XML中的径向渐变

时间:2012-05-23 16:16:02

标签: 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>

它看起来不错,问题是在角落和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中具有可自定义的阴影。

应得组件的图像。

- 编辑 -

我仍然对此感兴趣:)没有人知道吗?

Button with radia gradients

1 个答案:

答案 0 :(得分:2)

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