Android学习之ProgressDialog
16lz
2022-04-15
进度条对话框ProgressDialog经常用于不能马上完成的操作,为了避免用户莫名其妙的等待,给用户一个提示。本例中我们演示了两种进度条:条形进度条和圆形进度条。
1 主Acitivity的布局
<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:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/progress_horizonal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="水平进度条" android:textSize="20sp" /> <Button android:id="@+id/progress_circle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="圆形进度条" android:textSize="20sp" /></LinearLayout>
2MainActivity的编写
package com.example.progressdialog;import java.util.Random;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.app.ProgressDialog;import android.content.DialogInterface;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button btn_horizonal = null;private Button btn_circle = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);inital();setBtnOnClickListener();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}private void inital() {btn_horizonal = (Button) findViewById(R.id.progress_horizonal);btn_circle = (Button) findViewById(R.id.progress_circle);}private void setBtnOnClickListener() {btn_horizonal.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshowProgressDialog(ProgressDialog.STYLE_HORIZONTAL,"正在努力处理数据...", "请稍后...");}});btn_circle.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshowProgressDialog(ProgressDialog.STYLE_SPINNER, "正在努力删除...","请稍后...");}});} /**进度条的最大值*/private static final int MAX_PROGRESS_VALUE = 100;private ProgressDialog progressDialog = null;private Handler progressHandler = null;/**记录当前进度的值*/private int progress = 0; /** * 显示进度对话框 * @param style 进度框风格,长方形还是圆形 * @param title 显示的title * @param message 显示的提示信息 */private void showProgressDialog(int style, String title, String message) {// 创建ProgressDialog类的对象实体progressDialog = new ProgressDialog(this);progressDialog.setIcon(R.drawable.ic_launcher);//设置标题progressDialog.setTitle(title);//设置显示的提示信息progressDialog.setMessage(message);// 设置进度对话框的风格progressDialog.setProgressStyle(style);// 设置ProgressDialog不可以按退回按键取消 progressDialog.setCancelable(false); // 设置进度对话框的进度最大值progressDialog.setMax(MAX_PROGRESS_VALUE);//设置暂停按钮progressDialog.setButton("暂停", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub// 删除消息队列中的消息来停止计时器progressHandler.removeMessages(1);}});//设置取消按钮progressDialog.setButton2("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub// 删除消息队列中的消息来停止定时器progressHandler.removeMessages(1);progress = 0;progressDialog.setProgress(0);dismissProgressDialog();}});progressDialog.show();progressHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);if (progress >= MAX_PROGRESS_VALUE) {// 进度达到了最大值,关闭对话框progress = 0;dismissProgressDialog();} else {// 进度增一progress++;progressDialog.incrementProgressBy(1);// 第一个参数表示消息代码,第二个参数表示下一次调用handlerMessage要等待的毫秒数progressHandler.sendEmptyMessageDelayed(1,500 + new Random().nextInt(500));}}};// 设置进度条的初始值progress = (progress > 0) ? progress : 0;// 设置进度框中的进度值progressDialog.setProgress(progress);// 发送消息代码progressHandler.sendEmptyMessage(1);}/** * 让进度对话框消失 */private void dismissProgressDialog(){progressDialog.dismiss();}}
实际效果如下:
更多相关文章
- 自定义Android六边形进度条(附源码)
- android 设置Button或者ImageButton的背景透明 半透明 透明
- Android(安卓)部分内容设置颜色、字体、超链接、图片
- android 模拟器中启用相机API支持
- Android(安卓)Permission denied 错误(附Android权限大全)
- 设置ProgressBar的颜色
- Android例子—设置Activity全屏的三种方法
- Android(安卓)UI学习 - TableLayout
- Android(安卓)图标设置 尺寸