如何添加渐变颜色。 XML

时间:2016-02-19 08:51:30

标签: android android-xml android-color

我正在使用图书馆。我正在展示我的库所使用的活动,我正在使用一种颜色来掩盖屏幕的颜色。看起来很酷。

但由于某些原因,我决定使用渐变。我已经开发了漂亮的渐变效果,如下所示

<?xml version="1.0" encoding="UTF-8"?>

    <gradient
        android:angle="90"
        android:endColor="#555994"
        android:centerColor="#b5b6d2"

        android:startColor="#555994"
        android:type="linear" />

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

</shape>
它看起来不错。但问题是我使用的库只接受颜色或颜色资源。我没有其他方法可以改变,库正在显示它自己的活动,我只需要传递将出现在活动上的颜色。

现在我的问题是:

  

我可以直接在color.xml文件中定义渐变颜色。或者是   有没有办法转换可绘制的渐变颜色文件   ,可以选择颜色。这样,图书馆可以应用我的自定义   渐变色作为背景

请帮帮我。这将是一个帮助。

编辑1:

对于那些说我要将其添加为图片背景或任何其他内容的人,让我分享一下该行的一小部分,以便您更清楚地了解案例

.withColorResource(R.color.indigo)

这里我引用了Color.xml中定义的紫色,我可以将任何东西设置为背景,因为库只能让我选择如上所示设置颜色。 所以我已经绘制了渐变色,现在我想要如何将渐变作为颜色引用。

5 个答案:

答案 0 :(得分:1)

按钮的示例。 这是可绘制的资源,my_button_gradient.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <gradient
                android:angle="180"
                android:centerColor="@color/flat_silver_sand"
                android:endColor="@color/flat_white_smoke"
                android:startColor="@color/flat_white_smoke" />
        </shape>
    </item>
</layer-list>

如果你想使用选择器; btnselector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/transparent_black_10" android:state_focused="true" android:state_pressed="false" />
    <item android:drawable="@drawable/my_button_gradient" android:state_focused="true" android:state_pressed="true" />
    <item android:drawable="@drawable/my_button_gradient" android:state_focused="false" android:state_pressed="true" />
</selector>

layout.xml;

...

 <Button
 android:id="@+id/btn"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_alignParentEnd="true"
 android:layout_alignParentRight="true"
 android:layout_alignParentTop="true"    
 android:background="@drawable/btnselector" 
 android:textColor="#34495E"
               />

您可以为您的图像编写这样的代码。这可能对你有帮助。

答案 1 :(得分:0)

您只需创建一个可绘制资源(请参阅下面的示例),并将其添加到您创建的布局中

android:background="@drawable/grad"

请检查gradient background答案以及similar gradient effect

答案 2 :(得分:0)

  

但问题是我使用的库只接受颜色或   色彩资源。

正如其他人所述,从渐变中创建资源并使用透明背景颜色背后图像。 使用RelativeLayout或FrameLayout堆叠视图。

答案 3 :(得分:0)

您可以在onCreate()方法中使用btnSubmit.setBackgroundResource(R.drawable.button_gradient)。

答案 4 :(得分:0)

Android中的颜色表示为Int(我不是说R.color.whiteInt-这只是颜色资源的ID),它只是普通颜色的数字表示十六进制颜色,例如#f00-> 0xFFFF0000。这意味着无法将渐变表示为单色资源。

TLDR:渐变不是颜色,而是带有角度的颜色集。