Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在画布上绘制渐变形状_Android_Xml_Android Canvas - Fatal编程技术网

Android 在画布上绘制渐变形状

Android 在画布上绘制渐变形状,android,xml,android-canvas,Android,Xml,Android Canvas,在画布上绘制一个具有1种基本颜色的矩形很容易。但是,我需要能够绘制一个渐变形状,渐变从一种颜色开始,然后均匀地移动到另一种颜色 我习惯于使用xml文件绘制渐变背景。在画布上绘制形状时,是否有方法引用xml文件?还是有更好的方法来绘制渐变形状 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <

在画布上绘制一个具有1种基本颜色的矩形很容易。但是,我需要能够绘制一个渐变形状,渐变从一种颜色开始,然后均匀地移动到另一种颜色

我习惯于使用xml文件绘制渐变背景。在画布上绘制形状时,是否有方法引用xml文件?还是有更好的方法来绘制渐变形状

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <layer-list>
            <item>
                <shape>
                     <!--  Gradient Bg for Button -->
                     <gradient
                          android:startColor="@color/button_type1_pushed"
                          android:endColor="@color/button_type1_pushed"
                          android:angle="270" />
                     <stroke
                          android:width="0.05dp"
                          android:color="@color/button_type1_border"/>
                </shape>
            </item>
        </layer-list>
    </item>

    <item android:state_enabled="true">
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <gradient
                         android:startColor="@color/button_type1_normal"
                         android:endColor="@color/button_type1_normal"
                         android:angle="90" />
                    <stroke
                         android:width="0.05dp"
                         android:color="@color/button_type1_border"/>    
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

您可以将xml加载到可绘制的
中,并在画布上绘制:

Drawable drawable = context.getResources().getDrawable(R.drawable.your_drawable);
drawable.draw(canvas);

有关详细信息,请参见。

您可以将xml加载到可绘制的
中,并在画布上绘制:

Drawable drawable = context.getResources().getDrawable(R.drawable.your_drawable);
drawable.draw(canvas);

有关详细信息,请参见。

您必须在paint元素中创建一个着色器作为LinearGradient,然后在画布中绘制一个矩形

通过绘制矩形的方式,可以有水平和垂直渐变


您可以看到一个代码示例

您必须在paint元素中创建一个着色器作为LinearGradient,然后在画布中绘制一个矩形

通过绘制矩形的方式,可以有水平和垂直渐变

您可以看到一个代码示例