Android26_ProgressBar及Dialog
来源:互联网 发布:淘宝异想星球万物萌生 编辑:程序博客网 时间:2024/06/06 13:20
一、 ProgressBar 及其子类进度条:
(一)、 ProgressBar 进度条:
1、作用:androidUI中常用的控件,通常用于向用户显示某个耗时操作,让用户感觉到程序在运行,而并非无响应。目的是提高用户界面的友好性。
2、类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.ProgressBar
3、核心代码:
//UI代码:本示例代码中写了一个默认隐藏的小的模糊进度条。进度条样式由style属性控制。<ProgressBar android:id="@+id/progressBar_main" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" />//java代码:本示例代码中写了一个点击按钮可以隐藏和显示的模糊进度条。public void onClick(View v) { if (!flag) { flag = true; progressBar_main.setVisibility(View.VISIBLE); } else { flag = false; progressBar_main.setVisibility(View.GONE); }}
(二)、SeekBar 拖动条:
1、类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.ProgressBar
↳ android.widget.AbsSeekBar
↳ android.widget.SeekBar
2、核心代码:
//UI代码:本示例代码中写了一个拖动滑块。文字大小和图片透明度改变的例子。<SeekBar android:id="@+id/seekBar_main" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="255" android:progress="1" />//java代码:本示例代码中写了一个拖动滑块。文字大小和图片透明度改变的例子。//需要记住的是:拖动条的监听事件是OnSeekBarChangeListener。seekBar_main.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { text_main_info.setText(progress + ""); text_main_info.setTextSize(progress); imageView_main.setAlpha(progress); }});
(三)、RatingBar 星级评分条:
1、类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.ProgressBar
↳ android.widget.AbsSeekBar
↳ android.widget.RatingBar
2、核心代码:
//UI代码:本示例代码中写了一个获取评分星级的例子。<RatingBar android:id="@+id/ratingBar_main" android:layout_width="wrap_content" android:layout_height="wrap_content" />//java代码://需要记住的是:拖动条的监听事件是OnRatingBarChangeListener。ratingBar_main.setOnRatingBarChangeListener(new OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { text_main_info.setText("您评的等级为:" + rating); }});
二、Dialog对话框:
(一)、分类:
- AlertDialog 警告对话框(提示对话框)
- ProgressDialog 进度对话框
- DatePickerDialog 日期选择对话框
- TimerPickerDialog 时间选择对话框
- 自定义对话框(登录对话框、关于对话框)
- 列表对话框
- 普通列表对话框
- 单选列表对话框
- 多选列表对话框
- 带图标的列表对话框
(二)、AlertDialog ——简单对话框:
1、类结构:
java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
2、创建AlertDialog对话框的步骤:
- 创建AlertDialog.Builder对象,该对象能创建AlertDialog;
- 调用Builder对象的方法设置图标、标题、内容、按钮等;
- setTitle():为对话框设置标题
- setIcon ():设置图标
- setMessage ():设置要显示的信息
- setNegativeButton ():设置取消按钮
- setPositiveButton ():设置确定按钮
- setNeutralButton ():设置中立按钮
- 调用Builder对象的create()方法创建AlertDialog对话框;
- 调用AlertDialog的show()方法来显示对话框。
3、核心代码:
Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.ic_launcher);builder.setTitle("提示");builder.setMessage("确认退出吗?");builder.setPositiveButton("确认", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { text_main_info.setText("您点击了:" + which); }});builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { text_main_info.setText("您点击了:" + which); }});builder.setNeutralButton("中立", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { text_main_info.setText("您点击了:" + which); }});builder.create().show();
(三)、AlertDialog——列表对话框:
1、类结构:
java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
2、创建列表AlertDialog对话框的步骤:
- 创建AlertDialog.Builder对象,该对象能创建AlertDialog;
- 调用Builder对象的方法设置图标、标题、内容、按钮等;
- setTitle():为对话框设置标题
- setIcon ():设置图标
- setMessage ():设置要显示的信息
- setNegativeButton ():设置取消按钮
- setPositiveButton ():设置确定按钮
- setNeutralButton ():设置中立按钮
- setItems ():为对话框添加列表项
- setSingleChoiceItems ():为对话框添加单选列表项
- setMultiChoiceItems ():为对话框添加多选列表项
- setAdapter ():为对话框添加带图标的列表项
- 调用Builder对象的create()方法创建AlertDialog对话框;
- 调用AlertDialog的show()方法来显示对话框。
3、核心代码:
【备注:使用setItems ()、setSingleChoiceItems ()、setMultiChoiceItems () 、setAdapter()能得到不同的结果。】
//A. 普通列表button_main_simpleListDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("请选择颜色:"); final String[] arrColor = new String[] { "红色", "绿色","蓝色" }; // 往对话框中放置普通列表 builder.setItems(arrColor, new OnClickListener() { // 以下代码是模拟:勾选选项后,文字颜色和文本框背景颜色相应发生改变 @Override public void onClick(DialogInterface dialog , int which) { text_main_info.setText(arrColor[which]); switch (which) { case 0: text_main_info.setBackgroundColor(Color.RED); break; case 1: text_main_info.setBackgroundColor(Color.GREEN); break; case 2: text_main_info.setBackgroundColor(Color.BLUE); break; default: break; } } }); builder.show(); }});//B. 单选列表button_main_singleListDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("请选择颜色:"); final String[] arrColor = new String[] { "红色", "绿色","蓝色" }; // 往对话框中放置单选列表 builder.setSingleChoiceItems(arrColor, 0, new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { position = which;//通过这个监听器获取到点击的是第几个 } }); builder.setPositiveButton("确认", new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { text_main_info.setText(arrColor[position]); switch (position) { case 0: text_main_info.setBackgroundColor(Color.RED); break; case 1: text_main_info.setBackgroundColor(Color.GREEN); break; case 2: text_main_info.setBackgroundColor(Color.BLUE); break; default: break; } } }); builder.show(); }});//C. 多选列表button_main_multiListDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("请选择颜色:"); final String[] hobbyArr = new String[] { "看书", "学习","饮食", "爬山", "绘画" }; // 将多选项中每次勾选的结果放到一个pos数组中。 pos = new boolean[hobbyArr.length]; // 往对话框中放置多选列表 builder.setMultiChoiceItems(hobbyArr, null, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog,int which, boolean isChecked) { pos[which] = isChecked;//将每一项被勾选的状态放到一个boolean型的数组中 } }); // 多选列表项必须要使用确认按钮才能最终获得所有勾选的数据。 builder.setPositiveButton("确认", new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { // 将所有的勾选项放到一个字符串中 StringBuilder sb = new StringBuilder(); for (int i = 0; i < pos.length; i++) { if (pos[i]) { sb.append(hobbyArr[i]); sb.append("、"); } } text_main_info.setText("您勾选了:" + sb.toString()); } }); builder.show(); }});//D. 带图标的列表dialogbutton_main_adapterListDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("手机设置:"); // 定义数据源。以下是模拟数据。真实工作中,有可能是从网络上获取数据,也有可能是从xml配置文件中获取数据。 // 考虑到后期维护,很少在java文件中以定义数组的形式作为适配器的数据来源。 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for (int i = 0; i < settingArr.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("settingType", settingArr[i]); map.put("imageId", imageId[i]); list.add(map); } // 使用SimpleAdapter将数据源和自定义布局文件结合到一起。 SimpleAdapter adapter = new SimpleAdapter( MainActivity.this, list, R.layout.item_dialog, new String[] { "settingType", "imageId" }, new int[] { R.id.text_item_dialog, R.id.imageView_item_dialog }); // 调用builder的setAdapter()方法将适配器加载到对话框中。 builder.setAdapter(adapter, new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { text_main_info.setText("您选择设置:" + settingArr[which]); } }); // 显示对话框 builder.show(); }});
(四)、AlertDialog——自定义对话框:
1、类结构:
java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
2、创建自定义AlertDialog对话框的步骤:
- 创建AlertDialog.Builder对象,该对象能创建AlertDialog;
- 调用Builder对象的方法设置图标、标题、内容、按钮等;
- setTitle():为对话框设置标题
- setIcon ():设置图标
- setMessage ():设置要显示的信息
- setNegativeButton ():设置取消按钮
- setPositiveButton ():设置确定按钮
- setNeutralButton ():设置中立按钮
- 自定义布局文件;
- 使用LayoutInflater 的 inflater()方法填充自定义的布局文件,返回view对象。用该对象的findViewById()方法加载自定义布局上所有控件;
- 调用Builder对象的setView()方法加载view对象;
- 调用Builder对象的create()方法创建AlertDialog对话框;
- 调用AlertDialog的show()方法来显示对话框。
3、核心代码:本示例代码中写了一个显示登录窗口的登录框。
【备注:】采用LayoutInflater去填充布局,返回view对象。
View view = null;Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.ic_launcher);builder.setTitle("管理员登录:");LayoutInflater mInflater = LayoutInflater.from(MainActivity.this);view = mInflater.inflate(R.layout.loginform_main, null);final EditText edit_loginform_username = (EditText) view .findViewById(R.id.edit_loginform_username);final EditText edit_loginform_password = (EditText) view .findViewById(R.id.edit_loginform_password);builder.setView(view);builder.setPositiveButton("登录", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String username = edit_loginform_username.getText() .toString().trim(); String password = edit_loginform_password.getText() .toString().trim(); if (username.length() < 1 || password.length() < 1) { text_main_info.setText("用户名或密码不可以为空!"); } else { StringBuilder sb = new StringBuilder(); sb.append("您的登录信息:"); sb.append("用户名:"); sb.append(username); sb.append("密码:"); sb.append(password); text_main_info.setText(sb.toString()); } }});builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //此处进行异步任务访问网络等处理。 }});builder.create().show();
(五)、ProgressDialog——进度对话框:
1、类结构:
java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
↳ android.app.ProgressDialog
2、创建 ProgressDialog 对话框的步骤:
- 实例化ProgressDialog,创建出ProgressDialog对象;
- 调用该对象的方法设置图标、标题、内容、按钮等;
- setTitle():为对话框设置标题
- setIcon ():设置图标
- setMessage ():设置要显示的信息
- 调用 ProgressDialog 对象的show()方法显示出 ProgressDialog 对话框。
3、核心代码:
ProgressDialog pDialog = new ProgressDialog(MainActivity.this);pDialog.setTitle("提示:");pDialog.setMessage("数据加载中。。。");pDialog.show();
(六)、DatePickerDialog——日期选择对话框:
1、类结构:
java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
↳ android.app.DatePickerDialog
2、创建 DatePickerDialog 对话框的步骤:
- 实例化 DatePickerDialog ,创建出 DatePickerDialog 对象;
- 调用 DatePickerDialog 对象的show()方法显示出 DatePickerDialog 对话框;
- 绑定监听器:OnDateSetListener().
3、核心代码:
// 获取系统当前日期Calendar calendar = Calendar.getInstance();DatePickerDialog datePickerDialog = new DatePickerDialog( MainActivity.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { text_main_info.setText("您选择了:" + year + ":" + (monthOfYear + 1) + ":" + dayOfMonth); } }, calendar.get(Calendar.YEAR), calendar .get(Calendar.MONTH), calendar .get(Calendar.DAY_OF_MONTH));datePickerDialog.setCancelable(true);datePickerDialog.show();
0 0
- Android26_ProgressBar及Dialog
- 拨号及dialog列表
- Android24_ActionBar及Dialog
- Dialog及Menu
- 13、Dialog及Menu
- Dialog及Menu
- Android 对话框(Dialog) 及 自定义Dialog
- dialog及gdialog命令测试
- 自定义样式dialog及使用
- Dialog详解及自定义对话框
- dialog改变大小及位置
- android 中Dialog对话框及自定义Dialog的方法
- android开发之自定义dialog及dialog替换activity好处
- Service启动Dialog及小米手机无法弹出Dialog问题
- 笔记8 Dialog常见类型及常用属性 自定义dialog
- Dialog 背景透明及显示位置设置
- Android Dialog更改样式及显示位置
- Android自定义Dialog 及位置和大小
- jsp中文乱码
- 游戏开发学习笔记-1.空白窗口
- 微软“失落的十年”
- 如何为CentOS 7配置静态IP地址
- SQL server复制数据库失败 启动 SQL Server 代理作业 (错误)的解决方案
- Android26_ProgressBar及Dialog
- Virtualbox -- virtual networking mode 网络模式解析(一)
- GRE数学复习时需要注意的四点
- Spark调研笔记第2篇 - 如何通过Spark客户端向Spark提交任务
- freopen - C/C++文件输入输出利器
- 判断多对多时候中是否存在该对象语句
- MyBatis的使用
- combBox可以将数据显示出来,但是取不到所选的id
- 剑指offer 面试题30 最小的K个数