2014-01-11 3 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.

Смежные вопросы