有关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窗控件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)