Android中几种dialog的实现
2015-08-09 23:35
363 查看
今天刚刚学习了android几种常见的dialog的实现,写写自己对这几个dialog的心得吧
第一个确定取消对换框:下面我就直接用代码来体现
创建步骤
1,创建工厂对象
2,通过工厂对象去明确我们的需求
3,创建
四,普通进度条的创建:
是不是发现我们下面移除进度条的时候都是在新开的线程中去操作的呀,这个也是这个进度条对象框的一个特点,我们要移除它,必须要在别的线程中去处理,不能在当前线程中去操作.谨记
第一个确定取消对换框:下面我就直接用代码来体现
/** * 这个是确定取消提示框 * @param view */ public void sureremove(View view){ /* * 创建步骤 * 1,创建工厂对象 * 2,通过工厂对象去明确我们的需求 * 3,创建 */ // 1,创建工厂对象 AlertDialog.Builder builder = new Builder(this); //2,通过工厂对象去明确我们的需求 //把订单需求给创建的工厂 //通过工厂创建各个组件,并把原材料添加到各个机器中 builder.setTitle("创建标题"); builder.setMessage("这是要显示的提示内容"); //确定按钮 builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Toast.makeText(MainActivity.this, "你点击了确定按钮", 0).show(); } }); //取消按钮 builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "你点击了取消按钮", 0).show(); } }); //3,创建 //工厂有了,需求明确了,原料也已经添加了,那么下面就要来开工把它给造出来 //这步特别的重要 builder.create().show(); }第二个是单选按钮
/** * 单选按钮 * * @param view */ public void radio(View view) { // 1,创建工厂对象 // 用工厂模式创建 AlertDialog.Builder builder = new Builder(MainActivity.this); // 2,通过工厂对象去明确我们的需求 // 告诉工厂生产怎么样的产品 builder.setTitle("单选按钮"); final String[] items = { "男", "女", "未知" }; /* * items:单选按钮的选项,是一个字符串数据 checkedItem: 默认选项 参数3,监听事件 */ builder.setSingleChoiceItems(items, 3, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 移除dialog dialog.dismiss(); Toast.makeText(MainActivity.this, items[which], 0).show(); } }); // 3,创建 // 一定要创建和show() // builder.create().show(); // 效果等同于上面那句代码 builder.show(); }第三个是多选按钮:
/** * 多选按钮 * * @param view */ public void checkbox(View view) { // 1,创建工厂对象 // 创建工厂 AlertDialog.Builder builder = new Builder(MainActivity.this); // 2,通过工厂对象去明确我们的需求 // 告诉工厂要生产什么样的东西 builder.setTitle("请选择城市"); // 待选择的元素 final String[] items = { "北京", "上海", "深圳", "广州" }; // 待选择元素的选择状态 final boolean[] checkedItems = { false, false, false, false }; /* * items 待选择的元素 checkedItems 待选择元素的选择状态 监听事件 */ builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { checkedItems[which] = isChecked; } }); // 再设置一个提交按钮 builder.setPositiveButton("提交", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { StringBuffer sb = new StringBuffer(); for (int x = 0; x < checkedItems.length; x++) { // 当checkedItems数组里面的元素为true的时候说明这个框已经选中了 if (checkedItems[x]) { sb.append(items[x] + ","); } } Toast.makeText(MainActivity.this, "你选择了:" + sb.toString(), 0) .show(); } }); // 3,创建 // 设计完成一定要生产出来 builder.show(); }通过上面这三个dialog我们发现,他们都是通过工厂模式来创建的,只要明确上面那三个步骤,就很方便了,很容易的记:
创建步骤
1,创建工厂对象
2,通过工厂对象去明确我们的需求
3,创建
四,普通进度条的创建:
/** * 普通进度条,没有加任何的样式 * * @param view */ public void rate(View view) { // 进度条就不使用工厂模式来了,当也很简单 final ProgressDialog pd = new ProgressDialog(MainActivity.this); pd.setTitle("进度条"); pd.setMessage("正在加载....请稍后"); pd.show(); // 关闭进度条,并且关闭一定要在别的线程中关闭,不能在当前线程中关闭 new Thread() { public void run() { try { sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } pd.dismiss(); } }.start(); }五带显示进度的进度条
/** * 带显示进度的进度条 * * @param view */ public void rate2(View view) { final ProgressDialog pd = new ProgressDialog(MainActivity.this); pd.setTitle("显示进度条"); // 设置进度条样式 pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("正在处理中。。。请稍后"); pd.show(); // 移除一定要放在别的线程中去 操作 new Thread() { public void run() { pd.setMax(100); try { for (int i = 0; i < 100; i++) { pd.setProgress(i); sleep(100); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 移除 pd.dismiss(); } }.start(); }
是不是发现我们下面移除进度条的时候都是在新开的线程中去操作的呀,这个也是这个进度条对象框的一个特点,我们要移除它,必须要在别的线程中去处理,不能在当前线程中去操作.谨记
相关文章推荐
- 【Android开源项目分析】TAB导航栏PagerSlidingTabStrip的使用和源码分析
- android动画(Animation)
- mac android studio NDK 安装使用(不用翻墙)
- Android进阶之采用TabHost和RadioButton实现底部页面导航
- android笔记--Intent和IntentFilter详解
- Android中的Handler机制
- 如何通过Android Studio 或者ADT 使用VS的安卓模拟器
- android引导页的实现
- Android FlowLayout
- android学习笔记(7)AbsoluteLayout+FrameLayout+RelativeLayout+TableLayout四大布局方式
- android ftp多线程多任务下载时的listview滑动列表错乱解决方法
- Android小记:ViewStub的使用
- android.content.res.Resources$NotFoundException: String resource ID #0x0
- Android开发环境的配置(Ubuntu 14.04 64位)
- Android View滚动、拉伸到顶/底部弹性回弹复位
- Android中的cookie管理简介
- android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)
- android中可以使用bitmap的平铺,镜像平铺等减小图片带来的apk过大的问题
- Android-PullToRefresh下拉刷新,上拉加载
- android view(二)