以编程方式设置进度条进度颜色 [英] Set Progress bar progress color programatically
问题描述
我在下载文件时显示进度条.我想设置来自服务器的进度颜色(HTML颜色代码),并且可能会不时更改颜色代码. 我如何满足要求.
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.
推荐答案
所以...我制作了一个示例项目,该项目可以更改进度颜色,还可以更改背景进度栏颜色.
So...I made a sample project that changes the progress color and you also can change the background progress bar color.
首先创建一个自定义进度条xml文件.
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_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(draw);
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();
}
输出将是这样:
希望这是您要寻找的东西.干杯
Hope this is what you where looking for. Cheers
有关更多信息,您会发现此有用:堆栈进度栏文章
For more info you will find this usefull: stack progress bar post
这篇关于以编程方式设置进度条进度颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!