进度条ProgressBar样式设计
Android 进度条的样式
例1:(默认样式(中等圆形))
Xml代码
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
例2:(超大圆形)
Xml代码
<ProgressBar
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleLarge"
/>
例3:(小号圆形)
Xml代码
<ProgressBar
android:id="@+id/progressBar3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleSmall"
/>
例4:(标题小号圆形)
Xml代码
<ProgressBar
android:id="@+id/progressBar4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleSmallTitle"
/>
例4-在标题中使用小号圆形的使用代码:
Java代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置标题不确定性进度条风格
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.progress_bars);
//显示标题不确定性进度条
setProgressBarIndeterminateVisibility(true);
//关闭标题不确定性进度条
//setProgressBarIndeterminateVisibility(false);
}
例5:(长方形进度条)
Xml代码
<ProgressBar
android:id="@+id/progressBar5"
android:layout_width="200dp"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:progress="50"
android:secondaryProgress="70"
/>
android:max="100" 最大进度值100
android:progress="50" 当前初始化进度值50
android:secondaryProgress="70" 当前初始化第2进度值70
例5-在标题中使用长方形进度条的代码:
Java代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置标题进度条风格
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.progress_bars);
//显示标题进度
setProgressBarVisibility(true);
//设置标题当前进度值为5000(标题进度最大值默认为10000)
setProgress(5000);
//关闭标题进度
//setProgressBarVisibility(false);
}
例6:(进度对话框-圆形进度条)
Java代码
ProgressDialog dialog = new ProgressDialog(this);
//设置进度条风格,风格为圆形,旋转的
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//设置ProgressDialog 标题
dialog.setTitle("进度对话框");
//设置ProgressDialog 提示信息
dialog.setMessage("圆形进度条");
//设置ProgressDialog 标题图标
dialog.setIcon(android.R.drawable.ic_dialog_map);
//设置ProgressDialog 的一个Button
dialog.setButton("确定", new ProgressDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//设置ProgressDialog 的进度条是否不明确
dialog.setIndeterminate(false);
//设置ProgressDialog 是否可以按退回按键取消
dialog.setCancelable(true);
//显示
dialog.show();
例7:(进度对话框-长方形进度条)
Java代码
ProgressDialog dialog = new ProgressDialog(this);
//设置进度条风格,风格为圆形,旋转的
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置ProgressDialog 标题
dialog.setTitle("进度对话框");
//设置ProgressDialog 提示信息
dialog.setMessage("长方形进度条");
//设置ProgressDialog 标题图标
dialog.setIcon(android.R.drawable.ic_dialog_alert);
//设置ProgressDialog的最大进度
dialog.setMax(100);
//设置ProgressDialog 的一个Button
dialog.setButton("确定", new ProgressDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//设置ProgressDialog 是否可以按退回按键取消
dialog.setCancelable(true);
//显示
dialog.show();
//设置ProgressDialog的当前进度
dialog.setProgress(50);
(一)这是本人自己写的XML布局
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/pro"
android:layout_width="match_parent"
android:layout_height="15dp"
android:layout_marginBottom="15dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="8dp"/>
**看这个android:progressDrawable="@drawable/pro"代码如下,在drawable中创建;
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 背景 gradient是渐变,corners定义的是圆角 -->
<item android:id="@android:id/background">
<shape>
<corners android:radius="10dp" />
<solid android:color="#A5EAFF" />
</shape>
</item>
<!-- 进度条 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="10dp" />
<solid android:color="#00B7EE" />
</shape>
</clip>
</item>
</layer-list>
(二)下边是我写的一个下载实例;
private void Loading() {
new Thread(new Runnable() {
private int percent;
@Override
public void run() {
try {
// 打开 URL 必须在子线程
URL url = new URL(
"http://b.zol-img.com.cn/sjbizhi/images/9/540x960/1472549276394.jpg");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// conn.setRequestMethod("GET");
// conn.setReadTimeout(5000);
// conn.setConnectTimeout(5000);
int contentLength = conn.getContentLength();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream is = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = -1;
int sum = 0;
while ((len = is.read(buffer)) != -1) {
sum += len;
// 注意强转方式,防止一直为0
percent = (int) (100.0 * sum / contentLength);
// (此方法是一个在子线程中更新UI的一个方法不推荐使用用因为在我写的弹出dialog中这个方法不能使用,不知道原因希望大神指正,然后我给换成new Handler(),)
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
progress.setProgress(percent);
text.setText(percent + "%");
if (percent == progress.getMax()) {
Log.e("/////","下载完成");
Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
}
}
});
}
is.close();
conn.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
上一篇: qml 进度条ProgressBar
下一篇: springboot项目后台部署运行