Android开发中ProgressDialog简单用法示例
程序员文章站
2023-12-14 16:43:10
本文实例讲述了android开发中progressdialog简单用法。分享给大家供大家参考,具体如下:
网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章...
本文实例讲述了android开发中progressdialog简单用法。分享给大家供大家参考,具体如下:
网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下:
建立android工程等工作都略去,google一下就可以了。
下面来介绍主要的activity
progressbardemo.java
package com.lveyo.android.demo.progressbar; import android.app.activity; import android.app.progressdialog; import android.os.bundle; import android.os.handler; import android.os.message; import android.view.view; import android.widget.button; import android.widget.textview; public class progressbardemo extends activity { private textview statustextview; private button beginbtn; private progressdialog progressdialog; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); statustextview = (textview)findviewbyid(r.id.status); beginbtn = (button)findviewbyid(r.id.beginbtn); setlistener(); } /** * 用handler来更新ui */ private handler handler = new handler(){ @override public void handlemessage(message msg) { //关闭progressdialog progressdialog.dismiss(); //更新ui statustextview.settext("completed!"); }}; /** * 点击按钮事件listener */ private void setlistener(){ beginbtn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //显示progressdialog progressdialog = progressdialog.show(progressbardemo.this, "loading...", "please wait...", true, false); //新建线程 new thread(){ @override public void run() { //需要花时间计算的方法 calculation.calculate(4); //向handler发消息 handler.sendemptymessage(0); }}.start(); } }); } }
package com.lveyo.android.demo.progressbar; import android.app.activity; import android.app.progressdialog; import android.os.bundle; import android.os.handler; import android.os.message; import android.view.view; import android.widget.button; import android.widget.textview; public class progressbardemo extends activity { private textview statustextview; private button beginbtn; private progressdialog progressdialog; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); statustextview = (textview)findviewbyid(r.id.status); beginbtn = (button)findviewbyid(r.id.beginbtn); setlistener(); } /** * 用handler来更新ui */ private handler handler = new handler(){ @override public void handlemessage(message msg) { //关闭progressdialog progressdialog.dismiss(); //更新ui statustextview.settext("completed!"); }}; /** * 点击按钮事件listener */ private void setlistener(){ beginbtn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //显示progressdialog progressdialog = progressdialog.show(progressbardemo.this, "loading...", "please wait...", true, false); //新建线程 new thread(){ @override public void run() { //需要花时间计算的方法 calculation.calculate(4); //向handler发消息 handler.sendemptymessage(0); }}.start(); } }); } }
calculation.java
package com.lveyo.android.demo.progressbar; /** * 示意方法 * @author lveyo * */ public class calculation { public static void calculate(int sleepseconds){ try { thread.sleep(sleepseconds * 1000); } catch (exception e) { // todo: handle exception } } }
package com.lveyo.android.demo.progressbar; /** * 示意方法 * @author lveyo * */ public class calculation { public static void calculate(int sleepseconds){ try { thread.sleep(sleepseconds * 1000); } catch (exception e) { // todo: handle exception } } }
main.xml文件
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <textview android:id="@+id/status" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <button android:id="@+id/beginbtn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="begin" /> </linearlayout>
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <textview android:id="@+id/status" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <button android:id="@+id/beginbtn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="begin" /> </linearlayout>
在android中,通常我们无法在单独的线程中更新ui,而要在主线程中,这也就是为什么我们要使用 handler了,当handler收到消息中,它会把它放入到队列中等待执行,通常来说这会很快被执行。
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。