對話框的幾種實現方式
佈局文件
<?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();
}
}