您的位置:首页 > 移动开发 > Android开发

Android经常使用的五种弹出对话框

2016-03-12 19:48 459 查看
一个Android开发中经常使用对话框的小样例,共同拥有五种对话框:普通弹出对话框,单选对话框,多选对话框,输入对话框及进度条样式对话框:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<Button

android:id="@+id/common_dialog"

android:layout_width="match_parent"

android:layout_height="40dp"

android:text="普通对话框"

android:textSize="16sp"

android:layout_marginTop="10dp" />

<Button

android:id="@+id/radio_dialog"

android:layout_width="match_parent"

android:layout_height="40dp"

android:text="单选对话框"

android:textSize="16sp"

android:layout_marginTop="10dp" />

<Button

android:id="@+id/check_dialog"

android:layout_width="match_parent"

android:layout_height="40dp"

android:text="多选对话框"

android:textSize="16sp"

android:layout_marginTop="10dp" />

<Button

android:id="@+id/input_dialog"

android:layout_width="match_parent"

android:layout_height="40dp"

android:text="输入文字对话框"

android:textSize="16sp"

android:layout_marginTop="10dp" />

<Button

android:id="@+id/progress_dialog"

android:layout_width="match_parent"

android:layout_height="40dp"

android:text="进度条对话框"

android:textSize="16sp"

android:layout_marginTop="10dp" />

</LinearLayout>

以下是输入内容的简单布局activity_input.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/LinearLayout1"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

<EditText

android:id="@+id/uname"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

<EditText

android:id="@+id/upass"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

</LinearLayout>

代码及凝视:

public class MainActivity extends Activity implements OnClickListener {

/**单选框模拟标题 大学*/

private final static int CHECKED_ENU = 0;

/**单选框模拟标题 高中*/

private final static int CHECKED_SEL = 1;

/**单选框模拟标题 初中*/

private final static int CHECKED_CHU = 2;

/**复选button状态为全选 */

private boolean[] checked = { true, true, true, false };

/**模拟的进度值 */

private int progressNumber;

/**进度对话框 */

private ProgressDialog progressDialog;

/**相应button*/

private Button commonBtn, radioBtn, checkBtn, inputBtn, progressBtn;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initViews();

initListeners();

}

/**初始化UI控件*/

private void initViews() {

this.commonBtn = (Button) findViewById(R.id.common_dialog);

this.radioBtn = (Button) findViewById(R.id.radio_dialog);

this.checkBtn = (Button) findViewById(R.id.check_dialog);

this.inputBtn = (Button) findViewById(R.id.input_dialog);

this.progressBtn = (Button) findViewById(R.id.progress_dialog);

}

/**注冊button监听事件*/

private void initListeners() {

this.commonBtn.setOnClickListener(this);

this.radioBtn.setOnClickListener(this);

this.checkBtn.setOnClickListener(this);

this.inputBtn.setOnClickListener(this);

this.progressBtn.setOnClickListener(this);

}

/**普通对话框 */

private Dialog buildAlertDialog() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_launcher);

builder.setTitle("对话框");

builder.setMessage("您的password不正确!!");

ImageView imageView = new ImageView(this);

imageView.setImageResource(R.drawable.mm1);

/**设置背景图片*/

builder.setView(imageView);

/**左边button*/

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击的是左边确定button!");

}

});

/**中间button*/

builder.setNeutralButton("详情", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击的是中间详情button!");

}

});

/**右边button*/

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

setTitle("您点击的是右边取消button!");

}

});

return builder.create();

}

/**单选button弹出框 */

private Dialog buildAlertDialog_radio() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_launcher);

builder.setTitle("对话框");

/**单选button,默认高中被选中*/

builder.setSingleChoiceItems(new String[] { "大学", "高中", "初中", "小学" }, 1, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

switch (which) {

case CHECKED_ENU:

setTitle("大学");

break;

case CHECKED_SEL:

setTitle("高中");

break;

case CHECKED_CHU:

setTitle("初中");

break;

default:

setTitle("小学");

break;

}

}

});

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击的是左边确定button!");

}

});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击的是右边取消button!");

}

});

return builder.create();

}

/**能够多选button弹出框 */

private Dialog buildAlertDialog_checkbox() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_launcher);

builder.setTitle("对话框");

/**复选button*/

builder.setMultiChoiceItems(new String[] { "大学", "高中", "初中", "小学" }, checked, new DialogInterface.OnMultiChoiceClickListener() {

@Override

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

setTitle("which=" + which + "-----" + "isChecked=" + isChecked);

}

});

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击了确定button!");

}

});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

setTitle("您点击的是了取消button!");

}

});

return builder.create();

}

/**含能够输入文本的弹出框 */

private Dialog buildAlertDialog_input() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_launcher);

builder.setTitle("对话框");

LayoutInflater inflater = LayoutInflater.from(this);

builder.setView(inflater.inflate(R.layout.activity_input, null));

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击的是确定button!");

}

});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setTitle("您点击的是取消button!");

}

});

return builder.create();

}

/**进度对话框 */

private Dialog buildAlertDialog_progress() {

progressDialog = new ProgressDialog(this);

progressDialog.setTitle("进度条");

progressDialog.setMessage("正在下载...........");

/**进度条样式 */

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

/**模糊效果 */

progressDialog.setIndeterminate(false);

return progressDialog;

}

/**每隔0.3秒更新一次进度 */

public void updateProgress() {

new Thread() {

@Override

public void run() {

try {

while (progressNumber <= 100) {

progressDialog.setProgress(progressNumber++);

Thread.sleep(300);

super.run();

}

/**下载完后,关闭下载框 */

progressDialog.cancel();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}.start();

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.common_dialog:

buildAlertDialog().show();

break;

case R.id.radio_dialog:

buildAlertDialog_radio().show();

break;

case R.id.check_dialog:

buildAlertDialog_checkbox().show();

break;

case R.id.input_dialog:

buildAlertDialog_input().show();

break;

case R.id.progress_dialog:

buildAlertDialog_progress().show();

updateProgress();

break;

default:

break;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: