带有彩虹渐变的android按钮

时间:2013-02-11 16:01:31

标签: android layout button gradient

我想制作一个填充超过3种颜色的按钮,比如7色彩虹,从左边开始=红色到右边=紫色。

但我发现以下代码只能满足3种颜色。

问题:

有没有办法生成彩虹渐变?我手上有一个Rainbow.png,会用到吗?谢谢!

当前代码:

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

    <item android:state_pressed="true" >         
        ...   
    </item>

    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
            <stroke android:width="0dp" android:color="@color/black" />
            <gradient
                android:startColor="@color/red"
                android:centerColor="@color/green"
                android:endColor="@color/purple"
                android:angle="0" />
            <padding android:left="5dp" android:top="2dp" 
                android:right="5dp" android:bottom="2dp" /> 
            <corners android:radius="0dp" /> 
        </shape>
    </item>

</selector>

答案:

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

    <item android:state_pressed="true" >         
        <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
            <stroke android:width="0dp" android:color="@color/black" />
            <solid android:color="@color/grey"/>
            <padding android:left="5dp" android:top="2dp" 
                android:right="5dp" android:bottom="2dp" /> 
            <corners android:radius="0dp" /> 
        </shape>    
    </item>

    <item android:drawable="@drawable/rainbow" >
        <shape xmlns:android="http://schemas.android.com/apk/res/android"> 

            <padding android:left="5dp" android:top="2dp" 
                android:right="5dp" android:bottom="2dp" /> 
            <corners android:radius="0dp" /> 
        </shape>
    </item>

</selector>

1 个答案:

答案 0 :(得分:-1)

Android内置了9-patch system来处理复杂的图形,其风格与绘制某些网站背景的方式类似。

Android也有自己的9-patch creator与sdk捆绑在一起,所以很容易编辑你的png文件,然后将9补丁应用到按钮。

这将允许您使用您的png,它会根据您定义的图形的可伸展区域调整大小,以便在按钮调整大小时调整大小