Android ProgressDialog进度条使用详解
程序员文章站
2024-02-19 09:45:10
进度条以一种客观化的方式,让我们知道程序正在执行的情况,在程序需要时间执行任务的时候,提示进度条友好的告诉用户说,当前任务还没有完成,请稍稍等待,进度条经常使用在app下载...
进度条以一种客观化的方式,让我们知道程序正在执行的情况,在程序需要时间执行任务的时候,提示进度条友好的告诉用户说,当前任务还没有完成,请稍稍等待,进度条经常使用在app下载应用、更新应用、加载网络数据中,使用频繁,常见的进度条有progressdialog、progressbar,这里只要介绍progressdialog。
progressdialog读取文件进度解析主要涉及到一个知识:
- handler消息处理机制,
- 文件字节流的操作,
- progressdialog类的使用
1、handler消息处理机制
handler消息处理机制,接收子线程传递过来的消息,根据消息传递值,执行ui界面更新操作,目的防止阻塞主线程,使用最多的是sendemptymessage(int)、sendmessage(int),因为经常需要只要,所以记住第一个handler代码的写法,后面没次都可以复制过来用,如下:
handler handler = new handler() { @override public void handlemessage(message msg) { switch (msg.what) { case 110://根据what值,执行ui更新操作 progressvalue += msg.arg1; sb.append(msg.obj); mtextview.settext(sb.tostring());//textview显示读取内容 mdialog.setprogress(progressvalue);//设置进度条当前值 if (progressvalue == 100) {//判读是否读取结束 mdialog.dismiss(); toast.maketext(mainactivity.this, "读取完成!", toast.length_short).show(); } break; } } };
2、文件字节流的操作
输入输出流的内容,看来也不是想象中的那么难,在《java面向对象程序设计》一书中分为:file类、文件字节流、文件字符流、缓冲流、文件对话框、随机流、数组流、数据流带进度条的输入流、对象流,经常会忘记它们对应的类,使用起来容易混乱,下面分别写一个简单例子:
1)、file类
file path = environment.getexternalstoragedirectory();//获取sdcard根路径 file file = new file(path + "/progressmonitor.txt");//读取根路径下的progressmonitor文件
2)、文件字节流
private void readfromfile(string path) { fileinputstream fis; datainputstream dis; try { fis = new fileinputstream(path); dis = new datainputstream(fis); byte b[] = new byte[10];// 每次读取10字节 while ((readed = dis.read(b)) != -1) { message msg = new message(); string str=new string(b,0,readed); msg.obj=str; msg.arg1 = readed; msg.what = 110; handler.sendmessage(msg); try { thread.sleep(1000); } catch (exception e) { e.printstacktrace(); } } } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); }finally { try { dis.close(); fis.close(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } }
3、progressdialog的使用
progressdialog继承alertdialog,alertdialog继承dialog,常用的属性有:
mdialog.setprogressstyle(progressdialog.style_horizontal);/进度条样式 mdialog.setmax(100);//进度条最大值 mdialog.settitle("系统提示");//进度条标题 mdialog.seticon(r.drawable.ic_launcher);//进度条图标 mdialog.setmessage("正在读取文件,请稍等。。。");//进度条提示信息 mdialog.setprogress(progressvalue);//进度条当前值 mdialog.dismiss();//进度条消失
完整代码:
private static final int style_horizontal = 110; private static final int style_spinner = 111; private void progressdialogstyle(int id) { switch (id) { case style_spinner: mdialog = new progressdialog(this, progressdialog.style_spinner); break; case style_horizontal: mdialog = new progressdialog(this); mdialog.setprogressstyle(progressdialog.style_horizontal); break; default: break; } mdialog.setmax(100); mdialog.settitle("系统提示"); mdialog.seticon(r.drawable.ic_launcher); mdialog.setmessage("正在读取文件,请稍等。。。"); }
progressdialog类可以制作平时常见的进度条效果,如果需要更多进度条式样,可以重写progressdialog提供的方法或者继承alertdialog自定义样式。
以上就是本文的全部内容,希望对大家的学习有所帮助。
推荐阅读
-
Android ProgressDialog进度条使用详解
-
Android Bluetooth蓝牙技术使用流程详解
-
android AlertDialog多种使用方法详解
-
Android中使用AsyncTask做下载进度条实例代码
-
详解android使用ItemDecoration 悬浮导航栏效果
-
android BitmapFactory.Options使用方法详解
-
详解Android Checkbox的使用方法
-
Android开发之ImageLoader使用详解
-
Android 使用selector改变按钮状态实例详解
-
Android MarginDesign控件TabLayout导航栏使用详解