2016-08-04 2 views
0

Я хочу настроить индикатор выполнения в android (@android:style/Widget.DeviceDefault.ProgressBar) таким образом, чтобы он менял цвет (например, он будет красным для первого вращения, затем синего, затем желтого и т. Д.). Прочитали некоторые вещи в Интернете и попытались использовать анимационный список, но это не сработало. Любые идеи о том, как достичь этого?Добавить анимацию на индикатор выполнения android

ответ

0

В новых версиях Android (API 21+) вы можете изменить цвет программно.

Я хотел бы использовать countdownTimer, это, вероятно, не самый лучший способ, но это его, как я хотел бы сделать это: P:

//In the public class, make a variable which can simply be an int 
int colorCode = 0; 


//then you put this code where your progress bar starts... 

new CountdownTimer(3000,1000){ 
public void onTick(long millisUntilDone){ 

if(colorCode == 0){ 

colorCode = 1; 

}else if(colorCode == 1){ 

colorCode = 2; 

}else { 

colorCode = 0; 

} 

if(colorCode == 0){ 
//To set it red, use: 

//bar is a ProgressBar 
bar.setProgressTintList(ColorStateList.valueOf(Color.RED)); 

}else if(colorCode == 1){ 

//To set it blue, use: 

//bar is a ProgressBar 
bar.setProgressTintList(ColorStateList.valueOf(Color.BLUE)); 

}else { 

To set it green, use: 

//bar is a ProgressBar 
bar.setProgressTintList(ColorStateList.valueOf(Color.GREEN)); 

} 

} 


public void onFinish(){ 

//you don't have to set it to do anything... 

} 

}.start(); 

для API 16+ Я думаю, что это будет работать лучше:

Drawable drawable = progressBar.getProgressDrawable(); 
drawable.setColorFilter(new LightingColorFilter(0xFF000000, customColorInt)); 

Просто используйте это в любом месте, где бы вы использовали:

bar.setProgressTintList(ColorStateList.valueOf(Color.GREEN)); 
+0

ок спасибо, я мог бы попробовать сделать такую ​​вещь ... но нужно будет фи nd решение для более низких aPIs (необходимо поддерживать 16+). Я думал, что, возможно, есть более простой способ достичь непосредственно в xml-файлах – Lalilalu

+0

Надеюсь, это поможет: D –

Смежные вопросы