android Dialog 各種Dialog 三個選項的、進度條的、單選的、多選的、自定義的對話框

 文字就不說了,直接上代碼。

1.三個選項Dialog.

效果圖如下:

 

 

 /**
     * 三個選項的Dialog
     */
    private void threeDialog(){
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("帶進度條的Dialog");
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "確定", Toast.LENGTH_SHORT).show();
			}
		});
    	builder.setNeutralButton("中間", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "中間", Toast.LENGTH_SHORT).show();
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "取消", Toast.LENGTH_SHORT).show();
			}
		});
    	builder.create().show();
    }


二、進度條Dialog。

代碼:

 /**
     * 進度條Dialog
     */
    private void progressDialog(){
    	mProgress = new ProgressDialog(mContext);
    	mProgress.setIcon(R.drawable.ic_launcher);
    	mProgress.setTitle("帶進度條的Dialog");
    	mProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    	mProgress.setButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "確定", Toast.LENGTH_SHORT).show();
			}
		});
    	mProgress.setButton2("取消", new DialogInterface.OnClickListener() {
    		
    		@Override
    		public void onClick(DialogInterface dialog, int which) {
    			// TODO Auto-generated method stub
    			Toast.makeText(mContext, "取消", Toast.LENGTH_SHORT).show();
    		}
    	});

    	mProgress.show();
    	new Thread(new Runnable() {
			int progress = 0;
			@Override
			public void run() {
				// TODO Auto-generated method stub
				while (progress <= 100) {
					mProgress.setProgress(progress);
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					progress++;
				}
			}
		}).start();
    }


三、單選Dialog

 /**
     * 單選Dialog
     */
    private void simpleDialog(){
    	
    	singleSelectedId = -1;
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("單選Dialog");
    	builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				singleSelectedId = which;
				Toast.makeText(mContext, "你選擇的ID爲:"+which, Toast.LENGTH_SHORT).show();
			}
		});
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				if (singleSelectedId >= 0) {
					Toast.makeText(mContext, "你選擇的ID爲:"+singleSelectedId, Toast.LENGTH_SHORT).show();
				} else {
					singleSelectedId = 0;
					// 業務邏輯
				}
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	builder.create().show();
    }


四、多選複選Dialog

 /**
     * 複選Dialog
     */
    private void chooseDialog(){
    	
    	boolean[] selected = new boolean[items.length];
    	for (int i = 0; i < selected.length; i++) {
			selected[i] = false;
		}
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("複選Dialog");
    	builder.setMultiChoiceItems(items, selected, new DialogInterface.OnMultiChoiceClickListener() {
    		
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				// TODO Auto-generated method stub
				if (isChecked) {
					list.add(which);
				} else {
					list.remove(which);
				}
			}
		});
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			String str = "你選擇了:";
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				for (int i = 0; i < list.size(); i++) {
					str += " "+items[list.get(i)];
				}
				Toast.makeText(mContext, str, Toast.LENGTH_LONG).show();
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	builder.create().show();
    }


五、自定義Dialog

 

 /**
     * 自定義Dialog
     */
    EditText username;
    EditText password;
    private void customDialog(){
    	
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	
    	LayoutInflater flater = LayoutInflater.from(mContext);
    	final View view = flater.inflate(R.layout.login, null);
    	
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("自定義Dialog");
    	builder.setView(view);
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				username = (EditText) view.findViewById(R.id.username);
				password = (EditText) view.findViewById(R.id.pwd);
				Toast.makeText(mContext, ""+username.getText()+password.getText(), Toast.LENGTH_LONG).show();
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	builder.create().show();
    }


 

整體代碼如下:

HelloDialogActivity.java:

package com.covics.zfh;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.style.BulletSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class HelloDialogActivity extends Activity implements OnClickListener {
	
	private Button btnThree;
	private Button btnProgress;
	private Button btnSingle;
	private Button btnChoices;
	private Button btnCustom;
	private Context mContext;
	private ProgressDialog mProgress;
	private int singleSelectedId; // 單選ID
	private String[] items = {"item0", "item1", "item2", "item3", "item4", "item5"};
	private ArrayList<Integer> list;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mContext = HelloDialogActivity.this;
        prepare();
       
    }
    private void prepare(){
    	btnThree = (Button)findViewById(R.id.btn_three);
    	btnProgress = (Button)findViewById(R.id.btn_progress);
    	btnSingle = (Button)findViewById(R.id.btn_dan);
    	btnChoices = (Button)findViewById(R.id.btn_mus);
    	btnCustom = (Button)findViewById(R.id.btn_custom);
    	btnThree.setOnClickListener(this);
    	btnProgress.setOnClickListener(this);
    	btnSingle.setOnClickListener(this);
    	btnChoices.setOnClickListener(this);
    	btnCustom.setOnClickListener(this);
    }
    /**
     * 三個選項的Dialog
     */
    private void threeDialog(){
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("帶進度條的Dialog");
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "確定", Toast.LENGTH_SHORT).show();
			}
		});
    	builder.setNeutralButton("中間", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "中間", Toast.LENGTH_SHORT).show();
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "取消", Toast.LENGTH_SHORT).show();
			}
		});
    	builder.create().show();
    }
    /**
     * 進度條Dialog
     */
    private void progressDialog(){
    	mProgress = new ProgressDialog(mContext);
    	mProgress.setIcon(R.drawable.ic_launcher);
    	mProgress.setTitle("帶進度條的Dialog");
    	mProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    	mProgress.setButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(mContext, "確定", Toast.LENGTH_SHORT).show();
			}
		});
    	mProgress.setButton2("取消", new DialogInterface.OnClickListener() {
    		
    		@Override
    		public void onClick(DialogInterface dialog, int which) {
    			// TODO Auto-generated method stub
    			Toast.makeText(mContext, "取消", Toast.LENGTH_SHORT).show();
    		}
    	});

    	mProgress.show();
    	new Thread(new Runnable() {
			int progress = 0;
			@Override
			public void run() {
				// TODO Auto-generated method stub
				while (progress <= 100) {
					mProgress.setProgress(progress);
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					progress++;
				}
			}
		}).start();
    }
    /**
     * 單選Dialog
     */
    private void simpleDialog(){
    	
    	singleSelectedId = -1;
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("單選Dialog");
    	builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				singleSelectedId = which;
				Toast.makeText(mContext, "你選擇的ID爲:"+which, Toast.LENGTH_SHORT).show();
			}
		});
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				if (singleSelectedId >= 0) {
					Toast.makeText(mContext, "你選擇的ID爲:"+singleSelectedId, Toast.LENGTH_SHORT).show();
				} else {
					singleSelectedId = 0;
					// 業務邏輯
				}
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	builder.create().show();
    }
    /**
     * 複選Dialog
     */
    private void chooseDialog(){
    	
    	boolean[] selected = new boolean[items.length];
    	for (int i = 0; i < selected.length; i++) {
			selected[i] = false;
		}
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("複選Dialog");
    	builder.setMultiChoiceItems(items, selected, new DialogInterface.OnMultiChoiceClickListener() {
    		
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				// TODO Auto-generated method stub
				if (isChecked) {
					list.add(which);
				} else {
					list.remove(which);
				}
			}
		});
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			String str = "你選擇了:";
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				for (int i = 0; i < list.size(); i++) {
					str += " "+items[list.get(i)];
				}
				Toast.makeText(mContext, str, Toast.LENGTH_LONG).show();
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	builder.create().show();
    }
    /**
     * 自定義Dialog
     */
    EditText username;
    EditText password;
    private void customDialog(){
    	
    	AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    	
    	LayoutInflater flater = LayoutInflater.from(mContext);
    	final View view = flater.inflate(R.layout.login, null);
    	
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setTitle("自定義Dialog");
    	builder.setView(view);
    	builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				username = (EditText) view.findViewById(R.id.username);
				password = (EditText) view.findViewById(R.id.pwd);
				Toast.makeText(mContext, ""+username.getText()+password.getText(), Toast.LENGTH_LONG).show();
			}
		});
    	builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		});
    	builder.create().show();
    }
	@Override
	public void onClick(View v) {
		int id = v.getId();
		switch (id) {
		case R.id.btn_three : {
			 threeDialog();
			 break;
		}
		case R.id.btn_progress : {
			progressDialog();
			break;
		}
		case R.id.btn_dan: {
			simpleDialog();
			break;
		}
		case R.id.btn_mus : {
	    	list = new ArrayList<Integer>();
			chooseDialog();
			break;
		}
		case R.id.btn_custom : {
			customDialog();
			break;
		}
		default :
			break;
		}
		
	}
}


layout中文件:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Dialog集合" />
	<Button 
	    android:id="@+id/btn_three"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="三個選項的Dialog"
	    />
	<Button 
	    android:id="@+id/btn_progress"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="進度條Dialog"
	    />
	<Button 
	    android:id="@+id/btn_dan"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="單選Dialog"
	    />
	<Button 
	    android:id="@+id/btn_mus"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="多選Dialog"
	    />
	<Button 
	    android:id="@+id/btn_custom"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="自定義Dialog"
	    />
</LinearLayout>


login.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
	
    <LinearLayout 
        android:id="@+id/user_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView 
            android:id="@+id/text_user"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"
            />
        <EditText 
            android:id="@+id/username"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:saveEnabled="true"
            android:hint="姓名"
            />
    </LinearLayout>
	
    <LinearLayout 
        android:id="@+id/pwd_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView 
            android:id="@+id/text_pwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密碼:"
            />
        <EditText 
            android:id="@+id/pwd"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:saveEnabled="true"
            android:hint="密碼"
            />
    </LinearLayout>
    
</LinearLayout>


祝大家學習Android愉快!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章