在学习swing的时候我们讲过在普通桌面系统使用对话框,一般对话框可以提醒用户选择或者弹出一些警告信息,在android应用中同样有类似的对话框。其功能和效果与桌面系统类似,也是和获得用户的焦点,并且或阻断用户的当前操作,所以我们必须适当的使用对话框,并选择合适的对话框,以免影响用户体验。

要实现一个对话框,我们通常可以用三种方式:

1、使用Dialog类,这个类使用调用它的Activity构造和控制的,所以不用在androidManifest.xml文件中注册,使用起来比较方便,而且android也提供了不同的Dialog类的实现。

2、可以让一个Activity类,以窗口的模式显示。这样在实现Activity之间的跳转时,新的Activity只会以对话框的方式显示。

3、使用Toast,这种方式应该来说是最简单的,而且与普通对话框最大不同是它不会阻断用户的当前操作,仅仅只是一个简单提示,并且会自动释放。

一、使用AlertDialog类实现对话框。

AlertDialog是最简单通用的建立对话框的实现,它需要先建立一个窗口Builder类,设置好窗口的基本属相只用使用show()方法显示窗口即可。

1、简单实现。我们只需要设定弹出框的标题,提示信息和按钮以及按钮的单击事件即可。效果如下图:


android 右侧弹出对话框 安卓弹出框_android应用

代码如下:

commonButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                // 先定义建造者 Builder 定义窗口基本属性
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        MainActivity.this.;

                builder.setTitle("窗口的标题");

                builder.setMessage("提示内容");

                // 确认按钮
                builder.setPositiveButton("确认",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface arg0, int arg1) {
                                Log.e("点击了。", "确认");
                            }
                        });

                builder.setNegativeButton("取消",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface arg0, int arg1) {
                                Log.e("点击了。", "取消");
                            }
                        });

                // 窗口show()显示窗口
                builder.create().show();
            }
});


2、加载View视图,我们也可以使用setView方法,设定弹出框使用一个视图展示。效果如下图:


android 右侧弹出对话框 安卓弹出框_android应用_02

首先,先在res/layout目录下新建一个布局login.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

    <EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="用户名"
android:ems="10" >
    </EditText>

    <EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:hint="密码"
android:inputType="textPassword" />

</LinearLayout>

然后在代码中加载这个布局文件,通过setView设置到弹出框即可:

viewButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // 先定义建造者 Builder 定义窗口基本属性
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        MainActivity.this.;

                // 如何在程序中加载XML的视图View类
                LayoutInflater layoutInflater = LayoutInflater
                        .from(MainActivity.this.;
                View view = layoutInflater.inflate(R.layout.login, null);

                builder.setView(view);

                builder.setPositiveButton("登录",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface arg0, int arg1) {

                            }
                        });

                builder.create().show();

            }
        });

3、列表显示,我们也可以使用setItems设置一个字符串列表,然弹出框显示列表,效果如下图:


android 右侧弹出对话框 安卓弹出框_android应用_03

实现代码如下:

listButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // 先定义建造者 Builder 定义窗口基本属性
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        MainActivity.this.;
                String[] items = { "复制", "粘贴", "删除" };

                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface arg0, int location) {
                        switch (location) {
                        case 0:
                            Log.e("复制", "复制");
                            break;
                        case 1:
                            Log.e("粘贴", "粘贴");
                            break;
                        case 2:
                            Log.e("删除", "删除");
                            break;

                        }

                    }
                });

                builder.create().show();

            }
        });

更加详细的窗口示例可以参考一下网址:

http://developer.android.com/guide/topics/ui/dialogs.html

二、使用Activity类,以窗口的模式显示,效果如下图:


android 右侧弹出对话框 安卓弹出框_android应用_04

1、通过向导新建一个Activity,类名为:DialgActivity类。

public class DialgActivity extends Activity {

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

}

2、修改androidManifest.xml,修改其主题样式为窗口模式。

<activity
android:name="com.example.androiddialog.DialgActivity"
android:label="@string/title_activity_dialg"
android:theme="@android:style/Theme.Dialog" >
 </activity>

3、在代码中启动这个Activity,就会以弹出框的模式显示了。

activityButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent();
                intent.setClass(MainActivity.this. DialgActivity.class);
                startActivity(intent);

            }
});

三、Toast的使用。

 Toast是android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。效果如下:


android 右侧弹出对话框 安卓弹出框_android_05

 

实现代码如下:

toastButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Toast.makeText(MainActivity.this. "消息内容", Toast.LENGTH_LONG)
                        .show();

            }
});