7

我试图实现一个组件来为按钮或其他组件制作自定义阴影,我知道使用 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%p 的半径,这样渐变总是会从主色开始消失在正方形的边缘。

- 编辑 -

关于 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 中具有可自定义的阴影。

应得组件的图像。

- 编辑 -

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

具有辐射渐变的按钮

4

1 回答 1

2

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

于 2012-08-24T10:48:21.197 回答