我显示以下ProgressBar
:
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:padding="3dp"
android:max="100"
android:progressDrawable="@drawable/progress_bar_states"
android:layout_marginTop="10dp"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminateOnly="false"
android:layout_below="@id/action" />
看起来像this,
如何实现?
答案 0 :(得分:0)
请参阅Android文档LINK
1)您需要在Activity onCreate(...)中定义您的进度条
ProgressBar progress =(ProgressBar)findViewBtId(R.id.progress_bar);
2)更新进度使用setProgress(int)方法(示例)
for (int i=0; i<100; i++)
{
progress.setProgress(i);
Thread.sleep(1000);
}
3)如果你想要显示只有42%使用它:
progress.setProgress(42);
4)然而,这种展示的价值是什么?使用的进度与AsyncTask doInBackground(),publishProgress()和onProgressUpdate()LOOK LINK结合使用
5)如果你想使用xml显示42% - 只需定义标签android:progress="42"
已更新 - 为了同时显示动画和数字的进展,我已经通过下一个代码实现了:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
text = (TextView) findViewById(R.id.textView1);
MyTask task = (MyTask) new MyTask().execute();
}
private class MyTask extends AsyncTask <Void, Integer, Void>
{
@Override
protected void onPreExecute()
{
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected Void doInBackground(Void... params)
{
for (int i=0; i<100; i++)
{
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values)
{
progressBar.setProgress(values[0]);
text.setText(progressBar.getProgress() + "/100");
}
}
答案 1 :(得分:0)
这是我的方法。在XML文件中,您有进度条。在目标进度条下添加TextView。
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="290dp"
android:layout_height= "26dp"
android:id="@+id/pbarProgreso"
android:layout_marginTop="15dp"
android:layout_marginStart="10dp"
**android:max="100"**/>
您可以在xml文件中或在侦听器声明中设置条形码的最大值...是您的选择。在进度条下添加TextView非常容易。您可以在onCreate方法中强制转换textView,并使用实际进度和最大进度的值设置视图:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView progressText = ((TextView) findViewById(R.id.textView));
pbarProgreso = (ProgressBar) findViewById(R.id.pbarProgreso);
//Setting up initial View
pbarProgreso.setProgress(0);
progressText.setText(pbarProgreso.getProgress() + "/"
+ pbarProgreso.getMax());
}
然后,您将有一个监听器来处理任何可以增加进度的事件。让我们假设一个按钮
increaseProgress_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pbarProgreso.incrementProgressBy(10);
progressText.setText(pbarProgreso.getProgress()+ "/"
+ pbarProgreso.getMax()) ;
}
}) ;
如果您希望smth更加流行,可以查看此帖子Show numbers in progress bar。
在该帖子的摘要中,他们使用我在这里使用的方法,他们使用名为Number progress bar的库。它看起来很不错但到目前为止我还没用过它。
我希望这会有所帮助。