zoukankan      html  css  js  c++  java
  • Android 里的对话框Dialog 实现机制基础

    Dialogs
    对话框通常都是出现在当前活动的前面,当当前活动弹出对话框后,
    当前活动将失去焦点,而对话框将完成与用户交互的任务。对话框通常拿来当通知使用,临时中断用户
    当前操作完成一个与当前活动直接相关的小工作,比如登录成功提示框及进度条。
    Dialog 类是创建对话框的基类,然而,通常我们并不实例化一个Dialog,取而代之,我们使用如下的
    子类:
    AlertDialog:
    一个通常可以带0,1,2个按钮,还可以包含单选或复选的列表。推荐使用,
    它通常足够满足用户界面的需要了。
    ProgressDialog:
    显示为一个进度轮或进度条,因为它是扩展了的AlertDialog,它也同样支持按钮。
    DatePickerDialog:
    提供用户选择日期的对话框。
    TimePickerDialog:
    提供用户选择时间的对话框。
    显示一个对话框
    对话框通常都作为一个活动的一部分而被创建、显示,
    通常我们可以重写活动内置的“onCreateDialog(int)”回调方法来创建。当我们重写了这个
    回调查方法后,Android系统将自动管理对话框的状态,并将它与当前的活动关联,
    某个活动将拥有对话框。也因此,对话框会继承活动的某些属性,例如:当一个对话框打开,
    点击“Menu"按钮将显示此活动的"Options menu",音量键也将被活动用来调整音频流。
    注意:如果对话框不是通过"onCreateDialog"方法创建的,那么意味着它没有被关联到一个活动
    此时,必须调用“setOwnerActivity(Activity)”方法将它关联到一个对话框。
    调用“showDialog(int)”来显示一个对话框,传递的整数是一个唯一值,用来标识当前要显示的对话框。
    对话框第一次被请求时创建,系统将调用活动的“onCreateDialog(int)”,在此活动中实例化一个Dialog,
    “onCreateDialog(int)”,“showDialog(int)”两个方法传入的整数是一样的。
    一个对话框在显示前,系统都将调用回调方法“onPrepareDialog(int,Dialog)”,所以,如果可以通过
    重写此方法可以动态修改对话框。由于"onCreateDialog(int)"只在第一次被请求时创建,所以,
    后面再显示时将保持不变。"onPrepareDialog(int,Dialog)"这里的整型参数也与创建、显示时的一样。
    当需要用到多个对话框的时候,我们最好在“onCreateDialog(int)”及“onPrepareDialog(int,Dialog)”
    方法里Switch,通过对话框的唯一值(创建时传入的整型参数)用来判断一个每个对话框是否创建。
    如:
    static final int DIALOG_PAUSED_ID=0;
    static final int DIALOG_GAMEOVER_ID=1;
    而在“onCreateDialog(int)”回调查方法里:
    protected Dialog onCreateDialog(int id)
    {
    Dialog dilog;
    switch(id)
    {
    case DIALOG_PAUSED_ID:
    {
    //do the work to define the pause dialog
    BREAK;
    }
    case DIAOLG_GAMEOVER_ID:
    {
    //
    BREAK;
    }
    default:
    dialog=null;
    }
    return dialog;
    }
    显示一个对话框:showDialog(DIALOG_GAMEOVER_ID);
    ---------------------------------------------------------------
    清除对话框
      当我们创建一个对话框并将它关联到一个活动后,活动将始终维护对话框的状态,如果确定活动不再需要对话框后,
      可以让对话框调用dismiss()来自行清除,更为高效的做法是调用活动的dismissDialog(int),传递的整型数据
      与创建时传入的一致。
      
      也许有时我们需要在对话框被清除时处理一些业务,此时我们实现接口:DialogInterface.OnDismissListener,
      这个接口只有一个方法:onDismiss(dialogInterface),此方法将在对话框被清除时调用。将接口的实现传递给
      setOnDismissListener()。
      一个对话框也可以被“取消”,如用户点出了“back”回退或点击“Cancel”按钮明确取消,此时并不会触发“onDismissListener”.
      此类事件可以通过下面的方法进行捕获:DialogInterface.OnCancelListener,并 setOnCancelListener();

     参考资料:http://developer.android.com/guide/topics/ui/dialogs.html

     
  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/runner/p/2275293.html
Copyright © 2011-2022 走看看