2016-04-06 166 views
0

我在使用Android自定義ProgressBars時遇到了一些困難。也就是說,我有兩個正確的自定義ProgressBar的.xml描述。 在這裏,他們是:Android自定義進度條操作

  1. custom_progress_bar_horizo​​ntal.xml:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!-- @author : @ 
    
    --> 
    <layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
        android:id="@android:id/background"> 
        <shape> 
         <corners 
          android:radius="0dip" /> 
         <stroke 
          android:width="1dp" 
          android:color="#ff000000" /> 
         <gradient 
          android:startColor="#ffEEEEEE" 
          android:centerColor="#ffEEEEEE" 
          android:centerY="0.50" 
          android:endColor="#ffEEEEEE" 
          android:angle="270" /> 
        </shape> 
    </item> 
    
    <item 
        android:id="@android:id/progress"> 
        <clip> 
         <shape> 
          <corners 
           android:radius="0dip" /> 
          <stroke 
           android:width="1dip" 
           android:color="#ff000000" /> 
          <gradient 
           android:startColor="#ff86CF10" 
           android:endColor="#ff86CF10" 
           android:angle="90" /> 
         </shape> 
        </clip> 
    </item> 
    

  2. custom_progress_bar_hor_night.xml:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!-- @author : @ 
    
    --> 
    <layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
        android:id="@android:id/background"> 
        <shape> 
         <corners 
          android:radius="0dip" /> 
         <stroke 
          android:width="1dp" 
          android:color="#ffffffff" /> 
         <gradient 
          android:startColor="#ff000000" 
          android:centerColor="#ff000000" 
          android:centerY="0.50" 
          android:endColor="#ff000000" 
          android:angle="270" /> 
        </shape> 
    </item> 
    
    <item 
        android:id="@android:id/progress"> 
        <clip> 
         <shape> 
          <corners 
           android:radius="0dip" /> 
          <stroke 
           android:width="1dip" 
           android:color="#ffffffff" /> 
          <gradient 
           android:startColor="#ff86CF10" 
           android:endColor="#ff86CF10" 
           android:angle="90" /> 
         </shape> 
        </clip> 
    </item> 
    

如您所見,這些自定義ProgressBars僅在背景顏色和形狀線的顏色方面有所不同。

現在,從Android應用程序(java代碼)切換這兩個.xml文件(ProgressBar設計)的最佳方式是什麼?實際上,我想在按下應用程序屏幕上的按鈕時切換ProgressBar設計。

我應該將兩個ProgressBar實例放在另一個上面並更改它們的可見性(一個可見的其他不可見反之亦然),還是有更智能的方法來處理單個ProgressBar實例?

編輯:

我知道的方法描述here

<?xml version="1.0" encoding="utf-8"?> 
<level-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:maxLevel="2999" android:drawable="@drawable/progress_horizontal_red" /> 
    <item android:maxLevel="4999" android:drawable="@drawable/progress_horizontal_yellow" /> 
    <item android:maxLevel="10000" android:drawable="@drawable/progress_horizontal_green" /> 
</level-list> 

我想達到的相當類似的事情:用戶根據使用以下方法當前進度值進度條的三種不同的.xml描述之間進行選擇。唯一的區別是我不希望當前的進度值改變我在屏幕上可見的.xml文件。我希望能夠通過按下按鈕來改變ProgressBar設計。 我覺得android:maxLevel="xxxx"選擇器應該改變一些可以採取truefalse值的東西。按下按鈕即可切換此true/false值。

任何意見將不勝感激。

非常感謝您的時間和精力。

此致, 博揚。

回答

0

您可以在代碼中簡單地撥打setProgressDrawable()您的ProgressBar,並且不需要兩個進度條。

progressBar.setProgressDrawable(context.getResources().getDrawable(R.drawable.custom_progress_bar_horizontal)); 

progressBar.setProgressDrawable(context.getResources().getDrawable(R.drawable.custom_progress_bar_hor_night)); 
+0

就在中心,隊友!這正是我所期待的。你爲我創造了一天,爲我節省了很多時間。謝謝! – bojankoce