android模式进度对话框(ProgressDialog)的调用方法
日期:2018/9/29
作者:微澜
qq:9611153
宗旨:
正视分享,学习把一个简单的东西分享给别人。
写此文目的不在于介绍全面的知识,而在于学习如何去分享。
名词解释
ProgressDialog是一个android自带的模式对话框,告知用户正在进行一项任务,需要用户等待,有了结果后才能进行下去。
如登录操作,文件下载,资源初始化等等情况,告知用户程序当前在做什么。基本样式如下:
步骤
1、变量声明
private ProgressDialog _progressDialog;
2、对话框显示
_progressDialog = ProgressDialog.show(this, "Loading...", "正在处理...");
3、对话框取消
_progressDialog.cancel();
注意点
1、ProgressDialog为模式对话框,必须取消才能进行其他操作
2、需要确保未完成任务的时候也能关闭对话框,如点击后退键取消,点击内部按钮取消等。
3、在线程中完成任务,完成后,需要在ui线程中关闭对话框或执行其他ui操作。
简单例子
public class MainActivity extends AppCompatActivity { @BindView(R.id.button2) Button button2; @BindView(R.id.button1) TextView button1; private ProgressDialog _progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.button1, R.id.button2}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.button1: Toast.makeText(MainActivity.this, "---开始 ", Toast.LENGTH_LONG).show(); _progressDialog = ProgressDialog.show(this, "Loading...", "正在处理..."); //方法1 new Thread(new Runnable() {//启动线程处理其他事情 @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } runOnUiThread(new Runnable() {//处理界面线程 @Override public void run() { if (_progressDialog != null) { _progressDialog.cancel(); } Toast.makeText(MainActivity.this, "---取消 ", Toast.LENGTH_LONG).show(); } }); } }).start(); break; case R.id.button2: // if (_progressDialog != null) {//这里是无效的,因为它是模式对话框 // _progressDialog.cancel(); // } break; } } //使用后退键退出 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 截获后退键 if (keyCode == KeyEvent.KEYCODE_BACK) { if (_progressDialog != null) { _progressDialog.cancel(); } } return super.onKeyDown(keyCode, event); } } |
总结
ProgressDialog是一种android自带的等待对话框,也是一种常用工具,能对程序起到启承转合的作用。
附
信念:
风起于青蘋之末,浪成于微澜之间。
我的小程序:
微澜阅读,现阶段主要内容 1)、包含了中国古代4大名著,唐诗300,几篇著名古代散文 2)、几个文学相关新闻组地址可以查看 有时间会有更多内容添加进去。
https://download.csdn.net/download/lgs790709/10696351
自我介绍:
编程十余载,使用过dotnet,vc,java,从事的行业包括电子政务,证券软件,视频监控,医疗健康等,一个老程序员,希望与大家相互交流。