Установить цвет индикатора выполнения программно

Я показываю индикатор выполнения при загрузке файлов. Я хочу установить цвет (цветовой код HTML) прогресса, который поступает с сервера, и может время от времени изменять цветовой код. как мне выполнить требование.

изображение.

Например, для изображения выше я хочу изменить желтый цвет и установить цвет, который приходит на сервер.


person Meher    schedule 18.09.2014    source источник
comment
stackoverflow .com/questions/2020882/   -  person Naveen Tamrakar    schedule 18.09.2014
comment
Проверьте: stackoverflow.com/questions/5745814/   -  person Haresh Chhelana    schedule 18.09.2014
comment
@HareshChhelana Я хочу установить цвет с помощью кода.   -  person Meher    schedule 18.09.2014
comment
@NaveenTamrakar, если использовать colorfilter, цвет установлен, но прогресс не виден. Я тоже пробовал использовать разные режимы.   -  person Meher    schedule 18.09.2014
comment
@ 421 был ли полезен мой пример?   -  person MSA    schedule 18.09.2014
comment
@Meher Почему вы думаете, что в спецификации ProgressBar есть API для программной установки цветов?   -  person IgorGanapolsky    schedule 16.06.2015


Ответы (2)


Итак... Я сделал пример проекта, который меняет цвет прогресса, и вы также можете изменить цвет фонового индикатора выполнения.

Сначала создайте собственный xml-файл индикатора выполнения.

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_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>

Тестовая деятельность:

Важная часть заключается в следующем:

Drawable draw=getResources().getDrawable(R.drawable.custom_progressbar); progressBar.setProgressDrawable(рисовать);

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();

}

И вывод будет таким:

введите здесь описание изображения

Надеюсь, это то, что вы ищете. Ваше здоровье

Для получения дополнительной информации вы найдете это полезным: сообщение о индикаторе выполнения стека

person MSA    schedule 18.09.2014
comment
сначала я попробовал с COLOR.RED. Весь индикатор выполнения красный, и я не могу видеть прогресс. - person Meher; 18.09.2014
comment
Хорошо, я вернусь с образцом примера :) - person MSA; 18.09.2014
comment
Спасибо за ваши усилия. Но этот индикатор выполнения установлен в xml. Как изменить цвет с помощью кода Java. - person Meher; 19.09.2014
comment
Почему вы помещаете <item> без элемента списка слоев? - person IgorGanapolsky; 16.06.2015
comment
Как изменить цвет индикатора выполнения, когда он полностью заполнен? - person Jonathan; 08.07.2020

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

Учебник по настройке ProgressBar

ИЗМЕНИТЬ:

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

person Sagar Pilkhwal    schedule 18.09.2014
comment
если я устанавливаю цвет, цвет полностью заполняется. Невозможно увидеть прогресс. Любая другая точка, которую я пропускаю? - person Meher; 18.09.2014
comment
вы используете progressBar.setProgress(0); ? - person Sagar Pilkhwal; 18.09.2014
comment
Да до начала загрузки. - person Meher; 18.09.2014
comment
я отредактировал свой ответ, вам нужно будет использовать собственный стиль xml - person Sagar Pilkhwal; 18.09.2014
comment
отредактированный ответ выбирается из xml. Что не рекомендуется в моем случае, так как цветовой код будет исходить из xml. - person Meher; 18.09.2014