经常使用对话框

package com.pas.dialog;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
	// Inflate the menu; this adds items to the action bar if it is present.
	getMenuInflater().inflate(R.menu.main, menu);
	return true;
    }

    private void makeToast(String info) {
	Toast.makeText(this, info, Toast.LENGTH_SHORT).show();
    }

    /**
     * 通知对话框
     */
    public void click1(View v) {
	// 一、获取构造器
	AlertDialog.Builder builder = new Builder(this);
	builder.setTitle("对话框标题");
	// 小图片
	builder.setIcon(R.drawable.ic_launcher);
	builder.setMessage("是否升级?");

	// 4.0开始 肯定在右边 2.3在左边
	builder.setPositiveButton("肯定", new OnClickListener() {

	    @Override
	    public void onClick(DialogInterface dialog, int which) {
		makeToast("肯定被点击了");
	    }
	});
	builder.setNegativeButton("取消", new OnClickListener() {

	    @Override
	    public void onClick(DialogInterface dialog, int which) {
		// 什么都不作
	    }
	});
	// AlertDialog alertDialog = builder.create();
	// alertDialog.show();
	// 简写 其内部实现一致
	builder.show();
    }

    /**
     * 单选对话框
     * 
     * @param v
     */
    public void click2(View v) {
	AlertDialog.Builder builder = new Builder(this);
	builder.setTitle("单选对话框");
	final String[] items = new String[] { "条目1", "条目2", "条目3" };
	// 设置单选对话框API
	builder.setSingleChoiceItems(items, 1, new OnClickListener() {
	    @Override
	    public void onClick(DialogInterface dialog, int which) {
		makeToast(items[which] + "被点击");
		// 关闭对话框
		dialog.dismiss();
	    }
	});
	builder.setNegativeButton("取消", new OnClickListener() {

	    @Override
	    public void onClick(DialogInterface dialog, int which) {
		// 什么都不作
	    }
	});
	builder.show();
    }

    /**
     * 多选对话框
     * 
     * @param v
     */
    public void click3(View v) {
	AlertDialog.Builder builder = new Builder(this);
	builder.setTitle("多选对话框");
	final String[] items = new String[] { "条目1", "条目2", "条目3" };
	// 设置单选对话框API
	boolean[] checks = new boolean[] { true, false, false };
	builder.setMultiChoiceItems(items, checks,
		new OnMultiChoiceClickListener() {

		    @Override
		    public void onClick(DialogInterface dialog, int which,
			    boolean isChecked) {

			makeToast(items[which]
				+ (isChecked == true ? "被选中了" : "没有选中"));
		    }
		});
	builder.setNegativeButton("取消", new OnClickListener() {

	    @Override
	    public void onClick(DialogInterface dialog, int which) {
		// 什么都不作
	    }
	});
	builder.show();
    }

    /**
     * 进度对话框
     * 
     * @param v
     */
    public void click4(View v) {
	final ProgressDialog dialog = new ProgressDialog(this);
	dialog.setTitle("提醒");
	dialog.setMessage("正在加载……");

	dialog.setOnCancelListener(new OnCancelListener() {

	    @Override
	    public void onCancel(DialogInterface dialog) {
		makeToast("操做取消");
	    }
	});
	dialog.show();
	// 模拟操做取消
	new Thread() {
	    @Override
	    public void run() {
		try {
		    sleep(3000);
		    dialog.cancel();
		} catch (InterruptedException e) {
		    e.printStackTrace();
		}
		super.run();
	    }
	}.start();
    }

    /**
     * 进度条对话框
     * 
     * @param v
     */
    public void click5(View v) {
	final ProgressDialog dialog = new ProgressDialog(this);
	// 设置样式 水平仍是圆的
	dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
	dialog.setMax(100);
	dialog.setIcon(R.drawable.ic_launcher);
	dialog.setTitle("提醒");
	dialog.setMessage("正在加载……");

	dialog.setOnCancelListener(new OnCancelListener() {

	    @Override
	    public void onCancel(DialogInterface dialog) {
		makeToast("操做取消");
	    }
	});
	dialog.show();
	// 模拟操做取消
	new Thread() {
	    @Override
	    public void run() {
		try {
		    for (int i = 0; i < dialog.getMax(); i++) {
			dialog.setProgress(i + 1);
			sleep(100);
		    }
		    dialog.dismiss();
		    super.run();
		} catch (InterruptedException e) {
		    e.printStackTrace();
		}
	    }
	}.start();
    }
}
相关文章
相关标签/搜索