安卓进度条示例
欢迎来到Android ProgressBar示例。今天我们将在我们的应用程序中实现Android ProgressBar。进度条有两种类型:水平和圆形。我们将在Android应用程序中创建这两种进度条。
安卓进度条
Android进度条是一个图形化的视图指示器,用来显示一些进度。Android进度条显示一个表示任务完成情况的进度条。Android进度条非常有用,因为它给用户提供了完成任务所需时间的概念。使用进度条是一种良好的用户体验实践,因为它向用户显示了给定任务(如下载图像)的进度状态。
Android的ProgressBar属性
以下是用来描述ProgressBar的一些重要属性。
-
- android:max:我们可以通过这个属性来设置进度条的最大值。默认情况下,进度条的最大值为100。
-
- android:indeterminate:根据时间是否确定,设置一个布尔值。将此属性设置为false将显示实际进度;如果设置为true,则显示循环动画以表示进度正在进行中。
-
- android:minHeight:用于设置进度条的高度。
-
- android:minWidth:用于设置进度条的宽度。
-
- android:progress:用于设置进度条值的增量。
- style:默认情况下,进度条会显示为旋转的轮子。如果我们希望将其显示为水平条形,则需要将属性设置为:style=”?android:attr/progressBarStyleHorizontal”。
在本教程中,我们将创建一个进度条并通过在线程内进行更新来递增其值。我们会让线程在递增值后休眠200毫秒,以便缓慢展示进度。
安卓进度条示例项目结构
Android进度条代码
activity_main.xml中包含一个RelativeLayout作为父视图,其中包含一个水平进度条和一个圆形进度条,以及一个用于以数字形式显示进度的TextView。
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="23dp"
android:layout_marginTop="20dp"
android:indeterminate="false"
android:max="100"
android:minHeight="50dp"
android:minWidth="200dp"
android:progress="1" />
<ProgressBar
android:id="@+id/progressBar_cyclic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:minWidth="50dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/progressBar"
android:layout_below="@+id/progressBar"/>
</RelativeLayout>
在上述布局中,水平进度条的值根据android:progress设置而更新。圆形进度条会持续运行,除非活动停止。
package com.Olivia.progressbar;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private ProgressBar progressBar;
private int progressStatus = 0;
private TextView textView;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
textView = (TextView) findViewById(R.id.textView);
// Start long running operation in a background thread
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.
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
下载Android ProgressBar项目。
参考资料:developer.android.com文档