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对话框:
(一)、分类:
  1. AlertDialog   警告对话框(提示对话框)
  2. ProgressDialog    进度对话框
  3. DatePickerDialog   日期选择对话框
  4. TimerPickerDialog   时间选择对话框
  5. 自定义对话框(登录对话框、关于对话框)
  6. 列表对话框
    • 普通列表对话框
    • 单选列表对话框
    • 多选列表对话框
    • 带图标的列表对话框

(二)、AlertDialog ——简单对话框: 
1、类结构:
java.lang.Object
   ↳  android.app.Dialog
      ↳  android.app.AlertDialog
 
2、创建AlertDialog对话框的步骤
  1. 创建AlertDialog.Builder对象,该对象能创建AlertDialog;
  2. 调用Builder对象的方法设置图标、标题、内容、按钮等;
    • setTitle():为对话框设置标题
    • setIcon ():设置图标
    • setMessage ():设置要显示的信息
    • setNegativeButton ():设置取消按钮
    • setPositiveButton ():设置确定按钮
    • setNeutralButton ():设置中立按钮
  3. 调用Builder对象的create()方法创建AlertDialog对话框;
  4. 调用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对话框的步骤
  1. 创建AlertDialog.Builder对象,该对象能创建AlertDialog;
  2. 调用Builder对象的方法设置图标、标题、内容、按钮等;
    • setTitle():为对话框设置标题
    • setIcon ():设置图标
    • setMessage ():设置要显示的信息
    • setNegativeButton ():设置取消按钮
    • setPositiveButton ():设置确定按钮
    • setNeutralButton ():设置中立按钮
    • setItems ():为对话框添加列表项
    • setSingleChoiceItems ():为对话框添加单选列表项
    • setMultiChoiceItems ():为对话框添加多选列表项
    • setAdapter ():为对话框添加带图标的列表项
  3. 调用Builder对象的create()方法创建AlertDialog对话框;
  4. 调用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对话框的步骤
  1. 创建AlertDialog.Builder对象,该对象能创建AlertDialog;
  2. 调用Builder对象的方法设置图标、标题、内容、按钮等;
  • setTitle():为对话框设置标题
  • setIcon ():设置图标
  • setMessage ():设置要显示的信息
  • setNegativeButton ():设置取消按钮
  • setPositiveButton ():设置确定按钮
  • setNeutralButton ():设置中立按钮
  1. 自定义布局文件;
  2. 使用LayoutInflater  inflater()方法填充自定义的布局文件,返回view对象。用该对象的findViewById()方法加载自定义布局上所有控件;
  3. 调用Builder对象的setView()方法加载view对象;
  4. 调用Builder对象的create()方法创建AlertDialog对话框;
  5. 调用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
原创粉丝点击