ProgressDialog进度条对话框
来源:互联网 发布:极乐净土镜头数据 编辑:程序博客网 时间:2024/05/29 15:08
可以通过相应的方法设置对话框上显示的文字、图标、进度条的样式,也可以使用线程来控制进度条的显示。
先搞明白cancle()和dismiss()的区别:
cancle():取消进度条对话框;
dismiss():释放对话框,从当前窗体移除。
抱着试试看的态度翻了一下源码:
public void cancel() { if (mCancelMessage != null) { // Obtain a new message so this dialog can be re-used Message.obtain(mCancelMessage).sendToTarget(); } dismiss(); }
在cancel方法中调用了dismiss方法。
下面是Demo:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="进度条对话框" android:textSize="30sp" /> <Button android:id="@+id/btn_circle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:onClick="onClick" android:textSize="30sp" android:text="圆形进度条对话框" /> <Button android:id="@+id/btn_long" android:textSize="30sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:onClick="onClick" android:text="长形进度对话框" /></LinearLayout>
public class ProgressDialogDemo extends Activity { private static final int DOWNLOAD_DONE = 1; private TextView mTextView; private ProgressDialog mProgressDialog; private int progress; private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case DOWNLOAD_DONE: mTextView.setText("嘿嘿,下载完成"); break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.progress_dialog); mTextView = (TextView) findViewById(R.id.tv_content); } public void onClick(View v) { switch (v.getId()) { case R.id.btn_circle: mProgressDialog = new ProgressDialog(this); // 设置进度条为圆形 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); // 是否可以通过点击Back键取消 mProgressDialog.setCancelable(true); // 设置在点击ProgressDialog外是否取消ProgressDialog进度条 mProgressDialog.setCanceledOnTouchOutside(false); mProgressDialog.setIcon(R.drawable.ic_launcher);// // 如果没有设置title,只设置Icon是不会显示图标的 mProgressDialog.setTitle("提示"); mProgressDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mProgressDialog.cancel(); mTextView.setText("哈哈,您取消了圆形进度条对话框"); } }); mProgressDialog.show(); mTextView.setText("哈哈,您点击了圆形进度条按钮"); break; case R.id.btn_long: progress = 0; mProgressDialog = new ProgressDialog(ProgressDialogDemo.this); // 设置长形风格进度条 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); mProgressDialog.setIcon(R.drawable.ic_launcher); mProgressDialog.setMessage("长形进度对话框"); // 设置进度条为不明确才可以在进度条上显示具体进度 mProgressDialog.setIndeterminate(false); // 设置当前进度值 mProgressDialog.setProgress(0); // 第二进度值 mProgressDialog.setSecondaryProgress(0); // 最大值 mProgressDialog.setMax(100); // 是否按返回键取消 mProgressDialog.setCancelable(true); // 添加取消按钮 Whichbutton to set the message for, can be one of // BUTTON_POSITIVE, BUTTON_NEGATIVE, or BUTTON_NEUTRAL mProgressDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mProgressDialog.cancel(); mTextView.setText("哈哈,您取消了长形进度条对话框"); } }); mProgressDialog.show(); mTextView.setText("哈哈,您点击了长形进度条按钮"); // 创建线程更新进度 new Thread() { public void run() { while (progress <= mProgressDialog.getMax()) { mProgressDialog.setProgress(progress += 2); try { Thread.sleep(100); } catch (InterruptedException e) { mProgressDialog.cancel(); } } // 异步消息处理 mProgressDialog.cancel(); Message message = new Message(); message.what = DOWNLOAD_DONE; handler.sendMessage(message); }; }.start(); break; default: break; } }}
中间出了一个小问题:在长形进度条对话框点击取消后,过一会儿,界面还是会显示“下载完成”。
0 0
- Android ProgressDialog进度条对话框
- [控件]ProgressDialog对话框进度条
- 进度条对话框ProgressDialog
- 【Android】进度条对话框ProgressDialog
- ProgressDialog 进度条对话框
- 进度条对话框。。。ProgressDialog
- 进度条对话框ProgressDialog
- ProgressDialog进度条对话框
- ProgressDialog进度条对话框使用
- Android ProgressDialog 进度条对话框
- 对话框中的进度条(ProgressDialog)
- Android 对话框中的进度条 ProgressDialog
- Android 对话框中的进度条 ProgressDialog
- Android 对话框中的进度条 (ProgressDialog)
- Android 对话框中的进度条 ProgressDialog
- 进度条对话框ProgressDialog和Message
- Android 对话框中的进度条 ProgressDialog
- Android之进度条对话框Progressdialog
- Backbone.js中events中事件不生效
- AngularJS 控制器
- meteor Package version not in catalog: npm-container
- Arrays.asList()方法总结
- IOS7 8中tableview分割线全屏
- ProgressDialog进度条对话框
- Android 类似未读短信图标显示数字效果的分析
- java.lang.VerifyError解决方案
- MySql ERROR 1205:Lock wait timeout exceeded; try restarting transaction
- 欢迎使用CSDN-markdown编辑器
- 世界摄影大赛获奖精品!令人惊叹!
- 人工生命
- 标签TextView
- 计算几何的相关知识