2015-01-12 59 views
5

有沒有什麼方法可以用這種漸變創建圓?android創建帶漸變的餅圖

enter image description here

據我得到的是這樣的:

<shape 
     android:innerRadiusRatio="3" 
     android:thicknessRatio="10" 
     android:shape="ring"> 
    <gradient 
       android:endColor="@color/cyan_dark" 
       android:startColor="@color/red" 
       android:type="radial" 
       android:gradientRadius="340" 
       android:centerX="50%" 
       android:centerY="0" /> 
</shape> 
+0

什麼是你的實際結果如何呢? – TheRedFox

回答

3

XML

<ProgressBar 
     android:id="@+id/yourId" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="89dp" 
     android:layout_height="89dp" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:max="100" 
     android:progress="70" 
     android:progressDrawable="@drawable/shapering" /> 

形狀環形繪製

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:innerRadiusRatio="3" 
    android:shape="ring" 
    android:thicknessRatio="10" > 

    <gradient 
     android:centerColor="#D6DE47" 
     android:centerX="50%" 
     android:centerY="0" 
     android:endColor="#DE47A7" 
     android:gradientRadius="340" 
     android:startColor="#6D47DE" 
     android:type="sweep" /> 

</shape> 

結果

enter image description here

+0

感謝您的重播,但是,我需要支持100個進度,在您的答案中,如果您將進度更改爲100,則「黃色效果」將顯示在兩側, –

+0

已更新我的答案。 –

+0

謝謝!工作無懈可擊 –

3

使用本

<ProgressBar 
     android:id="@+id/progressWheel" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="152dp" 
     android:layout_height="152dp" 
     android:layout_centerInParent="true" 
     android:progress="100" 
     android:indeterminate="false" 
     android:progressDrawable="@drawable/circular_progress_bar" /> 
在繪製circular_progress_bar

(改變顏色根據您的需要)

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@android:id/progress"> 
    <rotate 
     android:fromDegrees="270" 
     android:toDegrees="270" 
     android:pivotX="50%" 
     android:pivotY="50%" > 
     <shape 
      android:innerRadiusRatio="2.5" 
      android:shape="ring" 
      android:thicknessRatio="25.0" > 
      <gradient 
       android:centerColor="@color/red" 
       android:endColor="@color/gray" 
       android:startColor="@color/gray" 
       android:type="sweep" /> 
     </shape> 
    </rotate> 
</item> 
<item android:id="@android:id/secondaryProgress"> 
    <rotate 
     android:fromDegrees="270" 
     android:toDegrees="270" 
     android:pivotX="50%" 
     android:pivotY="50%" > 
     <shape 
      android:innerRadiusRatio="2.5" 
      android:shape="ring" 
      android:thicknessRatio="25.0" > 
      <gradient 
       android:centerColor="@color/green" 
       android:endColor="@color/green" 
       android:startColor="@color/green" 
       android:type="sweep" /> 
     </shape> 
    </rotate> 
</item> 
</layer-list>  
1

你應該用type = 「掃」 而不是 「放射狀」 創建漸變像o在圖片中。例如:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item> 
    <shape 
     android:innerRadiusRatio="3" 
     android:shape="ring" 
     android:thicknessRatio="7.0"> 
     <gradient 
      android:startColor="#FF0000" 
      android:centerColor="#00FF00" 
      android:endColor="#0000FF" 
      android:type="sweep" /> 
    </shape> 
</item> 

3

使用本

<ProgressBar 
    android:id="@+id/progressWheel" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="152dp" 
    android:layout_height="152dp" 
    android:layout_centerInParent="true" 
    android:progress="100" 
    android:indeterminate="false" 
    android:progressDrawable="@drawable/circular_progress_bar" /> 
在繪製circular_progress_bar

(改變顏色根據您的需要)

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@android:id/progress"> 
<rotate 
    android:fromDegrees="270" 
    android:toDegrees="270" 
    android:pivotX="50%" 
    android:pivotY="50%" > 
    <shape 
     android:innerRadiusRatio="2.5" 
     android:shape="ring" 
     android:thicknessRatio="25.0" > 
     <gradient 
      android:centerColor="@color/red" 
      android:endColor="@color/gray" 
      android:startColor="@color/gray" 
      android:type="sweep" /> 
    </shape> 
</rotate> 
</item> 
<item android:id="@android:id/secondaryProgress"> 
<rotate 
    android:fromDegrees="270" 
    android:toDegrees="270" 
    android:pivotX="50%" 
    android:pivotY="50%" > 
    <shape 
     android:innerRadiusRatio="2.5" 
     android:shape="ring" 
     android:thicknessRatio="25.0" > 
     <gradient 
      android:centerColor="@color/green" 
      android:endColor="@color/green" 
      android:startColor="@color/green" 
      android:type="sweep" /> 
    </shape> 
</rotate> 
</item> 
</layer-list>