文字就不說了,直接上代碼。
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愉快!