使用对话框 —— Dialog

 

对话框就是一般的弹出窗口,主要用来提示用户,和用户交互。

 

创建Activity对话框

使用Activity模拟对话框。这个比较简单,主要是使用Activity自带的Dialog主题。

 

创建DialogActivity,并在AndroidManifest中注册。

改变DialogActivity的主题:

<activity
            android:theme="@android:style/Theme.Dialog"
            android:name="com.whathecode.usingdialog.DialogActivity"
            android:label="@string/title_activity_dialog" >
</activity>

 

DialogActivity代码示例:

package com.whathecode.usingdialog;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class DialogActivity extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    }

    //用来关闭这个Activity
    public void close(View view)
    {
        finish();
    }
}

 

DialogActivity布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:orientation="vertical"
    android:gravity="center_vertical|center_horizontal"
    tools:context=".DialogActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是基于Activity的Dialog" />

    <LinearLayout
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/confirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定"
            android:onClick="close"/>

        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消"
            android:onClick="close"/>
    </LinearLayout>

</LinearLayout>

 

MainActivity代码:

package com.whathecode.usingdialog;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;

public class MainActivity extends FragmentActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void openActivityDialog(View view)
    {
        Intent intent = new Intent(this, DialogActivity.class);
        startActivity(intent);
    }
}

 

运行效果:

 

创建单选,多选和带进度条的对话框:

主要是使用AlertDialog类,首先通过创建AlertDialog类的实例,然后使用showDialog显示对话框。

showDialog方法的执行会引发onCreateDialog方法被调用

示例代码:

package com.whathecode.usingdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity
{

    private static final int SINGLE_CHOICE_DIALOG = 0;
    private static final int MULTI_CHOICE_DIALOG = 1;
    private static final int PROGRESS_DIALOG = 2;
    protected static final int MAX_PROGRESS = 30;
    private CharSequence items[] = new String[] { "apple", "google",
            "microsoft" };
    private boolean checkedItems[] = new boolean[3];

    private Handler progressHandler;
    private int progress;
    protected ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progressHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (progress >= MAX_PROGRESS) {
                    progressDialog.dismiss(); //关闭progressDialog
                } else {
                    progress++;

                    //进度条加1
                    progressDialog.incrementProgressBy(1);
                    //只要当前进度小于总进度,每个100毫秒发送一次消息
                    progressHandler.sendEmptyMessageDelayed(0, 100);
                }
            }
        };
    }

    public void openActivityDialog(View view)
    {
        Intent intent = new Intent(this, DialogActivity.class);
        startActivity(intent);
    }

    //显示单选对话框
    public void openSinglechoiceDialog(View view)
    {
        showDialog(SINGLE_CHOICE_DIALOG);
    }

    //显示多选对话框
    public void openMultichoiceDialog(View view)
    {
        showDialog(MULTI_CHOICE_DIALOG);
    }

    //显示进度条对话框
    public void openProgressDialog(View view)
    {
        showDialog(PROGRESS_DIALOG);
        progress = 0;
        progressDialog.setProgress(0);
        progressHandler.sendEmptyMessage(0);
    }

    @Override
    @Deprecated
    protected Dialog onCreateDialog(int id)
    {
        switch (id)
        {
        case SINGLE_CHOICE_DIALOG:
            return createSingleChoiceDialog();

        case MULTI_CHOICE_DIALOG:
            return createMultichoiceDialog();

        case PROGRESS_DIALOG:
            return createProgressDialog();

        default:
            break;
        }
        return null;
    }

    /**
     * 创建单选对话框
     *
     */
    public Dialog createSingleChoiceDialog()
    {
        return new AlertDialog.Builder(this)
                .setTitle("单选对话框")  //设置对话框标题
                .setNegativeButton("取消", null)  //设置取消按钮钮
                .setPositiveButton("确定", null) //设置确定按
                .setSingleChoiceItems(items, 0,    //绑定数据
                        new DialogInterface.OnClickListener()
                        {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which)
                            {
                                Toast.makeText(getBaseContext(),
                                        items[which].toString(),
                                        Toast.LENGTH_SHORT).show();
                            }
                        }).create();
    }

    /**
     * 创建多选对话框
     *
     */
    public Dialog createMultichoiceDialog()
    {
        return new AlertDialog.Builder(this)
                .setTitle("多选对话框")  //设置对话框标题
                .setNegativeButton("取消", null)  //设置取消按钮
                .setPositiveButton("确定", null) //设置确定按钮
                .setMultiChoiceItems(items, checkedItems,  //绑定数据
                        new DialogInterface.OnMultiChoiceClickListener()
                        {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which, boolean isChecked)
                            {
                                Toast.makeText(
                                        getBaseContext(),
                                        isChecked ? items[which] + " check"
                                                : items[which] + " uncheck",
                                        Toast.LENGTH_SHORT).show();
                            }
                        }).create();
    }

    /**
     * 创建带进度条的对话框
     *
     */
    public Dialog createProgressDialog()
    {
        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("下载对话框");
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMax(MAX_PROGRESS);
        progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener()
        {

            @Override
            public void onClick(DialogInterface dialog, int which)
            {

            }
        });
        progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener()
        {

            @Override
            public void onClick(DialogInterface dialog, int which)
            {

            }
        });

        return progressDialog;
    }
}

 

运行效果:

 

这里比较难理解还是ProgressDialog,因为它需要增加进度。这里我们通过向Activity线程发送消息,

从而能够使用progressDialog.incrementProgressBy(1)方法递增进度条。

时间: 2024-08-10 19:21:37

使用对话框 —— Dialog的相关文章

Android 对话框 Dialog

对话框 Dialog 什么是对话框 对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息, 或显示某种状态.如 :  显示进度条对话框, 退出提示. 对话框的特点: 1, 当前界面弹出的小窗口. 2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户. 常用对话框: 1, 普通对话框 AlertDialog 2, 进度条对话框  ProgressDialog 3, 日期对话框    DatePickerDialog 4, 时间对话框

转 Android 对话框(Dialog)大全 建立你自己的对话框

Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个 Act

Android 对话框(Dialog)大全 建立你自己的对话框

Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

10.JAVA之GUI编程弹出对话框Dialog

在上节基础上添加对话框显示错误信息. 代码如下: /*弹出对话框显示错误信息,对话框一般不单独出现,一般依赖于窗体.*/ /*练习-列出指定目录内容*/ import java.awt.Button; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextArea; import java.awt.TextField

[Android]关于对话框dialog的一些事

7种形式的Android Dialog使用举例 http://www.oschina.net/question/54100_32486 [Android]关于对话框dialog的一些事,布布扣,bubuko.com

Android点击返回键back时弹出对话框Dialog

public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { ExitDialog(MainActivity.this).show(); return true; } return super.onKeyDown(keyCode, event); } private Dialog ExitDialog

Android 对话框(Dialog) 及 自定义Dialog

Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

Android 对话框(Dialog)大全【转】

图1 图1效果:该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 代码: 1 // 创建对话框方法dialog() 2 3 protected void dialog() { 4 AlertDialog.Builder builder = new Builder(Main.this); 5 builder.setMessage("确认退出吗?"); 6 7 builder.setTitle("提示"); 8 9 builder.setPos

(转载)Android项目实战(三十二):圆角对话框Dialog

Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角显示 2.考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息   3.设置对话框的宽和高 技术储备: 1.安卓开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,Dia

android对话框(Dialog)的使用方法

Activities提供了一种方便管理的创建.保存.回复的对话框机制.比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,假设使用这些方法的话.Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). Android API支持下面类型的Dialog对象: 警告对话框 AlertDialog:  一个能够有