經常使用對話框

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();
    }
}
相關文章
相關標籤/搜索