AndroidGUI14:各种Dialog常用技巧

上传人:豆浆 文档编号:10878605 上传时间:2017-10-10 格式:DOC 页数:42 大小:620KB
返回 下载 相关 举报
AndroidGUI14:各种Dialog常用技巧_第1页
第1页 / 共42页
AndroidGUI14:各种Dialog常用技巧_第2页
第2页 / 共42页
AndroidGUI14:各种Dialog常用技巧_第3页
第3页 / 共42页
AndroidGUI14:各种Dialog常用技巧_第4页
第4页 / 共42页
AndroidGUI14:各种Dialog常用技巧_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《AndroidGUI14:各种Dialog常用技巧》由会员分享,可在线阅读,更多相关《AndroidGUI14:各种Dialog常用技巧(42页珍藏版)》请在金锄头文库上搜索。

1、AndroidGUI14:各种 Dialog 常用技巧 在 Android 中,对话框有以下五种: Dialog AlertDialog CharacterPickerDialog DatePickerDialog ProgressDialog 其中 Dialog 是所有对话框的基类。 AlertDialog 和 CharacterPickerDialog 是 Dialog 的直接派生类,DatePickerDialog 、 ProgressDialog 和 TimePickerDialog 是 Dialog 的间接派生类。 CharacterPickerDialog 的用处感觉不大,而且在

2、Android2.2 之前的版本似乎有 bug 。 下面文字中 “ 对话框 ” 的含义,包括 Dialog 自己及其所有的派生类。 对话框必须在使用它的 Activity 中定义; Activity 中有三个和对话框显示有关的方法,即 showDialog() , dismissDialog() 和 removeDialog() 。其中 showDialog() 方法用于显示一个对话框; dismissDialog() 使对话框消失,但仍然处于内存中,只是不显示而已,如果再次调用 showDialog() 方法,则缓存在内容的对话框,会重新显示,而不需要重新创建。 removeDialog()

3、 使对话框消失,并从内存中将对话框清除,如果再次调用 showDialog() 方法来显示它,则在显示之前需要重新创建该对话框。相关函数的原型如下: public final void showDialog (int id) public final boolean showDialog (int id, Bundle args) public final void dismissDialog (int id) public final void removeDialog (int id) 其中第一个参数 id ,均为对话框所对应的 ID 。 在 Activity 中增加一个对话框的步骤大致如

4、下: 在 Activity 中为对话框定义唯一的标识符 (ID) 重写 Activity 中的 onCreateDialog() 方法,并返回一个对话框实例 重写 Activity 中的 onPrepareDialog() 方法。该方法不是必须重写的,但可以在该方法中为相关的对话框改变一些属性设置 调用 showDialog() 方法,显示该对话框 需要注意的是,在一个对话框的声明周期内, onCreateDialog() 仅被调用一次,但 onPrepareDialog() 方法可以被多次调用。比如,第一次调用 showDialog() 方法显示某个对话框时,会先触发 onCreateDia

5、log() 方法的执行,然后再触发 onPrepareDialog() 方法的执行;如果将某个对话框 removeDialog() 后,再次用 showDialog() 显示它是,也会先触发 onCreateDialog() 方法的执行,然后再触发 onPrepareDialog() 方法的执行;如果某个对话框被 dismissDialog() 在屏幕上消失后,在调用 showDialog() 方法来显示它的话,则不会触发 onCreateDialog() 方法的执行,但会触发 onPrepareDialog() 方法的执行。正因为如此,可以在该方法中为相关的对话框 ( 同一个 ID) 改变一

6、些属性设置。 在 Dialog 中也存在功能分别和 Activity 中的 showDialog() 和 dismissDialog() 方法一样的方法,它们是 show() 和 dismiss() ,其原型如下: public void show () public void dismiss () 但没有对应的 remove() 方法,理由很简单, removeDialog() 方法调用后,对话框实例已经不存在了,所以此时在对话框中的 remove 方法已经没有意义了。 1. 创建 Android Project ,修改其 main.xml ,使之如下: 2. 创建一个 layout 文件:

7、 custom_dialog.xml ,使其内容如下: 这个 layout 将用于自定义的对话框。 3. 修改 Activity 所对应的代码,使之如下: package com.pnf.gui; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.app.TimePickerDialog; impo

8、rt android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.method.CharacterPickerDialog; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; impor

9、t android.widget.AdapterView; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.TimePicker; import android.widget.Toast; public class ControlDialog extends Activity implements OnClickListener / 声明一个 Dialog 对象 private Dialog dialog =

10、 null ; / 声明 11 个 Button 对象 , 他们分别用于显示 11 个不同的对话框 private Button show_button1 ; private Button show_button2 ; private Button show_button3 ; private Button show_button4 ; private Button show_button5 ; private Button show_button6 ; private Button show_button7 ; private Button show_button8 ; private Bu

11、tton show_button9 ; private Button show_button10 ; private Button show_button11 ; / 给 11 个不同的对话框设定 ID private static final int ID_DIALOG1 = 1; private static final int ID_DIALOG2 = 2; private static final int ID_DIALOG3 = 3; private static final int ID_DIALOG4 = 4; private static final int ID_DIALOG

12、5 = 5; private static final int ID_DIALOG6 = 6; private static final int ID_DIALOG7 = 7; private static final int ID_DIALOG8 = 8; private static final int ID_DIALOG9 = 9; private static final int ID_DIALOG10 = 10; private static final int ID_DIALOG11 = 11; / 用于保存 ID 为 ID_DIALOG5 的对话框的状态 private bool

13、ean id_dialog5 = false , false ; / 用于保存 ID 为 ID_DIALOG6 的对话框的状态 private int id_dialog6 = 0; / 定义一个 Handler 对象 , 用于更新 ProgressDialog(ID 为 ID_DIALOG10) 中的进度条 / 相关做法可以参考 : AndroidGUI06 : ProgressBar 常用技巧 private Handler progressHandler = new Handler() public void handleMessage(Message msg) / 重写 handleM

14、essage 方法 (ProgressDialog) dialog ).setProgress(msg. what * 10); if (msg. what = 1000) dismissDialog( ID_DIALOG10 ); ; public void onCreate(Bundle savedInstanceState) super .onCreate(savedInstanceState); setContentView(R.layout. main ); / 获取 11 按钮对象 , 并分别为他们设置 OnClickListener show_button1 = (Button)

15、 this .findViewById(R.id. show_button1 ); show_button1 .setOnClickListener( this ); show_button2 = (Button) this .findViewById(R.id. show_button2 ); show_button2 .setOnClickListener( this ); show_button3 = (Button) this .findViewById(R.id. show_button3 ); show_button3 .setOnClickListener( this ); show_button4 = (Button) this .findViewById(R.id. show_button4 ); show_button4 .setOnClickListener( this ); show_button5 = (Button) this .findViewById(R.id. show_button5 ); show_button5 .setOnClickListener( this ); show_button6 = (Button) this .findViewById(R.id. show_button6 ); show_button6 .setOnC

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号