我想创建一个渐变背景,渐变在上半部分,在下半部分有一个纯色,如下图所示:

我不能,因为中心色展开覆盖底部和顶部。

我如何制作一个像第一张图片一样的背景?我怎么做一个小的中心色,不展开?

这是上面后台按钮的XML代码。

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <gradient 
        android:startColor="#6586F0"
        android:centerColor="#D6D6D6"
        android:endColor="#4B6CD6"
        android:angle="90"/>
    <corners 
        android:radius="0dp"/>


</shape>

当前回答

可视化的例子有助于解决这类问题。

样板

为了创建一个渐变,你在res/drawable中创建一个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"/>

类型=“线性”

设置线性类型的角度。它一定是45度的倍数。

<gradient
    android:type="linear"
    android:angle="0"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

类型=“放射状”

为径向类型设置gradienttradius。使用%p意味着它是父节点最小维度的百分比。

<gradient
    android:type="radial"
    android:gradientRadius="10%p"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

类型=“扫描”

我不知道为什么有人会使用扫描,但我包括它的完整性。我不知道如何改变角度,所以我只包括一张图像。

<gradient
    android:type="sweep"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

中心

还可以更改扫描类型的中心或径向类型。这些值是宽度和高度的分数。您也可以使用%p符号。

android:centerX="0.2"
android:centerY="0.7"

其他回答

可视化的例子有助于解决这类问题。

样板

为了创建一个渐变,你在res/drawable中创建一个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"/>

类型=“线性”

设置线性类型的角度。它一定是45度的倍数。

<gradient
    android:type="linear"
    android:angle="0"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

类型=“放射状”

为径向类型设置gradienttradius。使用%p意味着它是父节点最小维度的百分比。

<gradient
    android:type="radial"
    android:gradientRadius="10%p"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

类型=“扫描”

我不知道为什么有人会使用扫描,但我包括它的完整性。我不知道如何改变角度,所以我只包括一张图像。

<gradient
    android:type="sweep"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

中心

还可以更改扫描类型的中心或径向类型。这些值是宽度和高度的分数。您也可以使用%p符号。

android:centerX="0.2"
android:centerY="0.7"

首先,您需要创建一个gradient.xml,如下所示

<shape>
    <gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" />

    <stroke android:width="1dp" android:color="#343434" />
</shape>

然后你需要在布局的背景中提到上面的渐变。如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/gradient"
    >   
</LinearLayout>

试试这个:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:centerColor="#555994"
        android:endColor="#b5b6d2"
        android:startColor="#555994"
        android:type="linear" />

    <corners 
        android:radius="0dp"/>

</shape>

在可绘制文件夹中使用此代码。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#3f5063" />
    <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="0dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="0dp" />
    <padding
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp" />
    <gradient
        android:angle="45"
        android:centerColor="#015664"
        android:endColor="#636969"
        android:startColor="#2ea4e7" />
    <stroke
        android:width="1dp"
        android:color="#000000" />
</shape>

下面的链接可能会帮助你http://angrytools.com/gradient/ .这将在android中创建自定义渐变背景,就像在photoshop中一样。