5.ProgressBar

//水平进度条    //圆形进度条    

5.1 ProgressBar的几个常用属性和方法

android:max="200" 滚动条最大值
android:progress="0" 滚动条当前值
android:visibility="visible" 滚动条是否可见
setProgress(int) 设置当前值
android:secondaryProgress 这个值是为了缓存准备的。

5.2 ProgressBar的样式

ProgressBar的样式设定其实有两种方式,在API文档中说明的方式如下:
Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressBar.Large.Inverse

使用的时候可以这样:style="@android:style/Widget.ProgressBar.Small",另外还有一种方式就是使用系统的attr,下面的方式是系统的style:
style="?android:attr/progressBarStyle"
style="?android:attr/progressBarStyleHorizontal"
style="?android:attr/progressBarStyleInverse"
style="?android:attr/progressBarStyleLarge"
style="?android:attr/progressBarStyleLargeInverse"
style="?android:attr/progressBarStyleSmall"
style="?android:attr/progressBarStyleSmallInverse"
style="?android:attr/progressBarStyleSmallTitle"

也可以自己定义 。
在 style="@android:style/Widget.ProgressBar.Large" 这个属性就相当于 attr.xml。点开源码是这样的:

    

下面使用步骤:
1.在drawable文件下新建一个progressbar_horizontal_1.xml。代码中的progress和secondprogress中src的资源便是我自定义的,注意这三个之间的叠放顺序,background是最底层,中间的是progress最上层是second。

<?xml version="1.0" encoding="utf-8"?>                                                                                                                                      

2.在style中新建一个自定义的style

 

3.组件引用

//水平进度条    

6.RadioGroup,RadioButton

6.1类结构

java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.widget.RadioGroup

java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.RadioButton
RadioButton继承于Button,所以具有普通按钮的各种属性,但是与普通按钮不同的是,RadioButton提供了可选中的功能。在使用RadioButton的时候,要使用RadioGroup来包围起这些RadioButton。
【备注:】RadioGroup是LinearLayout的子类,所以RadioGroup本质上是一个存放RadioButton的布局容器。
需要记住的是:默认的LinearLayout布局的Orientation属性是水平的,而默认的RadioGroup的Orientation属性是垂直的。

<?xml version="1.0" encoding="utf-8"?>                                
第七章 Android 常见的UI基础控件 (三)_第1张图片 RadioButton

6.2 RadioGroup 和RadioButton 的使用

1.系统自带的原点不好看怎么办?android :button ="@null" 这样就会没有了
2.默认选中 android:checked="true"
3.替换系统自带的icon,android:drawableleft="@mipmap/ic_lanuch"

  RadioGroup  radiogroup= (RadioGroup) findViewById(R.id.radiogroup);        radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {                RadioButton radioButton = (RadioButton) findViewById(checkedId);                String result = radioButton.getText().toString();                Toast.makeText(MainActivity.this, "您选择了:" + result,                        Toast.LENGTH_LONG).show();            }        });

7.CheckBox

CheckBox继承于Button,所以具有普通按钮的各种属性,但是与普通按钮不同的是, CheckBox 提供了可选中的功能。
【备注:】CheckBox有一个父类是CompoundButton,所以在使用监听器的时候要注意跟单选项进行区别。

<?xml version="1.0" encoding="utf-8"?>                        
public class MainActivity extends AppCompatActivity {    private CheckBox checkBox_main_hobby1;    private CheckBox checkBox_main_hobby2;    private CheckBox checkBox_main_hobby3;    private CheckBox checkBox_main_hobby4;    private CheckBox checkBox_main_selectall;    private Button button_main_submit;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.checkbox);        checkBox_main_hobby1 = (CheckBox) findViewById(R.id.checkBox_main_hobby1);        checkBox_main_hobby2 = (CheckBox) findViewById(R.id.checkBox_main_hobby2);        checkBox_main_hobby3 = (CheckBox) findViewById(R.id.checkBox_main_hobby3);        checkBox_main_hobby4 = (CheckBox) findViewById(R.id.checkBox_main_hobby4);        checkBox_main_selectall = (CheckBox) findViewById(R.id.checkBox_main_selectall);        button_main_submit = (Button) findViewById(R.id.button_main_submit);        button_main_submit.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "您选择了:" + getResult(),                        Toast.LENGTH_SHORT).show();            }        });        checkBox_main_hobby1.setOnCheckedChangeListener(listener);        checkBox_main_hobby2.setOnCheckedChangeListener(listener);        checkBox_main_hobby3.setOnCheckedChangeListener(listener);        checkBox_main_hobby4.setOnCheckedChangeListener(listener);// 给全选checkbox设置单击监听事件        checkBox_main_selectall.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                boolean flag = checkBox_main_selectall.isChecked();                checkBox_main_hobby1.setChecked(flag);                checkBox_main_hobby2.setChecked(flag);                checkBox_main_hobby3.setChecked(flag);                checkBox_main_hobby4.setChecked(flag);            }        });    }    // 定义一个有名字的监听器类。之所以不用匿名内部类形式,是因为有多个控件都要使用这同一个监听器    CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {        @Override        public void onCheckedChanged(CompoundButton buttonView,                                     boolean isChecked) {            if (!buttonView.isChecked()) {                checkBox_main_selectall.setChecked(false);            }            if (checkBox_main_hobby1.isChecked()                    && checkBox_main_hobby2.isChecked()                    && checkBox_main_hobby3.isChecked()                    && checkBox_main_hobby4.isChecked()) {                checkBox_main_selectall.setChecked(true);            }            Toast.makeText(MainActivity.this, "您选择了:" + getResult(),                    Toast.LENGTH_SHORT).show();        }    };    // 获取多选项中被勾选的结果。利用isChecked()方法来判断哪个选项被勾选    private String getResult() {        StringBuilder sb = new StringBuilder();        if (checkBox_main_hobby1.isChecked()) {            sb.append(checkBox_main_hobby1.getText());        }        if (checkBox_main_hobby2.isChecked()) {            sb.append(checkBox_main_hobby2.getText());        }        if (checkBox_main_hobby3.isChecked()) {            sb.append(checkBox_main_hobby3.getText());        }        if (checkBox_main_hobby4.isChecked()) {            sb.append(checkBox_main_hobby4.getText());        }        return sb.toString();  }}

8.Switch,RatingBar.

Switch是在4.0以后推出的,所以要注意开发时的minsdk设置,google在API 21后也推出support v7 包下的SwitchCompa的Material Design
开关控件,对低版本的有了更好的的支持。其实switch的应用场景和ToggleButton类似,多应用于两种状态的切换。

8.1 Switch 的常用属性

android:typeface="normal":设置字体类型  android:track="":设置开关的轨迹图片  android:textOff="开":设置开关checked的文字  android:textOn="关":设置开关关闭时的文字  android:thumb="":设置开关的图片  android:switchMinWidth="":开关最小宽度  android:switchPadding="":设置开关 与文字的空白距离  android:switchTextAppearance="":设置文本的风格  android:checked="":设置初始选中状态  android:splitTrack="true":是否设置一个间隙,让滑块与底部图片分隔(API 21及以上)  android:showText="true":设置是否显示开关上的文字(API 21及以上)  

8.2 Switch的使用

1.layout 布局

<?xml version="1.0" encoding="utf-8"?>                        

2.页面代码

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{        private Switch aSwitch;      private SwitchCompat aSwitchCompat;      private TextView text1,text2,switchText,switchCompatText;      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          //实例化          aSwitch = (Switch) findViewById(R.id.switch1);          aSwitchCompat = (SwitchCompat) findViewById(R.id.switch_compat);          text1 = (TextView) findViewById(R.id.text);          text2 = (TextView) findViewById(R.id.text1);          //设置Switch事件监听          aSwitch.setOnCheckedChangeListener(this);          aSwitchCompat.setOnCheckedChangeListener(this);      }        /*     继承监听器的接口并实现onCheckedChanged方法     * */      @Override      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {          switch (buttonView.getId()){              case R.id.switch1:                  if(isChecked){                      text1.setText("开");                  }else {                      text1.setText("关");                  }                  break;              case R.id.switch_compat:                  if(isChecked){                      text2.setText("开");                  }else {                      text2.setText("关");                  }                  break;              default:                  break;          }      }  }  

8.3 Switch的拓展

1.自定义样式,在values/style文件中自定义样式

       

2.然后添加到布局文件中

    

3.页面显示效果

第七章 Android 常见的UI基础控件 (三)_第2张图片 修改样式

4.还可以将图片替换开关按钮
1.导入资源图片thumb.png ,thumb_on.png ,track_nomal.png ,track_on.png ,track_press.png
2.实现thumb_selector.xml

<?xml version="1.0" encoding="utf-8"?>                   

3.实现track_selector.xml

<?xml version="1.0" encoding="utf-8"?>                                                    

4.布局文件

                        

5.代码文件

public class SecondActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{        private SwitchCompat customSwitchCompat;      private TextView custom_result,CustomSwitchCompat_tv;      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_second);          //实例化          customSwitchCompat = (SwitchCompat) findViewById(R.id.CustomSwitchCompat);          custom_result = (TextView) findViewById(R.id.custom_result);          //设置自定义的thumb和track         customSwitchCompat.setThumbResource(R.drawable.thumb_selector);          customSwitchCompat.setTrackResource(R.drawable.track_selector);          //设置Switch事件监听          customSwitchCompat.setOnCheckedChangeListener(this);      }        /*     继承监听器的接口并实现onCheckedChanged方法     * */      @Override      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                  if(isChecked){                      custom_result.setText("开");                  }else {                      custom_result.setText("关");                  }      }  }  

7.AlertDialog

在实际开发过程中,可能会碰到各种各样的弹窗。提示信息。二话不说直接一波图。

7.1分析创建对话框的步骤:

1.创建一个dialog对象

 AlertDialog.Builder builder=new AlertDialog.Builder(this);

2.创建对象之后,通过调用 create()方法构造对话框,并通过show()方法展示出来

 AlertDialog alertDialog = builder.create(); alertDialog.show();

3.通过setXXX()方法,设置你所需要的各种属性

    alertDialogBuilder.setTitle();//设置标题    alertDialogBuilder.setIcon();//设置图表    /*设置下方按钮*/    alertDialogBuilder.setPositiveButton();    alertDialogBuilder.setNegativeButton();    alertDialogBuilder.setNeutralButton();    /*对话框内容区域的设置提供了多种方法*/    setMessage();//设置显示文本    setItems();//设置对话框内容为简单列表项    setSingleChoiceItems();//设置对话框内容为单选列表项    setMultiChoiceItems();//设置对话框内容为多选列表项    setAdapter();//设置对话框内容为自定义列表项    setView();//设置对话框内容为自定义View    //设置对话框是否可取消    setCancelable(booleab cancelable);    setCancelListener(onCancelListener);
还有这样一种方式创建dialog
    new AlertDialog.Builder(this)     .setTitle("确认")    .setMessage("确定吗?")    .setPositiveButton("是", ew DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        })    .setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        })    .show();

7.2 创建对话框的步骤

1.创建layout文件

<?xml version="1.0" encoding="utf-8"?>    

2.创建Activity

public class MyAlertDiaologActivity  extends AppCompatActivity implements View.OnClickListener{    //对应各个button    private Button simpleDiaog;    private Button simpleListDiaog;    private Button singleChoiceDiaog;    private Button multiChoiceDiaog;    private Button customAdateprDiaog;    private Button customViewDiaog;    //声明一个AlertDialog构造器    private AlertDialog.Builder builder;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_dialog);        //实例化控件        simpleDiaog= (Button) findViewById(R.id.btn_simple_dialog);        simpleListDiaog= (Button) findViewById(R.id.btn_simple_list_dialog);        singleChoiceDiaog= (Button) findViewById(R.id.btn_single_choice_dialog);        multiChoiceDiaog= (Button) findViewById(R.id.btn_multi_choice_dialog);        customAdateprDiaog= (Button) findViewById(R.id.btn_custom_adapter_dialog);        customViewDiaog= (Button) findViewById(R.id.btn_custom_view_dialog);        //监听点击事件        simpleDiaog.setOnClickListener(this);        simpleListDiaog.setOnClickListener(this);        singleChoiceDiaog.setOnClickListener(this);        multiChoiceDiaog.setOnClickListener(this);        customAdateprDiaog.setOnClickListener(this);        customViewDiaog.setOnClickListener(this);    }    /**     *     * 每个button点击后弹出对应对话框,为了方便,各写一个showXXDialog()方法     */    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.btn_simple_dialog:                showSimpleDialog(view);                break;            case R.id.btn_simple_list_dialog:                showSimpleListDialog(view);                break;            case R.id.btn_single_choice_dialog:                showSingleChoiceDialog(view);                break;            case R.id.btn_multi_choice_dialog:                showMultiChoiceDialog(view);                break;            case R.id.btn_custom_adapter_dialog:                showCustomAdapterDialog(view);                break;            case R.id.btn_custom_view_dialog:                showCustomViewDialog(view);                break;        }    }}

3.展示基本对话框

 //展示基本对话框    //显示基本Dialog    private void showSimpleDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("简单对话框");        builder.setMessage("展示简单的对话框的内容");        //监听下方button点击事件        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        });        //设置对话框是可取消的        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }
第七章 Android 常见的UI基础控件 (三)_第3张图片 基本对话框

4.列表对话框

 //展示列表对话框    private void showSimpleListDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("列表对话框");        /**         * 设置内容区域为简单列表项         */        final String[] Items={"列表一","列表二","列表三"};        builder.setItems(Items, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "You clicked "+Items[i], Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }
第七章 Android 常见的UI基础控件 (三)_第4张图片 列表对话框

5.单选框

  //单选框    private void showSingleChoiceDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("单选框");        /**         * 设置内容区域为单选列表项         */        final String[] items={"列表一","列表二","列表三"};        builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "You clicked "+items[i], Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }
第七章 Android 常见的UI基础控件 (三)_第5张图片 单选框

6.多选框

  builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle(R.string.simple_list_dialog);        /**         * 设置内容区域为多选列表项         */        final String[] items={"Items_one","Items_two","Items_three"};        builder.setMultiChoiceItems(items, new boolean[]{true, false, true}, new DialogInterface.OnMultiChoiceClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i, boolean b) {                Toast.makeText(getApplicationContext(),"You clicked "+items[i]+" "+b,Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();
第七章 Android 常见的UI基础控件 (三)_第6张图片 多选框

7.输入框

//输入框    private void showCustomAdapterDialog(View view) {        final EditText editText = new EditText(this);        editText.setHint("最多输入6个字");       builder=new AlertDialog.Builder(this);        builder.setTitle("输入框");        builder.setIcon(R.mipmap.ic_launcher);        builder.setView(editText);        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }
第七章 Android 常见的UI基础控件 (三)_第7张图片 输入框

8.自定义框

    //自定义输入框    private void showCustomViewDialog(View view) {        ImageView img = new ImageView(this);        img.setImageResource(R.mipmap.ic_launcher);        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("自定义对话框");        builder.setView(img);        //监听下方button点击事件        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        });        //设置对话框是可取消的        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }
第七章 Android 常见的UI基础控件 (三)_第8张图片 自定义框

自定义一般就是自定义一个view,然后展示这个view的内容

第七章 Android 常见的UI基础控件 (三)_第9张图片 dialog图

layout文件上面有。
完整代码:

import android.content.DialogInterface;import android.graphics.Bitmap;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;/** * Created by ${momoThree} on 2017/9/11. * Title: */public class MyAlertDiaologActivity  extends AppCompatActivity implements View.OnClickListener{    //对应各个button    private Button simpleDiaog;    private Button simpleListDiaog;    private Button singleChoiceDiaog;    private Button multiChoiceDiaog;    private Button customAdateprDiaog;    private Button customViewDiaog;    //声明一个AlertDialog构造器    private AlertDialog.Builder builder;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_dialog);        //实例化控件        simpleDiaog= (Button) findViewById(R.id.btn_simple_dialog);        simpleListDiaog= (Button) findViewById(R.id.btn_simple_list_dialog);        singleChoiceDiaog= (Button) findViewById(R.id.btn_single_choice_dialog);        multiChoiceDiaog= (Button) findViewById(R.id.btn_multi_choice_dialog);        customAdateprDiaog= (Button) findViewById(R.id.btn_custom_adapter_dialog);        customViewDiaog= (Button) findViewById(R.id.btn_custom_view_dialog);        //监听点击事件        simpleDiaog.setOnClickListener(this);        simpleListDiaog.setOnClickListener(this);        singleChoiceDiaog.setOnClickListener(this);        multiChoiceDiaog.setOnClickListener(this);        customAdateprDiaog.setOnClickListener(this);        customViewDiaog.setOnClickListener(this);    }    /**     *     * 每个button点击后弹出对应对话框,为了方便,各写一个showXXDialog()方法     */    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.btn_simple_dialog:                showSimpleDialog(view);                break;            case R.id.btn_simple_list_dialog:                showSimpleListDialog(view);                break;            case R.id.btn_single_choice_dialog:                showSingleChoiceDialog(view);                break;            case R.id.btn_multi_choice_dialog:                showMultiChoiceDialog(view);                break;            case R.id.btn_custom_adapter_dialog:                showCustomAdapterDialog(view);                break;            case R.id.btn_custom_view_dialog:                showCustomViewDialog(view);                break;        }    }    //自定义输入框    private void showCustomViewDialog(View view) {        ImageView img = new ImageView(this);        img.setImageResource(R.mipmap.ic_launcher);        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("自定义对话框");        builder.setView(img);        //监听下方button点击事件        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        });        //设置对话框是可取消的        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }    //输入框    private void showCustomAdapterDialog(View view) {        final EditText editText = new EditText(this);        editText.setHint("最多输入6个字");       builder=new AlertDialog.Builder(this);        builder.setTitle("输入框");        builder.setIcon(R.mipmap.ic_launcher);        builder.setView(editText);        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }    //多选框    private void showMultiChoiceDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("多选框");        /**         * 设置内容区域为多选列表项         */        final String[] items={"列表一","列表二","列表三"};        builder.setMultiChoiceItems(items, new boolean[]{true, false, true}, new DialogInterface.OnMultiChoiceClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i, boolean b) {                Toast.makeText(getApplicationContext(),"You clicked "+items[i]+" "+b,Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }    //单选框    private void showSingleChoiceDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("单选框");        /**         * 设置内容区域为单选列表项         */        final String[] items={"列表一","列表二","列表三"};        builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "You clicked "+items[i], Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }    //展示列表对话框    private void showSimpleListDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("列表对话框");        /**         * 设置内容区域为简单列表项         */        final String[] Items={"列表一","列表二","列表三"};        builder.setItems(Items, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "You clicked "+Items[i], Toast.LENGTH_SHORT).show();            }        });        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }    //展示基本对话框    //显示基本Dialog    private void showSimpleDialog(View view) {        builder=new AlertDialog.Builder(this);        builder.setIcon(R.mipmap.ic_launcher);        builder.setTitle("简单对话框");        builder.setMessage("展示简单的对话框的内容");        //监听下方button点击事件        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(),"您点击了确定内容",Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();            }        });        //设置对话框是可取消的        builder.setCancelable(true);        AlertDialog dialog=builder.create();        dialog.show();    }}

8.ProgressDialog

8.1 Progressdialog 类结构

java.lang.Object
 ↳android.app.Dialog
  ↳android.app.AlertDialog
   ↳android.app.ProgressDialog

8.2 ProgressDialog 的分析

ProgressDialog从上面的类结构就可以看出他是继承dailog的。所以作为弹窗式的进度条。它应该有亮着的特征。
1.在Activity中作为一个窗体弹出
2.拥有进度的统计和样式(圆形和水平)

8.3 ProgressDialog的使用

1.创建ProgressDialog

//方式一:  final ProgressDialog dialog = new ProgressDialog(this);    dialog.show();  
//方式二 这种进度条只能是圆形条,设置title和Message提示内容 ProgressDialog dialog2 = ProgressDialog.show(this, "提示", "正在登陆中");  
//方式三   这种进度条只能是圆形条,这里最后一个参数boolean indeterminate设置是否是不明确的状态  ProgressDialog dialog3 = ProgressDialog .show(this, "提示", "正在登陆中", false);  
//方式四 这种进度条只能是圆形条,这里最后一个参数boolean cancelable 设置是否进度条是可以取消的 ProgressDialog dialog4 = ProgressDialog.show(this, "提示", "正在登陆中",  false, true); 
//方式五 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数 DialogInterface.OnCancelListener  // cancelListener用于监听进度条被取消  ProgressDialog dialog5 = ProgressDialog.show(this, "提示", "正在登陆中", true,  true, cancelListener);  private OnCancelListener cancelListener = new OnCancelListener() {      @Override      public void onCancel(DialogInterface dialog) {          // TODO Auto-generated method stub          Toast.makeText(MainActivity.this, "进度条被取消", Toast.LENGTH_LONG)                  .show();      }  }; 

2.ProgressDialog的样式有两种,一种是圆形不明确状态,一种是水平进度条状态
1.水平进度条

  final ProgressDialog dialog = new ProgressDialog(this);      dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条      dialog.setCancelable(true);// 设置是否可以通过点击Back键取消      dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条      dialog.setIcon(R.drawable.ic_launcher);// 设置提示的title的图标,默认是没有的      dialog.setTitle("提示");      dialog.setMax(100);      dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",              new DialogInterface.OnClickListener() {                    @Override                  public void onClick(DialogInterface dialog, int which) {                      // TODO Auto-generated method stub                    }              });      dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",              new DialogInterface.OnClickListener() {                    @Override                  public void onClick(DialogInterface dialog, int which) {                      // TODO Auto-generated method stub                    }              });      dialog.setMessage("这是一个水平进度条");      dialog.show();      new Thread(new Runnable() {          @Override          public void run() {              // TODO Auto-generated method stub              int i = 0;              while (i < 100) {                  try {                      Thread.sleep(200);                      // 更新进度条的进度,可以在子线程中更新进度条进度                      dialog.incrementProgressBy(1);                      // dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式                      i++;                    } catch (Exception e) {                      // TODO: handle exception                  }              }              // 在进度条走完时删除Dialog              dialog.dismiss();          }      }).start();  

2.圆形进度条

final ProgressDialog dialog = new ProgressDialog(this);          dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条          dialog.setCancelable(true);// 设置是否可以通过点击Back键取消          dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条          dialog.setIcon(R.drawable.ic_launcher);//          // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的          dialog.setTitle("提示");          // dismiss监听          dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {                @Override              public void onDismiss(DialogInterface dialog) {                  // TODO Auto-generated method stub                }          });          // 监听Key事件被传递给dialog          dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {                @Override              public boolean onKey(DialogInterface dialog, int keyCode,                      KeyEvent event) {                  // TODO Auto-generated method stub                  return false;              }          });          // 监听cancel事件          dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {                @Override              public void onCancel(DialogInterface dialog) {                  // TODO Auto-generated method stub                }          });          //设置可点击的按钮,最多有三个(默认情况下)          dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",                  new DialogInterface.OnClickListener() {                        @Override                      public void onClick(DialogInterface dialog, int which) {                          // TODO Auto-generated method stub                        }                  });          dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",                  new DialogInterface.OnClickListener() {                        @Override                      public void onClick(DialogInterface dialog, int which) {                          // TODO Auto-generated method stub                        }                  });          dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",                  new DialogInterface.OnClickListener() {                        @Override                      public void onClick(DialogInterface dialog, int which) {                          // TODO Auto-generated method stub                        }                  });          dialog.setMessage("这是一个圆形进度条");          dialog.show();          new Thread(new Runnable() {                @Override              public void run() {                  // TODO Auto-generated method stub                  try {                      Thread.sleep(5000);                      // cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是                      // 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉                      dialog.cancel();                      // dialog.dismiss();                  } catch (InterruptedException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }              }          }).start();  

更多相关文章

  1. Android实现朋友圈点赞列表
  2. 新书内容连载(3):Android SDK中常用命令行工具(一)
  3. android对话框的使用
  4. android 对话框的封装
  5. Android 之 对话框总结
  6. TableRow 背景问题以及修改对话框标题高度或者图片
  7. android遮罩阴影对话框的实现
  8. iPhone和Android UI模式比较列表

随机推荐

  1. Android(安卓)& MCU之间的串口通信(收发数
  2. NiceVieoPlayer 完美视频播放器 解决黑屏
  3. Android(安卓)4.0 系统源代码将于本月17
  4. 百度91无线公司招聘无线开发程序员(Androi
  5. Android之使用adb wireless进行调试
  6. Android开发——菜单ActionBar
  7. 为什么移动端跨平台开发不靠谱?
  8. Android语音识别的具体实现实例特点分析
  9. Android中TextView首行缩进处理办法
  10. Android(安卓)使用LeakCanary 检测内存泄