本文共 11059 字,大约阅读时间需要 36 分钟。
对话框 | 类 | 特殊 |
---|---|---|
普通 | AlertDialog.Builder() | |
单选 | AlertDialog.Builder() | setSingleChoiceItems() |
多选 | AlertDialog.Builder() | setMultiChoiceItems() |
日期 | DatePickerDialog | new DatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day); |
时间 | TimePickerDialog | new TimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制); |
水平 | ProgressDialog | setStyle(ProgressDialog.STYLE_HORIZONTAL) |
圆圈 | ProgressDialog | setStyle(ProgressDialog.STYLE_SPINNER) |
自定义 | AlertDialog.Builder() | setView() |
//TODO 普通对话框 public void normal_dialog(){ //TODO 1:构建者 AlertDialog.Builder builder=new AlertDialog.Builder(this); //TODO 2:设置属性 builder.setIcon(R.drawable.ic_launcher_background);//设置图标 builder.setTitle("hello body");//设置标题 builder.setMessage("我是美女陈林");//设置内容 //设置确定按钮 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(); } }); //TODO 3:使用建造者创建对话框 AlertDialog dialog = builder.create(); //TODO 4:显示 dialog.show(); }
//单选对话框 private void single_dialog() { //TODO 1:构建者 AlertDialog.Builder builder=new AlertDialog.Builder(this); //TODO 2:设置属性 builder.setIcon(R.drawable.ic_launcher_background);//设置图标 builder.setTitle("杨成果的成分是");//设置标题 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(); } }); final String[] items={ "男人","女人","不想"}; //TODO 设置单选列表 //TODO 参数一 列表 参数二 默认选中下表 参数三 事件监听 builder.setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "你选中烦恼的"+items[which], Toast.LENGTH_SHORT).show(); } }); //TODO 3:使用建造者创建对话框 AlertDialog dialog = builder.create(); //TODO 4:显示 dialog.show(); }
private void mulite_dialog() { final String[] items={ "凤姐","小赵","如花","陈琳"}; final boolean[] flags={ true,true,true,false}; //TODO 1:构建着 AlertDialog.Builder builder=new AlertDialog.Builder(this); //TODO 2:画画 builder.setIcon(R.drawable.ic_launcher_background);//设置图标 builder.setTitle("杨成果的女朋友们");//设置标题 builder.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { for(int i=0;i
2.Java代码:
//TODO 0:获得视图 View view=LayoutInflater.from(this).inflate(R.layout.customer_dialog,null); ImageView imageView=view.findViewById(R.id.iv); imageView.setOnclickListener(new OnclickListsner(){ //点击图片就可以吐司或者关闭对话框了 }); //TODO 1:构建着 AlertDialog.Builder builder=new AlertDialog.Builder(this); //设置自定义布局 builder.setView(view); //TODO 3:使用建造者创建对话框 AlertDialog dialog = builder.create(); //TODO 4:显示 dialog.show();
//水平进度条 private void hor_progress_dialog() { //TODO 1:实例化对象 final ProgressDialog dialog=new ProgressDialog(this); //TODO 2:设置属性 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平央视 dialog.setMax(100); dialog.setMessage("正在下载"); //TODO 3:显示 dialog.show(); //TODO 4:模拟定时器 final Timer timer=new Timer(); timer.schedule(new TimerTask() { int progress=0; @Override public void run() { if(progress==100){ dialog.dismiss();//消失 timer.cancel(); } dialog.setProgress(progress+=20); } },0,1000);//0秒后执行,每隔1000毫秒执行一次 }
private void hor_progress_dialog() { //TODO 1:实例化对象 final ProgressDialog dialog=new ProgressDialog(this); //TODO 2:设置属性 dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置圆圈 dialog.setMax(100); dialog.setMessage("正在下载"); //TODO 3:显示 dialog.show(); //TODO 4:模拟定时器 final Timer timer=new Timer(); timer.schedule(new TimerTask() { int progress=0; @Override public void run() { if(progress==100){ dialog.dismiss();//消失 timer.cancel(); } dialog.setProgress(progress+=20); } },0,1000);//0秒后执行,每隔1000毫秒执行一次 }
//日期选择对话框DatePickerDialog private void date_dialog() { /** * * * @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(); }
//时间对话框:TimePickerDialog private void time_dialog() { /** * @param context 上下文 * @param listener 监听器 * @param hourOfDay 默认的时 * @param minute 默认的分钟 * @param is24HourView 是否采用24时禁止 */ Calendar calendar=Calendar.getInstance();//日历对象 //TODO 1:实例化对象 TODO 2:show 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(); } },calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),true).show(); }
1.自定义类继承Dialog
2.重写Dialog的方法并添加需要的功能 3.在Activity中实例化自定义类的对象(2)自定义类继承dialog
public class DiyDialog extends Dialog { private Button yes;//确定按钮 private Button no;//取消按钮 private TextView titleTV;//消息标题文本 private TextView message;//消息提示文本 private String titleStr;//从外界设置的title文本 private String messageStr;//从外界设置的消息文本 //确定文本和取消文本的显示的内容 private String yesStr, noStr; private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器 private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器 public DiyDialog(@NonNull Context context, @StyleRes int themeResId) { super(context, themeResId); WindowManager windowManager = getWindow().getWindowManager(); Display display = windowManager.getDefaultDisplay(); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.width = display.getWidth()*4/5; getWindow().setAttributes(lp); } public DiyDialog(@NonNull Context context) { super(context); //去掉默认的标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); } /** * 设置取消按钮的显示内容和监听 * * @param str * @param onNoOnclickListener */ public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) { if (str != null) { noStr = str; } this.noOnclickListener = onNoOnclickListener; } /** * 设置确定按钮的显示内容和监听 * * @param str * @param yesOnclickListener */ public void setYesOnclickListener(String str, onYesOnclickListener yesOnclickListener) { if (str != null) { yesStr = str; } this.yesOnclickListener = yesOnclickListener; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.zidingyi_dialog); //空白处不能取消动画 setCanceledOnTouchOutside(false); //初始化界面控件 initView(); //初始化界面数据 initData(); //初始化界面控件的事件 initEvent(); } /** * 初始化界面控件 */ private void initView() { yes = findViewById(R.id.yes); no = findViewById(R.id.no); titleTV = (TextView) findViewById(R.id.title); message = (TextView) findViewById(R.id.message); } /** * 初始化界面控件的显示数据 */ private void initData() { //如果用户自定了title和message if (titleStr != null) { titleTV.setText(titleStr); } if (messageStr != null) { message.setText(messageStr); } //如果设置按钮文字 if (yesStr != null) { yes.setText(yesStr); } if (noStr != null) { no.setText(noStr); } } /** * 初始化界面的确定和取消监听 */ private void initEvent() { //设置确定按钮被点击后,向外界提供监听 yes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (yesOnclickListener != null) { yesOnclickListener.onYesOnclick(); } } }); //设置取消按钮被点击后,向外界提供监听 no.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (noOnclickListener != null) { noOnclickListener.onNoClick(); } } }); } /** * 从外界Activity为Dialog设置标题 * * @param title */ public void setTitle(String title) { titleStr = title; } public void setMessage(String message) { messageStr = message; } public interface onNoOnclickListener { public void onNoClick(); } public interface onYesOnclickListener { public void onYesOnclick(); }}
转载地址:http://wwktn.baihongyu.com/