Android实现各种对话框的变体
16lz
2021-12-04
package com.easyway.android.diaglogs;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * * Android 对话框(Dialog)大全 建立你自己的对话框 * * Activities提供了一种方便管理的创建、保存、回复的对话框机制, * 例如 onCreateDialog(int), onPrepareDialog(int, Dialog), * showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话, * Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). * onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Activity * 为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。这 * 样,每个对话框继承这个Activity的特定属性。比如,当一个对话框打开时,菜单 * 键显示为这个Activity定义的选项菜单,音量键修改Activity使用的音频流。 * showDialog(int): 当你想要显示一个对话框时,调用showDialog(int id) 方法并传递一个唯 * 一标识这个对话框的整数。当对话框第一次被请求时,Android从你的Activity中调 * 用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。这个回调方 * 法被传以和showDialog(int id)相同的ID。当你创建这个对话框后,在Activity的 * 最后返回这个对象。 * onPrepareDialog(int, Dialog):在对话框被显示之前,Android还调用了可选的回调函数 * onPrepareDialog(int id, Dialog). 如果你想在每一次对话框被打开时改变它的 * 任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用, * 而onCreateDialog(int) 仅在对话框第一次打开时被调用。如果你不定义 * onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以 * 对话框的ID,和在onCreateDialog()中创建的对话框对象。 * dismissDialog(int):当你准备关闭对话框时,你可以通过对这个对话框调用dismiss()来消除它。 * 如果需要,你还可以从这个Activity中调用dismissDialog(int id) 方法,这实际上将 * 为你对这个对话框调用dismiss() 方法。 如果你想使用onCreateDialog(int id) 方法来 * 管理你对话框的状态(就如同在前面的章节讨论的那样),然后每次你的对话框消除的时候, * 这个对话框对象的状态将由该Activity保留。如果你决定不再需要这个对象或者清除该状态 * 是重要的,那么你应该调用removeDialog(int id)。这将删除任何内部对象引用而且如果 * 这个对话框正在显示,它将被消除。 * @author longgangbai * */public class AndroidDialogActivity extends Activity { private Button btncomfire; private Button btncontext; private Button btnCustomlayout; private Button btnSimplelistItem; private Button btnmulitableItem; private Button btnSingleItem; private Button btninput; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //确认对话框 btncomfire=(Button)findViewById(R.id.btnchart); btncomfire.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {AlertDialog.Builder builder=new Builder(AndroidDialogActivity.this);builder.setMessage("确认退出吗?");builder.setTitle("提示");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { dialog.dismiss(); AndroidDialogActivity.this.finish();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();} }); //调查对话框信息 btncontext=(Button)findViewById(R.id.btncontext); btncontext.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {AlertDialog.Builder builder=new Builder(AndroidDialogActivity.this);builder.setIcon(R.drawable.ic_launcher);builder.setTitle("喜好调查");builder.setMessage("你喜欢李孝利的歌曲吗?");builder.setPositiveButton("很喜欢", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { Toast.makeText(AndroidDialogActivity.this,"我很喜欢她的歌曲", Toast.LENGTH_LONG).show();}});builder.setNegativeButton("不喜欢", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { Toast.makeText(AndroidDialogActivity.this,"我很不喜欢她的歌曲", Toast.LENGTH_LONG).show();}});builder.setNeutralButton("一般", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { Toast.makeText(AndroidDialogActivity.this,"我有点喜欢她的歌曲,但是我喜欢她的漂亮", Toast.LENGTH_LONG).show();}});builder.create().show();} }); //输入对话框信息 btninput=(Button)findViewById(R.id.btnInput); btninput.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {AlertDialog.Builder builder=new Builder(AndroidDialogActivity.this);builder.setTitle("请输入").setIcon(R.drawable.ic_launcher).setView(new EditText(AndroidDialogActivity.this)).setPositiveButton("确认", null);builder.setNegativeButton("取消", null);builder.show();} }); //自定义视图的对话框 btnCustomlayout=(Button)findViewById(R.id.btnLayout); btnCustomlayout.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) { //获取对话框信息 LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.dialog)); //创建对话框 new AlertDialog .Builder(AndroidDialogActivity.this) .setTitle("自定义布局") .setView(layout) //设置自定义视图对象 .setPositiveButton("确定", null) .setNegativeButton("取消", null) .show();} }); //简单显示信息列表 btnSimplelistItem=(Button)findViewById(R.id.btnlistItems); btnSimplelistItem.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {new AlertDialog.Builder(AndroidDialogActivity.this) .setTitle("列表框") .setItems(new String[] { "Item1", "Item2" }, null) //设置列表信息集合 .setNegativeButton("确定", null) .show();} }); //创建一个复选框的对话框 btnmulitableItem=(Button)findViewById(R.id.btnmulitableItems); btnmulitableItem.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {new AlertDialog.Builder(AndroidDialogActivity.this) .setTitle("复选框") .setMultiChoiceItems(new String[] { "Item1", "Item2" }, null, null)//设置多选项.setPositiveButton("确定", null).setNegativeButton("取消", null).show();} }); //创建一个单选项对话框 btnSingleItem=(Button)findViewById(R.id.btnSingleItems); btnSingleItem.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {AlertDialog.Builder builder=new Builder(AndroidDialogActivity.this);builder.setTitle("单选项")//对话框图表.setIcon(R.drawable.ic_launcher)//设置单选框.setSingleChoiceItems(new String[]{"Item1","Item2","Item3"}, 0,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { dialog.dismiss();}}).setPositiveButton("确认", null);builder.setNegativeButton("取消", null);builder.show();} }); }}
更多相关文章
- android 公用的ViewHolder
- Android(安卓)IntentService 深入分析
- Android获得屏幕分辨率的两种方法
- Android中getChildAt()方法介绍
- android例子分析-1
- android访问网络图片
- Android组件通信
- Android中NDK的使用方法
- Android(安卓)震动 和 停止 代码