对话框的几种实现方式
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context="com.example.a1_.MainActivity">
<Button
android:id="@+id/normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="normal"
android:text="提示对话框" />
<Button
android:id="@+id/progess"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="progess"
android:text="进度条对话框" />
<Button
android:id="@+id/single1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="single1"
android:text="列表对话框" />
<Button
android:id="@+id/single2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="single2"
android:text="单选带框对话框" />
<Button
android:id="@+id/more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="more"
android:text="多选对话框" />
</LinearLayout>
核心代码
package com.example.a1_;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.SystemClock;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//提示对话框
public void normal(View view) {
//创建构建器
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("提示对话框");
dialog.setMessage("我是对话框内容");
//设置对话框按钮
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您点击了确定", Toast.LENGTH_SHORT).show();
}
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您点击了取消", Toast.LENGTH_SHORT).show();
}
});
dialog.show();
}
//进度条对话框
public void progess(View view) {
//创建进度条对话框对象
final ProgressDialog pd = new ProgressDialog(this);
//设置进度条对话框内容
pd.setTitle("我是进度条对话框");
pd.setMessage("玩命加载中.....");
//设置进度条样式
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMax(100);
//设置进度条的当前进度,需要在子线程中进行
new Thread(new Runnable() {
@Override
public void run() {
for (int i =0;i<=100;i++){
SystemClock.sleep(30);
pd.setProgress(i);
}
//当进度条加载完毕,让进度条消失
pd.dismiss();
}
}).start();
//展示进度条
pd.show();
}
//列表单选对话框
public void single1(View view) {
//设置要展示的对话框内容
final String[]data= {"java","C++","PHP","html"};
new AlertDialog.Builder(this).setTitle("选择你喜欢的语言")
.setItems(data, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你选择了"+data[which], Toast.LENGTH_SHORT).show();
}
}).show();
}
//列表带框单选对话框
public void single2(View view) {
//设置你要学习的语言
final String[]data = {"java","C++","PHP","html"};
//链式编程
new AlertDialog.Builder(this).setTitle("选择你要学习的课程")
.setSingleChoiceItems(data, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你选择了"+data[which], Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}).show();
}
//多选对话框
public void more(View view) {
//准备数据
final String[]data = {"java","C++","PHP","html"};
//创建对话框 .setCancelable(false)设置按返回键无法让对话框消失
new AlertDialog.Builder(this).setTitle("选择你的爱好").setCancelable(false)
.setMultiChoiceItems(data, new boolean[]{false, true, false, true}, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked){
Toast.makeText(MainActivity.this, "你选择了"+data[which], Toast.LENGTH_SHORT).show();
}
}
})
//设置确定按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
}