«

Android对话框使用详解(二)

时间:2024-3-2 17:59     作者:韩俊     分类: Android


博客地址:http://blog.csdn.net/u012637501/article/details/46003413


一、使用PopupWindow创建对话框风格的窗口
使用PopupWindow创建对话框风格的窗口步骤如下:
>调用PopupWindow的构造器创建PopupWindow对象;
>调用PopupWindow的showAsDropDown(View v)将PopupWindow作为v组件的下拉组件显示出来;或调用PopupWindow的showAtLocation()方法将PopupWindow在指定位置显示出来。
>调用PopupWindow的dismiss()方法取消显示popup窗口;
(1)对话框样式


(2)代码实现

View view = getLayoutInflater().inflate(R.layout.dialog, null); //装载R.layout.popup对应的界面布局 final PopupWindow popup = new PopupWindow(view, 500, 300); //指定布局资源,窗口高度、长度 // popup.showAsDropDown(view); //以下拉方式显示 popup.showAtLocation(findViewById(R.id.dialogBtn), Gravity.CENTER, 100, 100); popup.dismiss();
注:R.layout.dialog.xml只包含一个ImageVIew和Button组件
二、使用DatePickDialog、TimePickerDialog对话框
使用DataPickDialog、TimePickerDialog创建日期时间对话框,主要步骤如下:
>通过new关键字创建DatePickerDialog、TimePickerDialog实例,调用它们的show()方法显示日期选择对话框和时间选择对话框;
>为DatePickerDialog、TimePickerDialog绑定监听器,通过设置事件触发监听器,获取用户设置的事件
其中
DatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
TimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)
1.对话框样式


2.代码实现

Calendar calendar = Calendar.getInstance();

new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { Toast.makeText(MainActivity.this, "你选择的日期为:"+year+":"+monthOfYear+":" +dayOfMonth, Toast.LENGTH_SHORT).show(); } } //初始化日期 , calendar.get(Calendar.YEAR) , calendar.get(Calendar.MONTH) , calendar.get(Calendar.DAY_OF_MONTH)).show(); /****/ Calendar calendar = Calendar.getInstance(); new TimePickerDialog(MainActivity.this, new OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Toast.makeText(MainActivity.this, "你选择的时间为:"+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show(); } } //初始化时间 , calendar.get(Calendar.HOUR_OF_DAY) , calendar.get(Calendar.MINUTE), //true表示采用24小时制 true).show();
三、使用ProgressDialog创建进度条对话框
使用ProgressDialog创建进度对话框主要有两种方式:
>如果只是创建简单的进度对话框,调用ProgressDialog提供的静态show()方法显示对话框即可;
ProgressDialog progressDialog = ProgressDialog.show( LoginActivity.this, "", "正在登录,请稍后.....");
progressDialog.dismiss(); //取消进度条对话框
>创建ProgeressDialog,然后调用方法对话框里的进度条进行设置,设置完成后将对话框显示处理,ProgressDialog包含以下常用方法:
setIndeteminate(boolean indeteminate):设置对话框里的进度条不显示进度值;
setMax(int max):设置对话框里进度条的最大值;
setMax(int max):设置对话框里进度条的最大值;
setMessage(CharSequence message):设置对话框里显示的消息
setProgress(int value):设置对话框里进度条的进度值
setProgressStyle(int style):设置对话框里进度条的风格
1.对话框样式


2.代码实现

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //进度条 ProgressDialog progressDialog = null; final static int MAX_PROGRESS = 100; private int[] data = new int[60]; int progressStatus = 0; int hasData = 0; } / 定义一个负责更新进度条的Handler */ Handler handler = new Handler(){ public void handleMessage(Message msg) { if(msg.what == 0x110){ progressDialog.setProgress(progressStatus); } }; }; public void dialogBtn(View v){ /* 创建一个进度条对话框 / progressDialog = new ProgressDialog(this); //实例化一个ProgressDialog对象 progressDialog.setTitle("任务进行中"); progressDialog.setMessage("任务正在执行中,请稍后"); progressDialog.setCancelable(false); //设置对话框能够触屏关闭 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置对话框的进度条风格 progressDialog.setIndeterminate(false); //设置对话框的进度条是否显示进度 progressDialog.show(); //显示对话框 / 创建一个子线程,定时发送消息给Handler / new Thread(new Runnable(){ public void run() { while(progressStatus < MAX_PROGRESS){ progressStatus = MAX_PROGRESSdoWork()/data.length; //获取耗时操作的完成百分比 handler.sendEmptyMessage(0x110); } if(progressStatus >= MAX_PROGRESS){ //任务完成,退出对话框 progressDialog.dismiss(); } } }).start(); } /* 模拟一个耗时的操作 / protected int doWork() { data[hasData++] = (int)(Math.random()*100); try{ Thread.sleep(500); //0.5s更新一次 }catch(InterruptedException e){ e.printStackTrace(); } return hasData; } }
注意:int[] data = new int[60];是因为当数组大小为50时,在耗时操作模块累加出现数组下标越界错误。
java.lang.ArrayIndexOutOfBoundsException: length=50; index=50

标签: android

热门推荐