34

我尝试使用 GradientDrawable 为某些背景和按钮设置渐变。遗憾的是文档不是很详细。

配置渐变的主要属性是什么?我了解 start 和 endcolor 但其他一些属性可能需要一些解释。

目前我使用图像作为按钮的背景,但在 XML 中定义的可绘制对象会更好。

我试着看起来像这样(这是一个非常浅的渐变):alt text http://janusz.de/~janusz/RedButton.png

4

3 回答 3

48

使用这个 xml 作为 imageview 的背景。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:angle="90" android:startColor="#7c0000" android:endColor="#A71C1C"/>
</shape>

就是这样。

于 2010-04-19T10:21:38.637 回答
41

我将给出与Praveen相同的答案,但也会尝试解释设置。

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
       android:type="linear" 
       android:angle="-90" 
       android:startColor="#7c0000" 
       android:endColor="#A71C1C" />
</shape>

安卓:类型

渐变有 3 种类型,默认的,本题的一种是“线性”。另外两个是“径向”和“扫掠”。

机器人:角度

梯度逆时针旋转,其中 0 为 | 开始颜色 --> 结束颜色 | (水平)。

安卓:开始颜色

渐变开始的颜色,开始由旋转定义。

安卓:结束颜色

颜色渐变结束,结束由旋转定义。

安卓:中心颜色

如果需要,在开始颜色和结束颜色之间也可以有一种颜色。

于 2013-01-16T23:11:19.340 回答
7

在此处输入图像描述

代码

我最初发现这个问题是因为我想用代码来做。以下是如何以编程方式进行操作。

int startColor = 0xfff6ee19; // yellow
int endColor = 0xff115ede;   // blue
GradientDrawable gradientDrawable = new GradientDrawable(
        GradientDrawable.Orientation.LEFT_RIGHT,
        new int[] {startColor, endColor});

View myView = findViewById(R.id.my_view);
myView.setBackgroundDrawable(gradientDrawable);

可以通过改变Orientation构造函数中的 来实现顶部图像中的不同方向。

XML

正如已经回答的那样,这就是您在 xml 中执行此操作的方式。

my_gradient_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:type="linear"
        android:angle="0"
        android:startColor="#f6ee19"
        android:endColor="#115ede" />
</shape>

您将其设置为某个视图的背景。例如:

<View
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:background="@drawable/my_gradient_drawable"/>

也可以看看

于 2017-07-17T04:38:27.527 回答