ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

八、Android UI对话框

2021-02-04 18:03:27  阅读:237  来源: 互联网

标签:对话框 int param month AlertDialog UI 设置 Android


8.1对话框
① AletDialog:提示对话框:功能最为丰富,实际应用最为广泛的对话框。
② ProgressDialog:进度对话框,是对简单进度条的封装。
③DataPickerDialog:日期选择对话框。
④TimePickerDialog:时间选择对话框。
⑤ 自定义对话框:对话框布局自定义,并设置监听事件
8.1.1 AlertDialog(警示对话框 )
AlertDialog生成的对话框分为4个区域:图标区、标题区、内容区和按钮区。
创建对话框的步骤:
使用AlertDialog.Builder创建对象
调用AlertDialog.Builder的setTitle(或setCustomTitle()方法设置标题。
调用AlertDialog.Builder的setIcon()方法设置图标
调用AlertDialog.Builder的相关设置方法设置对话框内容
调用AlertDialog.Builder的setPositiveButton、setNegativeButton()或setNeutralButton0)方法添加多个按钮。
调用AlertDialog.Builder的create(方法创建AlertDialog对象,再调用AlertDialog对象的show)方。法将该对话框显示出来。

自定义对话框:

1.创建一个自定义样式文件
2.//获取布局文件 View view=getLayoutInflflater().inflflate(R.layout.test,null);
//设置的自定义样式布局文件;直接使用布局文件id设置视图
builder.setView(view);
//获取自定义组件id
Button btn= view.fifindViewById(R.id.login); btn.setText(“测试登录”);

dismiss() cancel() 功能效果一样;cancel回调setOnCancelListener();

8.1.2 ProgressDialog (进度条对话框)
将进度条简单包裹起来,可以设置进度条的各种式样,启动线程,模拟耗时任务的进行,下载完成后,自动消失。
显示加载进度;以弹出形式显示;结合Dialog 与 Progressbar;
API 26:不建议使用进度条对话框

//this表示该对话框是针对当前Activity的 ProgressDialog 
progressDialog = new ProgressDialog(DialogActivity.this);
 //设置最大值为100 
 progressDialog.setMax(100)
 // 设置可以被取消;back 其他位置 
 progressDialog.setCancelable(true); 
  // 点击外部返回 
 progressDialog.setCanceledOnTouchOutside(true);
   //设置进度条
 progressDialog.setProgress(100);  
  //设置进度条风格STYLE_HORIZONTAL 
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //精确 水平 圆圈 
progressDialog.setTitle("任务进度"); progressDialog.setMessage("耗时任务完成百分比"); 
progressDialog.setIndeterminate(false); //精确显示 
progressDialog.show(); //放在show()之后,不然有些属性是没有效果的,比如height和width Window dialogWindow = dialog.getWindow(); 
WindowManager m = getWindowManager(); Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 
WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的 参数值
 // 设置高度和宽度 
 p.height = (int) (d.getHeight() * 0.4); 
 // 高度设置为屏幕的0.6 
 p.width = (int) (d.getWidth() * 0.6); 
 // 宽度设置为屏幕的0.65 
 p.gravity = Gravity.TOP;//设置位置 
 p.alpha = 0.8f;//设置透明度
 dialogWindow.setAttributes(p); //设置按钮 
 dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消任务", new DialogInterface.OnClickListener() { 
 @Override
  public void onClick(DialogInterface dialog, int which) { dialog.cancel(); 
  } 
  });

8.1.3 DateDialog
用于显示日期设置:
构造方法初始化:month 0-11;比实际月份小1
DatePickerDialog.OnDateSetListener():事件处理
onDateSet(DatePicker view, int year, int month, int dayOfMonth):获取用户选择日期
自定义样式参照:AlertDialog

//获取系统的当前日期:0-11 
Calendar calendar=Calendar.getInstance(); 
int year=calendar.get(Calendar.YEAR); 
int month=calendar.get(Calendar.MONTH);;
int day=calendar.get(Calendar.DAY_OF_MONTH);; 
System.out.println(month); 
//1.创建日期对话框: 
/*** @param context 上下文
 * @param listener 监听器 
 * @param year 初始化年月日
 * @param month 值比实际值月小1
  {@link Calendar#MONTH})
  * @param dayOfMonth the initially selected day of month (1-31, depending
      * on month) 
      */

DatePickerDialog dialog=new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
@Override//可以获取用户设置的日期 
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
String meg=year+"年"+(month+1)+"月"+dayOfMonth+"日"; Log.i("info=>",meg); } 
},year,month,day);
 dialog.show(); 

8.1.4 TimePickerDialog


//1.获取系统的当期时间
 Calendar calendar=Calendar.getInstance(); int hour=calendar.get(Calendar.HOUR); int minute=calendar.get(Calendar.MINUTE); 
 //2.创建时间对话框 
 /**
 * @param context :在哪个页面活动 
 * @param listener :事件处理 
 * @param hourOfDay :小时 
 * @param minute :分钟 
 * @param is24HourView :是否24小时进制显示boolean 
 */
 
TimePickerDialog dialog=new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { 
@Override 
//回显用户设置的时间
 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
  Toast.makeText(MainActivity.this,"用户设置时 间:"+hourOfDay+":"+minute,Toast.LENGTH_LONG).show();
   } }, hour, minute, true);
    //3.设置基本属性 
    //dialog.set 
    //4.显示
     dialog.show(); 

标签:对话框,int,param,month,AlertDialog,UI,设置,Android
来源: https://blog.csdn.net/weixin_45802395/article/details/113643430

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有