Android自定义进度条主要是修改ProgressBar的style,弹窗则是在Dialog里显示ProgressBar。
成都创新互联公司主营昂昂溪网站建设的网络公司,主营网站建设方案,重庆APP开发公司,昂昂溪h5小程序制作搭建,昂昂溪网站营销推广欢迎昂昂溪等地区企业咨询
直接上代码。
在style.xml里加入如下代码:
新建drawable/progressbar_mini.xml内容如下:
myprogressbar.xml的内容如下:
<?xml version="1.0" encoding="utf-8"?>
MyProgressBar.java的内容如下:
package com.wl.util; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.view.LayoutInflater; import android.view.View; import android.widget.ProgressBar; import com.wl.R; public class MyProgressBar { Dialog dialog; Context context; // 声明ProgressBar对象 private ProgressBar pro1; /** * 构造 */ public MyProgressBar(Context context) { // TODO Auto-generated constructor stub this.context = context; dialog = new Dialog(context, R.style.dialog); dialog.setOnCancelListener(onCancelListener); } /** * 初始化进度对话框 */ public void initDialog() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.myprogressbar, null); dialog.setContentView(view); pro1 = (ProgressBar) dialog.findViewById(R.id.progressBar1); // 设置进度条是否自动旋转,即设置其不确定模式,false表示不自动旋转 pro1.setIndeterminate(false); // 设置ProgressBar的最大值 pro1.setMax(100); // 设置ProgressBar的当前值 pro1.setProgress(0); dialog.show(); } public void setProgress(int progressValue) { pro1.setProgress(progressValue); } public void colseDialog() { dialog.dismiss(); } public boolean isShowing() { if (dialog.isShowing()) { return true; } else { return false; } } OnCancelListener onCancelListener = new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub dialog.dismiss(); } }; }
调用代码如下:
MyProgressBar myProgressBar; myProgressBar = new MyProgressBar(Dialog_TestActivity.this); myProgressBar.initDialog(); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } for (int i = 0; i < 100; i++) { handler.sendEmptyMessage(0); try { Thread.sleep(30); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }).start(); Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // 改变ProgressBar的当前值 myProgressBar.setProgress(intCounter++); if (intCounter == 100) { intCounter = 0; myProgressBar.colseDialog(); } } };
按返回退出:
@Override public void onBackPressed() { // TODO Auto-generated method stub Log.d("11", "onBackPressed()"); if (myProgressDialog.isShowing()) { myProgressDialog.colseDialog(); } if (myProgressBar.isShowing()) { myProgressBar.colseDialog(); } super.onBackPressed(); }
源码:Android实现弹窗进度条
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。