如何更改在android活动中使用“android:state_pressed”动态更改可绘制渐变开始颜色和结束颜色

时间:2016-10-07 06:07:38

标签: android gradient android-xml

我有三个XML文件。首先,两个是我正在应用一些渐变开始颜色,结束颜色,第三个是我正在检查按下状态(更改Bg时为true或false)。如何更改前两个XML渐变起始颜色,动态结束颜色(1.blue_rounded_bg和2.gray_rounded_bg),动态起始颜色和结束颜色反映在我的第三个文件中(按下状态检查-3,blue_btn)?

第一个XML文件:蓝色Bg(文件名:blue_rounded_bg)

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

<corners
    android:bottomLeftRadius="@dimen/size25"
    android:bottomRightRadius="@dimen/size25"
    android:topLeftRadius="@dimen/size25"
    android:topRightRadius="@dimen/size25" />
<padding
    android:bottom="@dimen/size5"
    android:left="@dimen/size5"
    android:right="@dimen/size5"
    android:top="@dimen/size5" />

<solid android:color="@color/btn_gray" />
<gradient
    android:angle="270"
    android:startColor="@color/btn_blue"
    android:endColor="@color/btn_light_blue"
    android:type="linear" />

第二个XML文件:灰色Bg(文件名:gray_rounded_bg)

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

<corners
    android:bottomLeftRadius="@dimen/size25"
    android:bottomRightRadius="@dimen/size25"
    android:topLeftRadius="@dimen/size25"
    android:topRightRadius="@dimen/size25" />
<padding
    android:bottom="@dimen/size5"
    android:left="@dimen/size5"
    android:right="@dimen/size5"
    android:top="@dimen/size5" />

<solid android:color="@color/btn_gray" />

第三个XML文件:我正在使用下面的代码(文件名:blue_btn)检查按下状态

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

<item android:drawable="@drawable/gray_rounded_bg" android:state_pressed="true" />
<item android:drawable="@drawable/gray_rounded_bg" android:state_enabled="false" />
<item android:drawable="@drawable/blue_rounded_bg" />

我的普通XML代码

 <Button
        android:id="@+id/cont_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/blue_btn"
        android:padding="@dimen/size6" />

然后,如何更改可绘制渐变开始颜色,动态结束颜色以及

中反映的更改
<item android:drawable="@drawable/gray_rounded_bg" android:state_pressed="true" />

这个文件呢?它可能与否?

XML file one shows like that-Blue color XML file two shows like that-Gray color

1 个答案:

答案 0 :(得分:2)

试试这个,使用GradientDrawable来做到这一点。

int colors[] = { 0xff255779, 0xffa6c0cd };

GradientDrawable gradientDrawable = new GradientDrawable(
        GradientDrawable.Orientation.TOP_BOTTOM, colors);

view.setBackgroundDrawable(gradientDrawable);

根据您的要求更改颜色代码。虽然我使用了Color.parseColor(&#34;颜色代码&#34;),但它不起作用。

如下所示,Orientation有一些选项。

GradientDrawable.Orientation.BOTTOM_TOP;
GradientDrawable.Orientation.LEFT_RIGHT;
GradientDrawable.Orientation.RIGHT_LEFT;