Android UI设计之AlertDialogd窗控件

Android UI设计之AlertDialogd窗控件,第1张

概述有关android的d窗界面相信大家见过不少了,手机上很多应用软件都涉及到d窗控件,比如典型的每次删除一个图片或者卸载一个等都会d出一个窗口询问是否删除/卸载等,还有我们系统的设置时间/日期等,都用到了这样的控

有关androID的d窗界面相信大家见过不少了,手机上很多应用软件都涉及到d窗控件,比如典型的每次删除一个图片或者卸载一个等都会d出一个窗口询问是否删除/卸载等,还有我们系统的设置时间/日期等,都用到了这样的控件,下面我将通过代码来总结下常用的几个d窗控件

activity_main.xml

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  xmlns:tools="http://schemas.androID.com/tools"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  androID:orIEntation="vertical"  tools:context="com.company.alertdialog.MainActivity">  <button    androID:ID="@+ID/btn1"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:onClick="onClick"    androID:text="列表d窗" />  <button    androID:ID="@+ID/btn2"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:onClick="onClick"    androID:text="单选d窗" />  <button    androID:ID="@+ID/btn3"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:onClick="onClick"    androID:text="多选d窗" />  <button    androID:ID="@+ID/btn4"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:onClick="onClick"    androID:text="日期d窗" />  <button    androID:ID="@+ID/btn5"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:onClick="onClick"    androID:text="时间d窗" />  <button    androID:ID="@+ID/btn6"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:onClick="onClick"    androID:text="进度条d窗" /></linearLayout>

strings.xml

<resources>  <string name="app_name">AlertDialog</string>  <string-array name="List">    <item>列表一</item>    <item>列表二</item>    <item>列表三</item>    <item>列表四</item>    <item>列表五</item>    <item>列表六</item>  </string-array></resources>

MainActivity.java

public class MainActivity extends AppCompatActivity implements VIEw.OnClickListener {  //表示列表d窗  private button mBtn1;  //表示单选d窗  private button mBtn2;  //表示多选d窗  private button mBtn3;  //表示日期d窗  private button mBtn4;  //表示时间d窗  private button mBtn5;  //表示进度条d窗  private button mBtn6;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    init();    event();  }  /**   * 设置监听事件   */  private voID event() {    mBtn1.setonClickListener(this);    mBtn2.setonClickListener(this);    mBtn3.setonClickListener(this);    mBtn4.setonClickListener(this);    mBtn5.setonClickListener(this);    mBtn6.setonClickListener(this);  }  /**   * 初始化控件   */  private voID init() {    mBtn1 = (button) findVIEwByID(R.ID.btn1);    mBtn2 = (button) findVIEwByID(R.ID.btn2);    mBtn3 = (button) findVIEwByID(R.ID.btn3);    mBtn4 = (button) findVIEwByID(R.ID.btn4);    mBtn5 = (button) findVIEwByID(R.ID.btn5);    mBtn6 = (button) findVIEwByID(R.ID.btn6);  }  @OverrIDe  public voID onClick(VIEw v) {    switch (v.getID()) {      case R.ID.btn1:        createListDialog();        break;      case R.ID.btn2:        createSingleDialog();        break;      case R.ID.btn3:        createMutilDialog();        break;      case R.ID.btn4:        createDateDialog();        break;      case R.ID.btn5:        createTimeDialog();        break;      case R.ID.btn6:        createProgressbarDialog();        break;    }  }  /**   * 创建一个进度条d窗   */  private voID createProgressbarDialog() {    //创建进度条d窗对象    ProgressDialog progressDialog = new ProgressDialog(this);    //设置标题    progressDialog.setTitle("进度条d窗");    //设置标题图标    progressDialog.setIcon(R.mipmap.ic_launcher);    //设置文本    progressDialog.setMessage("正在加载...");    //设置最大进度    progressDialog.setMax(100);    //设置进度条的类型    progressDialog.setProgressstyle(ProgressDialog.STYLE_HORIZONTAL);    //显示进度条d窗    progressDialog.show();    //如果设置这条语句的话,那么无论你点击屏幕外的任何地方或者按返回键都取消不了这个d窗,    //除非在完成进度后,设置取消事件。一般情况这种设置方式对界面很不友好    //不过有时候软件有重大BUG,用户不得不更新该软件,如果不更新,就只能    //强制退出程序了//    progressDialog.setCancelable(false);//不允许被某些方式取消,比如按对话框之外的区域或者是返回键    progressDialog.setProgress(50);  }  /**   * 创建一个日期d窗   */  private voID createDateDialog() {    new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener() {      /**       *       * @param vIEw 当前日期选择的 vIEw       * @param year 当前选择的年       * @param monthOfYear 当前选择的月,从0开始算       * @param dayOfMonth,当前选择的日,从1开始算       */      @OverrIDe      public voID onDateSet(DatePicker vIEw,int year,int monthOfYear,int dayOfMonth) {        Toast.makeText(MainActivity.this,"vIEw = " + vIEw + "年:" + year + "月:" + monthOfYear + "日" + dayOfMonth,Toast.LENGTH_SHORT).show();      }    },2016,7,15)//这里注意一下的是月份系统表示的是从0开始的,0表示1月,1表示2月.....11表示12月    .show();  }  /**   * 创建一个时间d窗   */  private voID createTimeDialog() {    new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener() {      /**       *       * @param vIEw 当前时间选择的vIEw       * @param hourOfDay 小时       * @param minute 分钟       */      @OverrIDe      public voID onTimeSet(TimePicker vIEw,int hourOfDay,int minute) {        Toast.makeText(MainActivity.this,"时间d窗 vIEw = " + vIEw + "hourOfDay = " + hourOfDay + "minute = " + minute,11,22,true)    .show();  }  /**   * 创建一个多选d窗   */  private voID createMutilDialog() {    new AlertDialog.Builder(this)        .setTitle("多选d框")        .setIcon(R.mipmap.ic_launcher)        //第二个参数 boolean数组,如果写 null 代表默认全部是非选中,如果想指定某几个选中,//需要创建对应长度的数据,按照位置的顺序,将指定位置设置为 true 即可,数组长度不能小        //于数据源的长度,否则会越界,但是可以大于数据源的长度        .setMultiChoiceItems(R.array.List,new boolean[]{true,false,true,false},new DialogInterface.OnMultiChoiceClickListener() {          /**           *           * @param dialog 当前点击的对话框           * @param which 当前点击的条目           * @param isChecked 被点击条目的选中状态           */          @OverrIDe          public voID onClick(DialogInterface dialog,int which,boolean isChecked) {            Toast.makeText(MainActivity.this,"当前点击的是" + which + " 是否选中" + isChecked,Toast.LENGTH_SHORT).show();          }        })        //设置取消按钮,并且设置监听事件        .setNegativebutton("cancel",new DialogInterface.OnClickListener() {          @OverrIDe          public voID onClick(DialogInterface dialog,int which) {            dialog.dismiss();          }        })        //确认按钮,默认点击会直接取消该窗口        .setPositivebutton("sure",int which) {          }        })        .setCancelable(false)        .show();  }  /**   * 创建一个单选d窗   */  private voID createSingleDialog() {    new AlertDialog.Builder(this)        .setTitle("单选d窗")        .setIcon(R.mipmap.ic_launcher)        //构造参数,1 数据源,2 默认被选中的索引,3 条目的点击事件        .setSingleChoiceItems(R.array.List,1,new DialogInterface.OnClickListener() {          /**           *           * @param dialog 当前的对话框           * @param which 当前点击的是列表的第几个 item           */          @OverrIDe          public voID onClick(DialogInterface dialog,int which) {            Toast.makeText(MainActivity.this,"单选d窗 dialog = " + dialog + "which = " + which,Toast.LENGTH_SHORT).show();          }        })        .setNegativebutton("cancel",int which) {            dialog.dismiss();          }        })        .setPositivebutton("sure",int which) {          }        })        .setCancelable(false)//不允许被某些方式取消,比如按对话框之外的区域或者是返回键        .show();  }  /**   * 创建一个列表d窗   */  private voID createListDialog() {    AlertDialog.Builder builder = new AlertDialog.Builder(this);    builder.setTitle("列表d窗");    builder.setItems(R.array.List,new DialogInterface.OnClickListener() {      /**       *       * @param dialog 当前的对话框       * @param which 当前点击的是列表的第几个 item       */      @OverrIDe      public voID onClick(DialogInterface dialog,int which) {        Toast.makeText(MainActivity.this,"列表 dialog = " + dialog + "which = " + which,Toast.LENGTH_SHORT).show();      }    });    builder.setCancelable(false);//不允许被某些方式取消,比如按对话框之外的区域或者是返回键    builder.show();  }}

列表d窗:

单选d窗:

多选d窗:

日期d窗:

时间d窗:

进度条d窗:

差不多常见的几种都在这里了,至于还有一个PopupWindow这里暂时不作介绍。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android UI设计之AlertDialogd窗控件全部内容,希望文章能够帮你解决Android UI设计之AlertDialogd窗控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存