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

페인트 요소에 선형 그래디언트로 셰이더를 만든 다음 캔바스에 사각형을 그려야합니다.

사각형을 그리는 방법에 따라 가로 및 세로 그라디언트를 가질 수 있습니다.

코드 예를 볼 수 있습니다. here

+0

훌륭한 작업을! 감사 – industrychanger

1

당신은 Drawable로 XML을로드하고 그 캔버스에 그릴 수 있습니다 :

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

documentation에서 자세한 내용을 참조하십시오.