天天看点

Android-对话框dialog的实现

在Android的组件使用频率上说,dialog绝对是排得上号的。现在很多应用可以总结为两种退出方式,其一是按两次返回键退出程序,其二就是使用dialog对话框来询问用户是否退出了,对话框里放置两个按钮,点击确定则退出,点击取消则为取消退出操作。还有一些使用dialog对话框来实现查看详情的操作,合理使用dialog可以使应用更具操作性和丰富性,是一个很好的应用组件。

今天以实现退出应用时弹出的对话框为例,抛砖引玉,来学习dialog的实现方法,更多丰富的dialog对话框的属性设置就不一一细说了。

首先看一下实现效果:

Android-对话框dialog的实现

布局管理器就是添加了一个Button而已:

<RelativeLayout 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"
    tools:context=".DialogActivity" >

    <Button
        android:id="@+id/exit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="退出" />

</RelativeLayout>
           

实现方法在注释里有说得很清楚了(写代码要记得注释,这是一个好习惯):

package com.android.dialogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class DialogActivity extends Activity {
	private Button exit = null;   //定义一个Button

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		this.exit = (Button) findViewById(R.id.exit);//取得组件
		exit.setOnClickListener(new exitListener());  //绑定事件监听器
		
	}
	
	//退出按钮的事件监听器,是实现OnClickListener接口
	private class exitListener implements android.view.View.OnClickListener{
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			createDialog();       	//调用弹出对话框的方法
		} 
		
	}
	public void createDialog(){
		Builder dialog = new AlertDialog.Builder(DialogActivity.this);
		dialog.setMessage("你确定退出吗?")         //添加提示提示信息
		.setTitle("退出")                          //添加标题
		.setIcon(R.drawable.icon);		//添加图标						
		//添加确定按钮
		dialog.setPositiveButton("确定", new OnClickListener() {		
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				DialogActivity.this.finish();    //结束Activity,进程在后台会保留
				System.exit(0);			//结束整个进程,释放资源
			}
		});
		//添加取消按钮
		dialog.setNegativeButton("取消", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.dismiss();      //对话框消失
			}
		});
		dialog.show();      //对话框弹出
		
	}


}
           

这就是简单实现一个样式简单的dialog对话框的方法了,dialog有很多属性可以设置,根据属性的设置可以制作更美观的dialog对话框。

值得一提的是,在本例中的确定退出结束应用的代码中,写有两句代码,

DialogActivity.this.finish();
           
System.exit(0);
           

其实只要这两句的任何一句,我们都可以做到退出本程序的目的(因为本程序只有一个Activity),区别在于finish()只是结束了当前Activity,对于存在多个Activity的应用来时,这可能就达不到退出应用的目的了, 而且只是将当前的进行的活动推到后台,其实还在运行,在占用资源,只是退出了我们的眼界。

而对于System.exit(0);它是结束了当前的活动进程,资源也会得到释放,对于finish()来说,是更深层次的结束。