精华内容
下载资源
问答
  • Android Dialog

    千次阅读 2010-07-14 23:20:00
    android dialog

    Andoid Dialog

    1、AlertDialog,具有0-3个按钮,可以放选项、复选框单选框等,以建议的方式域用户交互可以。
    2、ProgressDialog,显示一个进度的圆环或者进度条。
    3、DataPickerDialog,选择日期的dialog。
    4、TimePickerDialog,选择时间的dialog。

    用户可以继承Dialog类或者它的子类并且创建一个新的leyout。

    Showing a Dialog

    Dialog总是作为一个Activity的一部分来创建和显示的。正常可以使用Activity的onCreateDialog(int)回调函数来创建Dialog。使用这个回调函数的时候,系统会自动管理每个dialog的状态,并把它们关联到这个Activity,有效的使它成为dialog的所有者。这样每个第啊咯个都从父Activity继承一些属性。For example, when a dialog is open, the Menu key reveals the options menu defined for the Activity and the volume keys modify the audio stream used by the Activity.
    注意:如果你在onCreate()之外创建dialog,他不会附属于任何的Activity,可以使用dialog的setOwnerActivity(Activity)来设置。
    当想显示一个dialog的时候,调用showDialog(int),并传递一个整数来唯一标识想要显示的dialog即可。
    当第一次使用一个dialog的时候,Android会调用onCreateDialog(int),应该在这里创建dialog。这个回调方法的参数是你传递给showDialog(int)的id。创建Dialog结束后,返回这个dialog对象。
    在现实一个dialog之前,Android会先用可选的回调非法onPrepareDialog(int)。如果想在每次打开dialog的时候改变它的属性就可以通过重写这个方法来实现。他会在每次打开dialog的时候被调用,而onCreateDialog(int)只在第一次打开一个dialog的时候调用。如果不定义onPrepareDialog(),那么dialog将保持塌方上次被打开的属性。This method is also passed the dialog's ID, along with the Dialog object you created in onCreateDialog()。

    创建Dialog的Example:
    static final int DIALOG_PAUSED_ID = 0;
    static final int DIALOG_GAMEOVER_ID = 1;
    protected Dialog onCreateDialog(int id) {
    Dialog dialog;
    switch(id) {
    case DIALOG_PAUSED_ID:
    // do the work to define the pause Dialog
    break;
    case DIALOG_GAMEOVER_ID:
    // do the work to define the game over Dialog
    break;
    default:
    dialog = null;
    }
    return dialog;
    }

    显示创建的dialog:showDialog(DIALOG_PAUSED_ID);

    Dismissing a Dialog

    当准备关闭dialog的时候,可以调用dialogobject的dismiss()方法。如果必要,可以调用Activity的dismissDialog(int),它会有效的调用dialog的dismiss()。
    如果你使用onCreateDialog(int)来管理dialog的状态,那么每次关闭dialog的时候,dialog的状态都会被Activity保存。如果这个dialog不会再次被使用或者清除它的状态很重要,可以调用removeDialog(int),这回清除内部任何对它的引用,如果它正在显示,会被关闭。

    Using dismiss listeners

    如果想在dialog被关闭的时候执行一些操作,应该为dialog设置on-dismiss listener。

    首先定义DialogInterfacev.OnDismissListener接口。这个接口只有一个方法,vonDismiss(DialogInterface),当关闭dialog的时候会调用这个方法。把OnDismissListener的实现传递给setOnDismissListener()就可以了。
    注意,dialog可以被取消。这是由用户显示取消dialog的特殊情况,在用户点击back键或者显示调用cancel()函数就是这种情况。当dialog被cancel的时候,OnDismissListener不会被通知,如果你想知道dialog被显示的cancel(不是正常的关闭),那么你应该用setOnCancel()注册一个vDialogInterface.OnCancelListener。

    Creating an AlertDialog
    AlertDialog是Dialog的子类,它可以构造用户交互的多数dialog,是建议的dialog类型。下列情况可以使用AldertDialog:
    A tittle;
    A text message;
    One,two,or three buttons;
    A list of selectable items (with optional checkboxes or radio buttons)

    可以使用AlertDialog.Builder的子类来创建AlertDialog。通过AlertDialogBuilder(Context)来创建一个builder并使用这个builder的public方法来定义AlertDialog的所有属性。在使用builder创建结束后,使用create()来得到创建的AlertDialog对象。

    The following topics show how to define various properties of the AlertDialog using the AlertDialog.Builder class. If you use any of the following sample code inside your onCreateDialog() callback method, you can return the resulting Dialog object to display the dialog.

    Adding buttons
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to exit?")
    .setCancelable(false)
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
    MyActivity.this.finish();
    }
    })
    .setNegativeButton("No", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
    dialog.cancel();
    }
    });
    AlertDialog alert = builder.create();

    注意:每种类型的按钮只能添加一个。这限制了按钮的个数(3个)。这些名字于其功能无关只用来帮助你记住这些按钮是干嘛的。

    Adding a list

    final CharSequence[] items = {"Red", "Green", "Blue"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a color");
    builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
    Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
    });
    AlertDialog alert = builder.create();

    Adding checkboxes and radio buttons

    可以用vsetMultiChoiceitems()和setSingleChoiceItems()来在AlertDialog上设置多选或者单选列表。如果使用onCreateDialog()创建这些选项列表,那么Android会维护这个选项列表的状态。在Activity存活期间,这个dialog会记住先前的选项状态,但是当用户利卡这个Activity时,选项状态就会丢失。
    注意:为了在用户退出或者暂停这个Activity时保存选项状态,你必须在整个Activity的生命周期中恰当的保存和恢复选项状态。为了永久的保存选项状态(甚至在Activity进程完全结束之后),你应该使用数据存储技术来保存选项状态。

    To create an AlertDialog with a list of single-choice items like the one shown to the right, use the same code from the previous example, but replace the setItems() method with setSingleChoiceItems():

    final CharSequence[] items = {"Red", "Green", "Blue"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a color");
    builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
    Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
    });
    AlertDialog alert = builder.create();

    在setSingleChoiceItems()的第二个参数是一个整形表示哪个item被选中,item的标识从0开始,-1表示没有item默认被选中。

    Creating a ProgressDialog
    ProgressDialog是AlertDialog的子类,可以显示进度动画:用旋转的环表示进度未定义的task;用进度条表示定义了进度的task。这个dialog也可以提供按钮,比如下载过程中的取消按钮。
    打开一个进度dialog简单到只要调用ProgressDialog.show()就可以了。
    比如:
    ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "",
    "Loading. Please wait...", true);
    第一个参数是程序的context, 第二个参数是tittle,第三个是message, 第三个参数表示这个progress时候是不清楚的(它只在创建进度条的时候有意义, which is discussed in the next section).

    Showing a progress bar
    显示一个用动画表示进度的进度条:
    1、用构造方法ProgressDialog(Context)初始一个ProgressDialog。
    2、用setProgressStyle(int)设置style为STYLE_HORIZONTAL,并设置其他的属性,比如message等。
    3、准备显示dialog的时候调用show()或者使用onCreateDialog(int)来返回这个ProgressDialog。
    4、可以调用setProgress(int)传递目前完成的全部百分比或者vincrementProgressBy(int)传递增量值来增加进度条显示的进度。

    比如:
    ProgressDialog progressDialog;
    progressDialog = new ProgressDialog(mContext);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setMessage("Loading...");
    progressDialog.setCancelable(false);

    设置ProgressDialog很简单,创建ProgressDialog的多数代码多数是用来更新它的。你会发现需要使用Handler来创建新的线程来进行这项工作并把进度反映到Activity的UI上。

    Example ProgressDialog with a second thread
    This example uses a second thread to track the progress of a process (which actually just counts up to 100). The thread sends a Message back to the main Activity through a Handler each time progress is made. The main Activity then updates the ProgressDialog.

    package com.example.progressdialog;

    import android.app.Activity;
    import android.app.Dialog;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class NotificationTest extends Activity {
    static final int PROGRESS_DIALOG = 0;
    Button button;
    ProgressThread progressThread;
    ProgressDialog progressDialog;

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Setup the button that starts the progress dialog
    button = (Button) findViewById(R.id.progressDialog);
    button.setOnClickListener(new OnClickListener(){
    public void onClick(View v) {
    showDialog(PROGRESS_DIALOG);
    }
    });
    }

    protected Dialog onCreateDialog(int id) {
    switch(id) {
    case PROGRESS_DIALOG:
    progressDialog = new ProgressDialog(NotificationTest.this);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setMessage("Loading...");
    progressThread = new ProgressThread(handler);
    progressThread.start();
    return progressDialog;
    default:
    return null;
    }
    }

    // Define the Handler that receives messages from the thread and update the progress
    final Handler handler = new Handler() {
    public void handleMessage(Message msg) {
    int total = msg.getData().getInt("total");
    progressDialog.setProgress(total);
    if (total >= 100){
    dismissDialog(PROGRESS_DIALOG);
    progressThread.setState(ProgressThread.STATE_DONE);
    }
    }
    };

    /** Nested class that performs progress calculations (counting) */
    private class ProgressThread extends Thread {
    Handler mHandler;
    final static int STATE_DONE = 0;
    final static int STATE_RUNNING = 1;
    int mState;
    int total;

    ProgressThread(Handler h) {
    mHandler = h;
    }

    public void run() {
    mState = STATE_RUNNING;  
    total = 0;
    while (mState == STATE_RUNNING) {
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    Log.e("ERROR", "Thread Interrupted");
    }
    Message msg = mHandler.obtainMessage();
    Bundle b = new Bundle();
    b.putInt("total", total);
    msg.setData(b);
    mHandler.sendMessage(msg);
    total++;
    }
    }

    /* sets the current state for the thread,
    * used to stop the thread */
    public void setState(int state) {
    mState = state;
    }
    }
    }


    Creating a Custom Dialog

    如果需要一个自定义设计的dialog,你可以创建自己的layout。定义好layout后,传递root View对象或者leyout资源ID给setContentView(View)。
    例如:
    1、创建XML layout:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    >
    <ImageView android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_marginRight="10dp"
    />
    <TextView android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:textColor="#FFF"
    />
    </LinearLayout>
    2、设置这个layout为这个dialog的内容    并定义ImageView和TextView的内容。
    Context mContext = getApplicationContext();
    Dialog dialog = new Dialog(mContext);

    dialog.setContentView(R.layout.custom_dialog);
    dialog.setTitle("Custom Dialog");

    TextView text = (TextView) dialog.findViewById(R.id.text);
    text.setText("Hello, this is a custom dialog!");
    ImageView image = (ImageView) dialog.findViewById(R.id.image);
    image.setImageResource(R.drawable.android);
    在初始化dialog后,使用setContentView(int)设置自定义的layout为dialog的content view。这时这个dialog已经定义好了layout,你可以使用dialog的findViewByID(int)来从layout中得到View对象,并修改其中的内容。
    3、好了,现在你可以显示这个dialog了。

    通过基类Dialog创建的dialog的必须有tittle,如果不调用setTittle(),那么tittle的空间会空着而且可见。如果你根本不需要tittle,那么应该使用AlertDialog来创建自定义的dialog。因为使用AlertDialog.Builder来创建AlertDialog更容易,你也不需要访问vsetContentView(int)而是用setView(View)。它接受一个View对象参数,所以你需要inflate the layout's root View object from XML。
    To inflate the XML layout,使用getLayoutInflater()或者getSystemService()得到LayoutInflater,然后调用inflate(int, ViewGroup)(第一个参数是layout的资源ID,第二个是root view的标识符)。至此,你可以用这个inflated layout来得到layout中的View对象并且定义其中的内容了。然后初始AlertDialog.Builder并setView为这个inflated layout。
    例如:
    AlertDialog.Builder builder;
    AlertDialog alertDialog;

    Context mContext = getApplicationContext();
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER);
    View layout = inflater.inflate(R.layout.custom_dialog,
    (ViewGroup) findViewById(R.id.layout_root));

    TextView text = (TextView) layout.findViewById(R.id.text);
    text.setText("Hello, this is a custom dialog!");
    ImageView image = (ImageView) layout.findViewById(R.id.image);
    image.setImageResource(R.drawable.android);

    builder = new AlertDialog.Builder(mContext);
    builder.setView(layout);
    alertDialog = builder.create();

    Using an AlertDialog for your custom layout lets you take advantage of built-in AlertDialog features like managed buttons, selectable lists, a title, an icon and so on.

     

     

     

     

     

     

    ep:


    public class Activity01 extends Activity
    {
     ProgressDialog m_Dialog;
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      Dialog dialog = new AlertDialog.Builder(Activity01.this)
       .setTitle("登陆提示")//设置标题
       .setMessage("这里需要登录!")//设置内容
       .setPositiveButton("确定",//设置确定按钮
       new DialogInterface.OnClickListener()
       {
        public void onClick(DialogInterface dialog, int whichButton)
        {
         //点击“确定”转向登陆框
         
         LayoutInflater factory = LayoutInflater.from(Activity01.this);
         //得到自定义对话框
                     final View DialogView = factory.inflate(R.layout.dialog, null);
                     //创建对话框
                     AlertDialog dlg = new AlertDialog.Builder(Activity01.this)
                     .setTitle("登录框")
                     .setView(DialogView)//设置自定义对话框的样式
                     .setPositiveButton("确定", //设置"确定"按钮
                     new DialogInterface.OnClickListener() //设置事件监听
                     {
                         public void onClick(DialogInterface dialog, int whichButton)
                         {
                          //输入完成后,点击“确定”开始登陆
                          m_Dialog = ProgressDialog.show
                                        (
                                       Activity01.this,
                                          "请等待...",
                                          "正在为你登录...",
                                          true
                                        );
                            
                             new Thread()
                             {
                               public void run()
                               {
                                 try
                                 {
                                   sleep(3000);
                                 }
                                 catch (Exception e)
                                 {
                                   e.printStackTrace();
                                 }
                                 finally
                                 {
                                  //登录结束,取消m_Dialog对话框
                                  m_Dialog.dismiss();
                                 }
                               }
                             }.start();
                         }
                     })
                     .setNegativeButton("取消", //设置“取消”按钮
                     new DialogInterface.OnClickListener()
                     {
                         public void onClick(DialogInterface dialog, int whichButton)
                         {
                          //点击"取消"按钮之后退出程序
                          Activity01.this.finish();
                         }
                     })
                     .create();//创建
                     dlg.show();//显示
        }
       }).setNeutralButton("退出",
       new DialogInterface.OnClickListener()
       {
       public void onClick(DialogInterface dialog, int whichButton)
       {
        //点击"退出"按钮之后推出程序
        Activity01.this.finish();
       }
      }).create();//创建按钮

      // 显示对话框
      dialog.show();
     }
    }

    展开全文
  • Android dialog 大合集源码

    千次下载 热门讨论 2011-07-13 00:54:39
    Android dialog 大合集源码 介绍android 编程中 所以可以用到的dialog 欢迎大家下载~
  • android dialog嵌套ListView

    千次下载 热门讨论 2013-10-06 15:48:49
    android dialog嵌套ListView,实现对ListView的添加,删除操作
  • Android Dialog 生命周期

    万次阅读 2017-10-14 11:00:54
    Android Dialog 生命周期android基础正文:Dialog的生命周期一共用以下6个方法: onCreate(),show(),onStart() ,cancel(),onDismiss(),Stop() 。 Dialog仅在在第一次启动时候会执行onCreate()方法(之后无论...

    Android Dialog 生命周期

    正文:

    Dialog的生命周期一共用以下6个方法:
    onCreate(),show(),onStart() ,cancel(),onDismiss(),Stop() 。

    1. Dialog仅在在第一次启动时候会执行onCreate()方法(之后无论该Dialog执行Dismiss(),cancel(),stop(),Dialog都不会再执行onCreate()方法)。

    2. show() 和 onStart()在每次Dialog显示时都会 依次 执行。

    3. onDismiss() 和 stop() 在每次Dialog消失的时候都会 依次 执行。

    4. cancel() 是在点击BACK按钮或者Dialog外部时触发,然后依次执行onDismiss() 和 stop()。

    举例:
    1. 点击显示按钮,第一次显示Dialog,然后按BACK键返回。
      show() —> onCreate() —> onStart();
      cancel() —> onDismiss() —> Stop();
    2. 再次点击显示按钮,然后点击Dialog外部。
      show() —> onStart();
      cancel() —> onDismiss() —> Stop();
    3. 再次点击显示按钮,然后执行Dialog.dismiss() 方法。
      show() —> onStart();
      onDismiss() —> Stop();
    展开全文
  • Android Dialog库内置Dialog以及各种动画.支持自定义Dialog和动画
    FlycoDialog-Matser
    
    这是一个Android对话框的库,你可以直接使用内置的6中对话框以及默认自带的显示和消失动画.
    如果你不喜欢这些Dialog和动画,那也没关系~FlycoDialog-Maste支持自定义Dialog以及动画.
    Demo
                    
    github地址:https://github.com/H07000223/FlycoDialog_Master
    展开全文
  • Android Dialog常见使用

    千次阅读 2015-02-26 13:24:28
    这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助。

      在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择,从而增强APP与用户之间的交互体验,使得APP灵活性提高了,也达到了Android最初的智能目标。这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助。

        下面就一一介绍Android开发常用的 几种 Dialog模式:

        一、该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式。

          效果图:

          创建dialog对话框方法代码如下:

    private void dialog() {
        AlertDialog.Builder builder = new Builder(MainActivity.this);
        builder.setMessage("确认退出吗?");
        builder.setTitle("提示");
        builder.setPositiveButton("确认", new OnClickListener() {
         @Override
         public void onClick(DialogInterface dialog, int which) {
          dialog.dismiss();
          MainActivity.this.finish();
         }
        });
        builder.setNegativeButton("取消", new OnClickListener() {
         @Override
         public void onClick(DialogInterface dialog, int which) {
          dialog.dismiss();
         }
        });
        builder.create().show();
    }

          在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法 :

               public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
         dialog();
        }
        return false;
              }

          二、改变了对话框的图表,添加了三个按钮

            效果图:

           创建dialog的方法代码如下:

              private void show3ButtonDialog(){
    Dialog dialog = new AlertDialog.Builder(MainActivity.this).setIcon(
           android.R.drawable.btn_star).setTitle("喜好调查").setMessage(
           "你喜欢李连杰的电影吗?").setPositiveButton("很喜欢",
           new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
             // TODO Auto-generated method stub
             Toast.makeText(MainActivity.this, "我很喜欢他的电影。",
               Toast.LENGTH_LONG).show();
            }
           }).setNegativeButton("不喜欢", new OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
           // TODO Auto-generated method stub
           Toast.makeText(MainActivity.this, "我不喜欢他的电影。", Toast.LENGTH_LONG)
             .show();
          }
         }).setNeutralButton("一般", new OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
           // TODO Auto-generated method stub
           Toast.makeText(MainActivity.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG)
             .show();
          }
         }).create();
         dialog.show();
    }

          三、信息内容是一个简单的View类型

            效果图:

           创建dialog方法的代码如下:

               private void showView(){
    new AlertDialog.Builder(this).setTitle("请输入").setIcon(
           android.R.drawable.ic_dialog_info).setView(
           new EditText(this)).setPositiveButton("确定", null)
           .setNegativeButton("取消", null).show();
    }

           四、信息内容是一组单选框

             效果图:

             创建dialog方法的代码如下:

                 private void showCheckSimgleView(){
    new AlertDialog.Builder(this).setTitle("单选框").setIcon(
           android.R.drawable.ic_dialog_info).setSingleChoiceItems(
           new String[] { "Item1", "Item2" }, 0,
           new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
             dialog.dismiss();
            }
           }).setNegativeButton("取消", null).show();
    }

           五、信息内容是一组多选框

               效果图:

              创建dialog方法的代码如下:

                 private void showCheckView(){
                new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems(
           new String[] { "Item1", "Item2" }, null, null)
           .setPositiveButton("确定", null)
           .setNegativeButton("取消", null).show();
         }

          六、信息内容是一组简单列表项

             效果图:
             创建dialog方法的代码如下:

                 private void showCheckListView(){
                 new AlertDialog.Builder(this).setTitle("列表框").setItems(
           new String[] { "Item1", "Item2" }, null).setNegativeButton(
           "确定", null).show();
    }

        七 、信息内容是一个自定义的布局

          效果图:

           dialog布局文件代码如下:

                    <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_height="wrap_content" android:layout_width="wrap_content"
       android:background="#ffffffff" android:orientation="horizontal"
       android:id="@+id/dialog">
       <TextView android:layout_height="wrap_content"
         android:layout_width="wrap_content"
        android:id="@+id/tvname" android:text="姓名:" />
       <EditText android:layout_height="wrap_content"
        android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/>
      </LinearLayout>

             创建dialog方法的代码如下:

               private void showInputViewDialog(){
                LayoutInflater inflater = getLayoutInflater();
                       View layout = inflater.inflate(R.layout.dialog,
                      (ViewGroup) findViewById(R.id.dialog));
                      new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout)
                            .setPositiveButton("确定", null)
                             .setNegativeButton("取消", null).show();
               } 

      

        总结:

       通过以上的 七种 Dialog 主要模型,可以自定义出以这些为模板的Dialog各式各样的UI样子,从而到达开发的需求文档目的。Android Dialog在每一个APP中或多或少都用到了,主要是起到 提示、交互 作用,跟网页的Alert一样的效果。

       如以下就是以 第一种 模板样式来自定义的功能:

       /**
    * @category退出对话框
    */
    public static void showExitDialog(final Activity ctx) {


    new AlertDialog.Builder(ctx)
    .setIcon(R.drawable.exit)
    .setTitle(ctx.getString(R.string.exitAPP))
    .setMessage(ctx.getString(R.string.toastExite))
    .setPositiveButton(
    ctx.getResources().getString(R.string.exitY),
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,
    int which) {
    dialog.dismiss();
    // 发送广播
    ctx.finish();
    System.exit(0);// 退出整个程序
    android.os.Process
    .killProcess(android.os.Process.myPid());
    }
    })
    .setNegativeButton(
    ctx.getResources().getString(R.string.exitN),
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,
    int which) {
    dialog.dismiss();
    }
    }).show();
    }

    /**
    * @category 切换用户
    */
    public static void exitUserDialog(final Activity ctx) {


    new AlertDialog.Builder(ctx)
    .setIcon(R.drawable.exit)
    .setTitle("切换用户")
    .setMessage("您确定要退出当前用户,切换新的用户?")
    .setPositiveButton(
    ctx.getResources().getString(R.string.exitY),
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,
    int which) {
    Constants.userModel=null;
    MyApplication app=(MyApplication) ctx.getApplicationContext();
    app.getLockPatternUtils().clearLock();
    ctx.startActivity(new Intent(ctx,LoginActivity.class));
    AnimationUtil.finishActivityAnimation(ctx);

    }
    })
    .setNegativeButton(
    ctx.getResources().getString(R.string.exitN),
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,
    int which) {
    dialog.dismiss();
    }
    }).show();
    }

        


    展开全文
  • Android Dialog I-创建一个dialog, 信息来自官网
  • Android Dialog 源码研究

    千次阅读 2017-07-03 17:19:09
    Android Dialog 源码研究在阅读Dialog源代码之前,我给自己提出了4个问题,带着这4个问题的疑问,我才开始看源码,这样的好处能让阅读中有了侧重点,往往能更快的理解某些代码的意图,这也正是为什么总说提出问题...
  • Android Dialog无法去除遮罩

    千次阅读 2016-10-20 17:58:12
    Android Dialog无法去除遮罩的问题
  • Android dialog显示在界面固定位置 dialog界面背景为全透明的情况 设置这个样式就可以让dialog的背景为全透明。 <!-- 显示景区信息 --> <style name="dialog_map_content" parent="@android:style/Theme....
  • Android Dialog 设置背景透明

    千次阅读 2016-11-04 11:36:15
    Android Dialog 转载于:http://www.cnblogs.com/roemin/articles/3792561.html 关键代码 dialog.getWindow().setBackgroundDrawable(new BitmapDrawable()); 或者dialog.getWindow()....
  • android Dialog 监听返回事件(back)
  • Android Dialog对话框居中

    万次阅读 2013-03-05 19:16:16
    Android Dialog对话框自定义样式居中 LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog, (ViewGroup) findViewById(R.id.dialog)); new AlertDialog....
  • Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...
  • Android Dialog去掉黑色背景

    千次阅读 2015-10-19 19:56:48
    Android Dialog去掉黑色背景不同版本的Dialog不一样,为了统一Dialog的界面同时也想定义一个更好看的Dialog,所以我们经常会使用自定义的Layout并且调用setContentView加载到Dialog,但是我们会发现contentView显示...
  • Android Dialog的五种常见使用

    千次阅读 2016-08-01 15:53:05
    Android Dialog的五种常见使用
  • 这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助。...
  • 19. android dialog —— 日期和时间选择对话框
  • Android dialog的hide和dismiss方法分析

    千次阅读 2017-03-17 14:04:04
    Android dialog的hide和dismiss方法分析
  • 这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助。...
  • 各种形式的Android Dialog实例

    千次阅读 2014-03-28 13:25:19
    转自:  ... 在Android开发中,我们经常会需要在Android...这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,692
精华内容 8,676
关键字:

androiddialog