Android26_ProgressBar及Dialog
2015-06-05 17:12
465 查看
一、 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. 带图标的列表dialog button_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();
相关文章推荐
- android如何让service不被杀死-提高进程优先级
- Android Studio 最常用的快捷键(待续)
- android基础-利用SharedPreferences实现用户记住密码和自动登录
- Android:横行滚动且隔行变色的ListView控件
- Android25_ActionBar
- Android Camera 视频循环录制
- Android_View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- Android4.4 Camera 摄像头镜像问题
- Android SDK 下载速度慢解决方法
- Android24_LruCache缓存处理及异步加载图片类的封装
- android performClick使用
- Android相对布局RelativeLayout详解
- Android之常见错误
- Android系统自带样式(android:theme)
- Android 输入法导致EditText编辑框问题
- 笔记112--Android打开各种文件(setDataAndType)
- Android软件开发之发送短信与系统短信库解析
- Android优秀开源项目(一)
- Android.mk 加载cpp文件的快捷方法
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)