Android Studio常見對話框
1.普通對話框
2.單選對話框
3.多選對話框
4.進度條對話框
5.消息對話框
6.自定義對話框
1.普通對話框
//1.創建普通對話框
package com.krisantisce.androiddialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("dialog對話框") //設置標題
.setMessage("是否確定退出?") //設置提醒的信息
.setIcon(R.drawable.log) //設置圖標
.setPositiveButton("確定",null) //添加確定按鈕
.setNegativeButton("取消",null) //添加取消按鈕
.create();
dialog.show();
}
}
效果:
2.單選對話框
//2.創建單選對話框
package com.krisantisce.androiddialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog = new AlertDialog.Builder(this)
.setIcon(R.drawable.log) //添加圖標
.setTitle("請選擇你的性別^_^")
.setPositiveButton("確定", null) //添加確定按鈕
.setNegativeButton("取消", null) //添加取消按鈕
.setSingleChoiceItems(new String[]{"男", "女"}, -1, //負數表示沒有默認選擇;0默認選擇"男",1默認選擇"女"
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.create();
dialog.show();
}
}
效果:
3.多選對話框
//3.創建多選對話框
package com.krisantisce.androiddialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setIcon(R.drawable.log) //設置圖標
.setTitle("請選擇你感興趣的類型^_^") //設置標題
.setPositiveButton("選好啦",null) //設置確定按鈕
.setNegativeButton("下次再說吧",null) //設置取消按鈕
.setMultiChoiceItems(new String[]{"蘿莉","御姐","正太","少女","女裝大佬","萌妹","軟妹子","JK","ACG","二次元"},null,null)
.create();
alertDialog.show();
}
}
效果:
4.進度條對話框
// 4.創建進度條對話框
package com.krisantisce.androiddialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ProgressDialog progressDialog = new ProgressDialog(this); //構建對話框
progressDialog.setTitle("進度條對話框");
progressDialog.setIcon(R.drawable.log);
progressDialog.setMessage("正在下載,請稍后^_^");
//設置水平進度條
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //條形進度條
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //圓形進度條
progressDialog.show();
}
}
條形效果:
圓形效果
5.消息對話框
//5.消息對話框
package com.krisantisce.androiddialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this,"HrlloWorld",Toast.LENGTH_SHORT).show(); //通知時間短
Toast.makeText(this,"HelloWorld",Toast.LENGTH_LONG).show(); //通知時間長
}
}
效果:
6.自定義對話框
- 創建自定義對話框樣式,這里以mydialog.xml為例;
- 創建MyDialog類;
- MainActivity調用MyDialog類
創建mydialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="提示"
android:background="#E619E3"
android:textSize="28sp"/>
<TextView
android:id="@+id/tv_2"
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:text="你真的要離開嗎"
android:textColor="#ff0400"
android:background="@drawable/log3"
android:textSize="28sp"/>
<LinearLayout
android:id="@+id/ll_1"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="50sp"
android:gravity="center"
android:background="#D3DF26">
<Button
android:id="@+id/btn_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="殘忍離開"
android:textSize="24sp"
android:background="#06F18B"
android:layout_marginRight="30dp"
android:onClick="okclick"/>
<Button
android:id="@+id/btn_2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textSize="28sp"
android:text="馬上進入"
android:background="#8284E1"
android:layout_marginLeft="30dp"
android:onClick="canclick"/>
</LinearLayout>
</LinearLayout>
創建MyDialog類
package com.krisantisce.androiddialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
public class MyDialog extends Dialog { //繼承父類
private String dialogName;
public MyDialog(@NonNull Context context, String dialogName) {
super(context);
this.dialogName = dialogName;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); // 去除標題
setContentView(R.layout.mydialog); // 引入自定義對話框布局
TextView textView = findViewById(R.id.tv_2);
Button button_no = findViewById(R.id.btn_1);
Button button_ok = findViewById(R.id.btn_2);
//設置自定義對話框顯示內容
textView.setText(dialogName);
//給按鈕設置點擊事件
button_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
button_no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 把對話框關閉
dismiss();
}
});
}
}
MainActivity調用MyDialog類
package com.krisantisce.androiddialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDialog myDialog = new MyDialog(this,null);
myDialog.show();
}
}