您的位置:首页 > 移动开发 > Android开发

Android中几种dialog的实现

2015-08-09 23:35 363 查看
今天刚刚学习了android几种常见的dialog的实现,写写自己对这几个dialog的心得吧

第一个确定取消对换框:下面我就直接用代码来体现

/**
* 这个是确定取消提示框
* @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();
}


是不是发现我们下面移除进度条的时候都是在新开的线程中去操作的呀,这个也是这个进度条对象框的一个特点,我们要移除它,必须要在别的线程中去处理,不能在当前线程中去操作.谨记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: