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

     
  • 相关阅读:
    【LeetCode刷题系列
    【redis 学习系列】API的理解与使用(二)
    【C++】undered_map的用法总结(1)
    【LeetCode刷题系列
    【LeetCode刷题系列
    【LeetCode刷题系列
    【redis 学习系列】API的理解与使用(一)
    【redis 学习系列】安装-配置-卸载Redis
    【centos】/usr/bin与/usr/local/bin的区别
    ROC AUC
  • 原文地址:https://www.cnblogs.com/runner/p/2275293.html
Copyright © 2011-2022 走看看