Set Progress bar progress color programatically

时光毁灭记忆、已成空白 提交于 2020-01-07 05:28:07

问题


I am showing the progress bar while downloading files.I want to set the color(HTML color code) of the progress which comes from the server and may vary the color code time to time. how do i meet the requirement.

.

For example for the above image i want to change yellow color and set the color which comes server.


回答1:


So...I made a sample project that changes the progress color and you also can change the background progress bar color.

First create a custom progress bar xml file.

custom_progressbar.xml

<!-- Define the background properties like color etc -->
<item android:id="@android:id/background">
    <shape>
        <gradient
            android:startColor="#000001"
            android:centerColor="#0b131e"
            android:centerY="1.0"
            android:endColor="#0d1522"
            android:angle="270"
            />
    </shape>
</item>

<!-- Define the progress properties like start color, end color etc -->
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <gradient
                android:startColor="#2A98E1"
                android:centerColor="#2A98E1"
                android:centerY="1.0"
                android:endColor="#06101d"
                android:angle="270"
                />
        </shape>
    </clip>
</item>

Activity Layout:

activity_my.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="horizontal"
tools:context=".MyActivity">


<ProgressBar
    android:id="@+id/myProgress"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_weight="0.7"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/progressTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:text="None"/>

</LinearLayout>

The test activity:

The important part is this:

Drawable draw=getResources().getDrawable(R.drawable.custom_progressbar); progressBar.setProgressDrawable(draw);

MyActivity.java

private ProgressBar progressBar;
private Handler handler = new Handler();
private int progressStatus = 0;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);



    init();
    initProgresBar();

}


public void init(){

    textView = (TextView) findViewById(R.id.progressTextView);
    progressBar = (ProgressBar) findViewById(R.id.myProgress);
    Drawable draw=getResources().getDrawable(R.drawable.custom_progressbar);
     // set the drawable as progress drawable
    progressBar.setProgressDrawable(draw);

}

public void initProgresBar(){
    new Thread(new Runnable() {
        public void run() {
            while (progressStatus < 100) {
                progressStatus += 1;
                // Update the progress bar and display the

                //current value in the text view
                handler.post(new Runnable() {
                    public void run() {
                        progressBar.setProgress(progressStatus);
                        textView.setText(progressStatus+"/"+progressBar.getMax());
                    }
                });
                try {
                    // Sleep for 200 milliseconds.

                    //Just to display the progress slowly
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();

}

And the output will be this:

Hope this is what you where looking for. Cheers

For more info you will find this usefull: stack progress bar post




回答2:


progressBar.getProgressDrawable().setColorFilter(Color.parseColor("#YourColorHex"), Mode.SRC_IN);

Tutorial for Customizing ProgressBar

EDIT:

http://miroprocessordev.blogspot.in/2012/09/android-how-to-change-progress-bar.html



来源:https://stackoverflow.com/questions/25911185/set-progress-bar-progress-color-programatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!