2016-04-06 12 views
0

AndroidでカスタムProgressBarsを操作するときにいくつか問題があります。つまり、正しいProgressBarの2つの.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> 
    

これらのカスタムプログレスバーは、背景色とシェイプラインの色が異なります。

ここで、Androidアプリケーション(Javaコード)からこれら2つの.xmlファイル(ProgressBarデザイン)を切り替える最も良い方法は何ですか?実際には、アプリ画面のボタンが押されたときにProgressBarのデザインを切り替えたいと思います。

2つのProgressBarインスタンスを上下に配置し、それらの可視性を変更する必要がありますか(1つのProbeBarインスタンスを非表示にするか、その逆の設定にするか)、単一のProgressBarインスタンスで操作するほうが賢明ですか?

EDIT:

アプローチはhereを説明するために、私は知っています。ユーザーは、次のアプローチを使用して現在の進行状況値に基づいて、プログレスバーの三つの異なる.xmlファイルの説明の間を選択:

<?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ファイルを現在の進捗値で変更したくないということです。私はProgressBarデザインをボタンを押すだけで変更できるようにしたい。 android:maxLevel="xxxx"セレクターは、trueまたはfalseの値を取ることができるものに変更する必要があります。このtrue/falseの値をボタンを押すことでトグルします。

アドバイスをいただければ幸いです。

ありがとうございました。

よろしくお願いいたします。 Bojan。

答えて

0

コードProgressBarsetProgressDrawable()と電話するだけで、2つのプログレスバーは必要ありません。

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