在Android的组件使用频率上说,dialog绝对是排得上号的。现在很多应用可以总结为两种退出方式,其一是按两次返回键退出程序,其二就是使用dialog对话框来询问用户是否退出了,对话框里放置两个按钮,点击确定则退出,点击取消则为取消退出操作。还有一些使用dialog对话框来实现查看详情的操作,合理使用dialog可以使应用更具操作性和丰富性,是一个很好的应用组件。
今天以实现退出应用时弹出的对话框为例,抛砖引玉,来学习dialog的实现方法,更多丰富的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()来说,是更深层次的结束。