Android中AlterDialog四种实现样式

   (1)用于提示信息  如:是否退出系统?是 OR  否

    第一步:实例化AlertDialog.Builder对象

    AlertDialog.Builder    builder=new AlertDialog.Builder(this);

    ps:AlertDialog的构造方法是protected,所以无法实例化,通过Builder完成操作。

    Builder是AlertDialog的一个静态内部类。

    第二步:通过Builder对象,设置对话框相关信息(标题,内容,按钮)

    按钮有三个PositiveButton(积极的)、NegativeButton(消极的)、NeutralButton(中立的)

    三个按钮  首先展示NegativeButton,接着展示NeutralButton,最后展示PositiveButton。

    ps:setCancelable(false)   //禁止点击对话框之外的区域  取消或关闭   也禁止了返回键


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;

public class AlertDialogActivity extends Activity {
	
	AlertDialog.Builder alert;
	long beginTime = 0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initDialog();
		
	}
	private void initDialog(){
		alert = new AlertDialog.Builder(this);
		alert.setTitle("温馨提示").setIcon(R.drawable.ic_launcher).setMessage("是否确定退出").setPositiveButton("确定",
				new OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						finish();
					}
				}).setNegativeButton("取消", null).setNeutralButton("等一会", null);
		alert.create();
		alert.show();
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			exit();
			return false;
		}
		return super.onKeyDown(keyCode, event);
	}
	public void exit() {
		//实现两次点击退出系统;
		if (System.currentTimeMillis() - beginTime > 2000) {
			Toast.makeText(this, "再点击一次退出系统", Toast.LENGTH_SHORT).show();
			beginTime = System.currentTimeMillis();
		}else {
			finish();
			System.exit(0);
		}
		
		
	}
}
    (2)AlertDialog除了有信息提示的作用外,还有展示列表的功能

    <1> setItems   设置普通列表


      <2> setSingleChoiceItems设置单选按钮列表


      <3> setMultiChoiceItems设置多选复选列表


<4>    还可以通过 setView 添加一个自定义布局,实现编辑信息的目的;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class AlertDialogToolsActivity extends Activity {
	TextView textView;
	AlertDialog.Builder alert;
	long beginTime = 0;
	private int defaultItem = 0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.alter_tools);
		initView();	
	}

	
	private void initView() {
		textView = (TextView) findViewById(R.id.text_popup);
	}
	//在xml文件中绑定click,可以简化java代码,不用实例化控件,可以直接通过控件ID进行监听;
	public void click(View view) {
		switch (view.getId()) {
		case R.id.button_textcolor:
			showCommonListDialog();
			break;
		case R.id.button_textsize:
			showSingleListDialog();
			break;
		case R.id.button_textcontent:
			showMultiListDialog();
			break;

		default:
			break;
		}
	}
<strong>//<span style="color:#ff0000;">设置多选复选列表</span></strong>
	private void showMultiListDialog() {
		// TODO Auto-generated method stub
		alert = new AlertDialog.Builder(this);
		alert.setIcon(R.drawable.ic_launcher);
		alert.setTitle("请选择个人爱好:");
		//复选样式Item:需要设置显示的数据,需要监听选择的Item状态的初始化(方便得到指定的被选择的信息文本并处理),
		//监听Item的选择事件(方便不同类型信息的获取);
		final String[] hobits = getResources().getStringArray(R.array.text_size_hobit);
		final boolean[] checkedItems = new boolean[hobits.length];
		alert.setMultiChoiceItems(R.array.text_size_hobit, checkedItems, new OnMultiChoiceClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				// TODO Auto-generated method stub
				checkedItems[which] = isChecked;
			}
		}).setPositiveButton("确定", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				textView.setText("您选择的爱好是:\n");
				for (int i = 0; i < checkedItems.length; i++) {
					if (checkedItems[i]) {
						textView.append(hobits[i]+"\n");
					}
				}
			}
		}).create();
		alert.show();
	}

//<strong><span style="color:#ff0000;">设置单选按钮列表</span></strong>
	private void showSingleListDialog() {
		alert = new AlertDialog.Builder(this);
		alert.setIcon(R.drawable.ic_launcher);
		alert.setTitle("设置字体大小");
		//单选样式的Item:需要传递的内容有,显示内容(数组),和设定点击的Item的位置Position,设置每个Item的点击监听;
		alert.setSingleChoiceItems(R.array.text_size_name, defaultItem, new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				defaultItem = which;
				textView.setTextSize(getResources().getIntArray(R.array.text_size)[which]);
				dialog.dismiss();
			}
		}).create();
		alert.show();
	}

//<span style="font-weight: bold;"><span style="color:#ff0000;">设置普通列表</span></span>
	private void showCommonListDialog() {
		alert = new AlertDialog.Builder(this);
		alert.setIcon(R.drawable.ic_launcher);
		alert.setTitle("设置字体颜色");
		//设置普通文本格式的对话框,设置的是普通的Item;
		alert.setItems(R.array.text_color, new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				switch (which) {
				case 0:
					textView.setTextColor(Color.RED);
					break;
				case 1:
					textView.setTextColor(Color.BLUE);
					break;
				case 2:
					textView.setTextColor(Color.GREEN);
					break;

				default:
					break;
				}
			}
		}).create();
		alert.show();
	}


	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			exit();
			return false;
		}
		return super.onKeyDown(keyCode, event);
	}
	public void exit() {
		//实现两次点击退出系统;
		if (System.currentTimeMillis() - beginTime > 2000) {
			Toast.makeText(this, "再点击一次退出系统", Toast.LENGTH_SHORT).show();
			beginTime = System.currentTimeMillis();
		}else {
			finish();
			System.exit(0);
		}
		
		
	}
}<strong>
</strong>




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值