Android Dialog

package com.he.h0317_dialog;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SimpleAdapter;
import android.widget.TableLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

    private Button commonDialog;
    private Button radioButtonDialog;
    private Button checkboxDialog;
    private Button listDialog;
    private Button customDialog;
    
    private static final int NOTIFICATION_ID = 0x1101;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        findViewById();
    }
    
    public void findViewById() {
        commonDialog = (Button) findViewById(R.id.commonDialog);
        radioButtonDialog = (Button) findViewById(R.id.radioButtonDialog);
        checkboxDialog = (Button) findViewById(R.id.checkboxDialog);
        listDialog = (Button) findViewById(R.id.listDialog);
        customDialog = (Button) findViewById(R.id.customDialog);
        
        commonDialog.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openCommonDialog();
            }
        });
        radioButtonDialog.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openRadioButtonDialog();
            }
        });
        checkboxDialog.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openCheckboxDialog();
            }
        });
        listDialog.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openListDialog();
            }
        });
        customDialog.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openCustomDialog();
            }
        });
    }

    @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;
    }
    
    /**
     * 普通的对话框
     */
    public void openCommonDialog() {
        //builder 设计模式
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置对话框的标题
        builder.setTitle("请确认您的电子邮箱地址");
        builder.setMessage(Html.fromHtml("<font color='red'>消息内容了</font>"));
        
        builder.setIcon(getResources().getDrawable(R.drawable.mail));
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "取消按钮, which: " + which, Toast.LENGTH_SHORT).show();
            }
        });

        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Notification notify = new Notification(R.drawable.games, "确认按钮, which:" + which, System.currentTimeMillis());
                //为notify设置声音
                notify.defaults = Notification.DEFAULT_SOUND;
                //为notify设置默认声音、默认震动、默认闪光灯
                notify.defaults = Notification.DEFAULT_ALL;
                
                Intent intent = new Intent(MainActivity.this, MainActivity.class);
                //Context context, int requestCode, Intent intent, int flags
                PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
                
                //让声音、振动无限循环,直到用户响应
                notify.flags |= Notification.FLAG_INSISTENT;
                //通知被点击后,自动消失
                notify.flags |= Notification.FLAG_AUTO_CANCEL;
                //点击'Clear'时,不清楚该通知(QQ的通知无法清除,就是用的这个)
                notify.flags |= Notification.FLAG_NO_CLEAR;
                
                //设置事件信息
                notify.setLatestEventInfo(MainActivity.this, "通知 contentTitle", "通知 contentText", pi);
                //获取系统的NotificationManager 服务
                NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                notificationManager.notify(NOTIFICATION_ID, notify);
            }
        });
        
        builder.setNeutralButton("中立的按钮", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "中立按钮, which: " + which, Toast.LENGTH_SHORT).show();
            }
        });
        
        Dialog dialog = builder.create();
        dialog.show();
    }
    
    /**
     * 单选按钮对话框
     */
    public void openRadioButtonDialog() {
        //builder 设计模式
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置对话框的标题
        builder.setTitle("请选择您喜欢的项目");
        
        builder.setIcon(getResources().getDrawable(R.drawable.audio_player));
        String[] items = new String[]{"游泳", "足球", "电玩"};
        
        builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了, which: " + which, Toast.LENGTH_SHORT).show();
            }
            
        });
        
        builder.setPositiveButton("OK", null);
        
        Dialog dialog = builder.create();
        dialog.show();
    }
    
    /**
     * 多选按钮对话框
     */
    public void openCheckboxDialog() {
        //builder 设计模式
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置对话框的标题
        builder.setTitle("请选择您喜欢的项目");
        
        builder.setIcon(getResources().getDrawable(R.drawable.audio_player));
        final String[] items = new String[]{"游泳", "足球", "电玩"};
        boolean[] select = new boolean[]{true, false, true};
        
        builder.setMultiChoiceItems(items, select, new DialogInterface.OnMultiChoiceClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                Toast.makeText(MainActivity.this, "你选择了, which: " + items[which] + "  " + (isChecked ? "ON" : "OFF") , Toast.LENGTH_SHORT).show();
            }
        });
        
        builder.setPositiveButton("OK", null);
        
        Dialog dialog = builder.create();
        dialog.show();
    }
    
    /**
     * 列表对话框
     */
    public void openListDialog() {
        //builder 设计模式
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置对话框的标题
        builder.setTitle("请选择您喜欢的项目");
        
        builder.setIcon(getResources().getDrawable(R.drawable.radio));
        final String[] items = new String[]{"游泳", "足球", "电玩", "进修", "美人"};
        final int[] icons = new int[]{R.drawable.audio_player, R.drawable.camera, R.drawable.games, R.drawable.mail, R.drawable.radio};

        final List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(5);
        for(int i = 0; i < items.length; i++) {
            Map<String, Object> item = new HashMap<String, Object>();
            item.put("dialog_name", items[i]);
            item.put("dialog_icon", icons[i]);
            listItems.add(item);
        }
        
        SimpleAdapter adapter = new SimpleAdapter(this
                , listItems
                , R.layout.list_item
                , new String[]{"dialog_name", "dialog_icon"}
                , new int[]{R.id.dialog_name, R.id.dialog_icon});

        builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Map<String, Object> item = listItems.get(which);
                Toast.makeText(MainActivity.this, "你选择了, which: " + item.get("dialog_name"), Toast.LENGTH_SHORT).show();
            }
        });
        
        Dialog dialog = builder.create();
        dialog.show();
    }
    
    /**
     * 自定义对话框
     */
    public void openCustomDialog() {
        //builder 设计模式
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        //设置对话框的标题
        builder.setTitle("请选择您的信息");
        
        builder.setIcon(getResources().getDrawable(R.drawable.radio));
        
        //装载layout
        final TableLayout login = (TableLayout) getLayoutInflater().inflate(R.layout.login, null);
        builder.setView(login);
        
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                EditText usernameEdit = (EditText) login.findViewById(R.id.usernameEdit);
                
                if(usernameEdit != null) {
                    Toast.makeText(MainActivity.this, "用户名:" + usernameEdit.getText(), Toast.LENGTH_SHORT).show();
                }
            }
        });
        
        Dialog dialog = builder.create();
        dialog.show();
    }

}

 

posted on 2014-03-19 21:12  hzm_frank  阅读(384)  评论(0编辑  收藏  举报

导航