Android Studio 1-1
Dialog对话框
一 常用对话框
1、普通对话框
效果:
//构建对象
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置图标
builder.setIcon(R.drawable.ic_launcher_background);
//设置标题
builder.setTitle("hello world");
//设置内容
builder.setMessage("我是Android");
//设置确定按钮
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了ok", Toast.LENGTH_SHORT).show();
}
});
//设置取消按钮
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了cancel", Toast.LENGTH_SHORT).show();
}
});
//使用构建者 创建对话框
AlertDialog dialog = builder.create();
//切记显示
dialog.show();
2、单选对话框
//构建者
AlertDialog.Builder builderSingle = new AlertDialog.Builder(this);
//设置图标
builderSingle.setIcon(R.drawable.ic_launcher_background);
//设置标题
builderSingle.setTitle("昵称");
builderSingle.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了ok", Toast.LENGTH_SHORT).show();
}
});
builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了cancel", Toast.LENGTH_SHORT).show();
}
});
//设置单选列表
final String[] items = {"朔風", "岚月", "金鸿"};
//参数一 列表 参数二 默认选中下表 参数三 事件监听
builderSingle.setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你选中烦恼的" + items[which], Toast.LENGTH_SHORT).show();
}
});
//使用建造者创建对话框
AlertDialog dialogSingle = builderSingle.create();
//显示
dialogSingle.show();
3、多选对话框
final String[] itemsMultiple = {"玄武", "青龙", "朱雀", "白虎"};
final boolean[] flags = {true, false, true, false};
//构建着
AlertDialog.Builder builderMultple = new AlertDialog.Builder(this);
//设置图标
builderMultple.setIcon(R.drawable.ic_launcher_background);
//设置标题
builderMultple.setTitle("四象");
builderMultple.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for (int i = 0; i < flags.length; i++) {
if (flags[i]) {
Toast.makeText(MainActivity.this, "是" + itemsMultiple[i], Toast.LENGTH_SHORT).show();
}
}
}
});
builderMultple.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了cancel", Toast.LENGTH_SHORT).show();
}
});
builderMultple.setMultiChoiceItems(itemsMultiple, flags, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
flags[which] = isChecked;
}
});
AlertDialog dialogMultiple = builderMultple.create();
dialogMultiple.show();
4、模糊进度条对话框
//实例化对象
final ProgressDialog dialog_indistinct=new ProgressDialog(this);
/**
* 设置属性
*/
//设置圆圈
dialog_indistinct.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog_indistinct.setMax(100);
dialog_indistinct.setMessage("正在下载");
//显示
dialog_indistinct.show();
//模拟定时器
final Timer timer=new Timer();
timer.schedule(new TimerTask() {
int progress=0;
@Override
public void run() {
if(progress==100){
dialog_indistinct.dismiss();//失去焦点
timer.cancel();
}
dialog_indistinct.setProgress(progress+=10);
}
},0,1000);//从0秒执行,每隔1000毫秒执行一次
5、精确进度条对话框
//实例化对象
final ProgressDialog dialog_accrate=new ProgressDialog(this);
//设置属性
dialog_accrate.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平央视
dialog_accrate.setMax(100);
dialog_accrate.setMessage("正在下载");
//显示
dialog_accrate.show();
//模拟定时器
final Timer timer_accrate=new Timer();
timer_accrate.schedule(new TimerTask() {
int progress=0;
@Override
public void run() {
if(progress==100){
dialog_accrate.dismiss();//失去焦点
timer_accrate.cancel();
}
dialog_accrate.setProgress(progress+=10);
}
},0,1000);//从0秒执行,每隔1000毫秒执行一次
6、时间对话框
/**
* @param context 上下文
* @param listener 监听器
* @param hourOfDay 默认的时
* @param minute 默认的分钟
* @param is24HourView 是否采用24时禁止
*/
//日历对象
Calendar calendarTime = Calendar.getInstance();
//实例化对象
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(MainActivity.this, hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show();
}
}, calendarTime.get(Calendar.HOUR), calendarTime.get(Calendar.MINUTE), true).show();
7、日历对话框
/**
* @param context 上下文
* @param listener 监听器
* @param year 默认的年
* @param month 默认的月
* @param dayOfMonth 默认的日
*/
//日历对象
Calendar calendar = Calendar.getInstance();
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Toast.makeText(MainActivity.this, year + "-" + (month + 1) + "-" + dayOfMonth, Toast.LENGTH_SHORT).show();
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
8、自定义对话框
自定义类
package com.example.day01work;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MyDialog extends Dialog {
private Button yes;
private Button no;
private TextView title;
private TextView message;
private String TitleStr;
private String MessageStr;
private String yesStr;
private String noStr;
private onYesOnclickListener yesOnclickListener;
private onNoOnclickListener noOnclickListener;
public interface onYesOnclickListener {
public void onYesOnclick();
}
public interface onNoOnclickListener {
public void onNoOnclick();
}
public void setYesOnclickListener(String yesStr,onYesOnclickListener yesOnclickListener) {
this.yesStr = yesStr;
this.yesOnclickListener = yesOnclickListener;
}
public void setNoOnclickListener(onNoOnclickListener noOnclickListener) {
this.noOnclickListener = noOnclickListener;
}
public MyDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom);
title = findViewById(R.id.title);
message = findViewById(R.id.message);
no = findViewById(R.id.no);
yes = findViewById(R.id.yes);
if (TitleStr != null){
title.setText(TitleStr);
}
if (MessageStr != null) {
message.setText(MessageStr);
}
if (yesStr != null) {
yes.setText(yesStr);
}
if (noStr != null) {
no.setText(noStr);
}
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (yesOnclickListener != null){
yesOnclickListener.onYesOnclick();
dismiss();
}
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (noOnclickListener != null) {
noOnclickListener.onNoOnclick();
dismiss();
}
}
});
}
public void setTitleStr(String titleStr) {
TitleStr = titleStr;
}
public void setMessageStr(String messageStr) {
MessageStr = messageStr;
}
public void setYesStr(String yesStr) {
this.yesStr = yesStr;
}
public void setNoStr(String noStr) {
this.noStr = noStr;
}
}
实例化后
MyDialog myDialog = new MyDialog(MainActivity.this);
myDialog.setTitleStr("提示");
myDialog.setMessageStr("保护视力,眼保健操,现在开始");
myDialog.setYesOnclickListener("这就是ok呐!", new MyDialog.onYesOnclickListener() {
@Override
public void onYesOnclick() {
Toast.makeText(MainActivity.this, "这就是ok呐!", Toast.LENGTH_SHORT).show();
}
});
myDialog.setNoOnclickListener(new MyDialog.onNoOnclickListener() {
@Override
public void onNoOnclick() {
Toast.makeText(MainActivity.this, "这就是取消的no 方法呐!", Toast.LENGTH_SHORT).show();
}
});
myDialog.show();