2014-01-11 38 views
1

在画布上绘制具有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> 

回答

2

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

您可以通过绘制矩形的方式获得水平和垂直渐变。

你可以看到一个代码示例here

+0

工作很好!谢谢 – industrychanger

1

您可以将XML加载到Drawable,并且具有在画布上绘制:

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

documentation查看详情。