1.代码运行目录
AndroidManifest.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.administrator.android">
4
5 <application
6 android:allowBackup="true"
7 android:icon="@mipmap/ic_launcher"
8 android:label="@string/app_name"
9 android:supportsRtl="true"
10 android:theme="@style/AppTheme">
11 <activity android:name=".MainActivity" />
12 <activity android:name=".TestActivity4" />
13 <activity android:name=".Main2Activity" />
14 <activity android:name=".Main3Activity">
15 <intent-filter>
16 <action android:name="android.intent.action.MAIN" />
17 <category android:name="android.intent.category.LAUNCHER" />
18 </intent-filter>
19 </activity>
20 <activity android:name=".Main5Activity"></activity>
21 </application>
22
23 </manifest>
2.布局文件
activity_mani.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 tools:context="com.example.administrator.android.Main3Activity"
7 android:orientation="vertical">
8 <!--对话框-->
9 <Button
10 android:layout_width="match_parent"
11 android:layout_height="wrap_content"
12 android:text="一般对话框"
13 android:onClick="bt1_onclick"/>
14 <Button
15 android:layout_width="match_parent"
16 android:layout_height="wrap_content"
17 android:text="单选对话框"
18 android:onClick="bt2_onclick"/>
19 <Button
20 android:layout_width="match_parent"
21 android:layout_height="wrap_content"
22 android:text="复选对话框"
23 android:onClick="bt3_onclick"/>
24 <Button
25 android:layout_width="match_parent"
26 android:layout_height="wrap_content"
27 android:text="自定义对话框"
28 android:onClick="bt4_onclick"/>
29 <Button
30 android:layout_width="match_parent"
31 android:layout_height="wrap_content"
32 android:text="登录对话框"
33 android:onClick="bt5_onclick"/>
34 <Button
35 android:layout_width="match_parent"
36 android:layout_height="wrap_content"
37 android:text="日期对话框"
38 android:onClick="bt6_onclick"/>
39 <Button
40 android:layout_width="match_parent"
41 android:layout_height="wrap_content"
42 android:text="时间对话框"
43 android:onClick="bt7_onclick"/>
44 <Button
45 android:layout_width="match_parent"
46 android:layout_height="wrap_content"
47 android:text="普通进度对话框"
48 android:onClick="bt8_onclick"/>
49 </LinearLayout>
截屏如下:
3.各种对话框的运行JAVA代码。
Mani3Activity.java
第一种:一般对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 public void bt1_onclick(View v) {
29 //一般对话框 不能直接实例化
30 //内部提供构造器
31 //方法链调用
32 AlertDialog alertDialog = new AlertDialog.Builder(this)
33 .setTitle("确认对话框")
34 .setMessage("您确实要删除吗?")
35 .setNegativeButton("取消", new DialogInterface.OnClickListener() {
36 @Override
37 public void onClick(DialogInterface dialog, int which) {
38 Toast.makeText(Main3Activity.this, "取消删除……,which = " + which, Toast.LENGTH_SHORT).show();
39 }
40 })//负面按钮
41
42 .setPositiveButton("确认", new DialogInterface.OnClickListener() {
43 @Override
44 public void onClick(DialogInterface dialog, int which) {
45 Toast.makeText(Main3Activity.this, "执行删除……,which = " + which, Toast.LENGTH_SHORT).show();
46 }
47 })//正面按钮
48
49 .setNeutralButton("中立", new DialogInterface.OnClickListener() {
50 @Override
51 public void onClick(DialogInterface dialog, int which) {
52 Toast.makeText(Main3Activity.this, "执行命令……,which = " + which, Toast.LENGTH_SHORT).show();
53 }
54 })//普通按钮
55 .setCancelable(false) //杜绝点击其他位置关闭对话框 不能以分号结尾
56 .show(); //显示对话框的方法
57 }
58 }
第二种:单选对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 //单选对话框
29 public void bt2_onclick(View v) {
30 //final,中态 延长常量生命周期
31 final String[] str = {"男", "女"};
32 final AlertDialog a = new AlertDialog.Builder(this)
33 .setTitle("单选对话框")
34 .setSingleChoiceItems(str, 0, new DialogInterface.OnClickListener() {
35 @Override
36 public void onClick(DialogInterface dialog, int which) {
37 Toast.makeText(Main3Activity.this, "which = " + which +
38 ",选中的是:" + str[which], Toast.LENGTH_LONG).show();
39 //关闭对话框
40 dialog.dismiss();
41 }
42 })
43 .setCancelable(false) //模态窗口
44 .show();
45 }
46 }
单选对话框
第三种:复选对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 //复选对话框
29 public void bt3_onclick(View v)
30 {
31 final String [] str = {"宝马","奔驰","劳斯莱斯","宾利"};
32 final boolean[] ch = {true,false,false,true};
33 new AlertDialog.Builder(this)
34 .setTitle("复选对话框")
35 .setMultiChoiceItems(str, ch, new DialogInterface.OnMultiChoiceClickListener() {
36 @Override
37 public void onClick(DialogInterface dialog, int which, boolean isChecked) {
38 //改变对应数组项的选中值状态
39 ch[which]=isChecked;
40 }
41 })
42 //添加响应按钮
43 .setPositiveButton("确认", new DialogInterface.OnClickListener() {
44 @Override
45 public void onClick(DialogInterface dialog, int which) {
46 int i = 0;
47 //获取最终的选择状态
48 for (boolean b : ch) {
49 Toast.makeText(Main3Activity.this, str[i] + "选中的输出状态=" +
50 (b ? "选中" : "未选中"), Toast.LENGTH_LONG).show();
51 i++;
52 }
53 }
54 })
55 .setNegativeButton("取消", null)
56 .setCancelable(false)
57 .show();
58 }
59 }
复选对话框
第四种:自定义对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 //自定义对话框
29 public void bt4_onclick(View v)
30 {
31 LayoutInflater layoutInflater = getLayoutInflater();
32 View view = layoutInflater.inflate(R.layout.dialoglayout, null);
33 new AlertDialog.Builder(this)
34 .setTitle("自定义对话框")
35 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
36 @Override
37 public void onClick(DialogInterface dialog, int which) {
38 Toast.makeText(Main3Activity.this, "执行结束", Toast.LENGTH_SHORT).show();
39 }
40 })
41 .setView(view)
42 .show();
43 }
44 }
自定义对话框
第五种:登录对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 //登录对话框
29 public void bt5_onclick(View v)
30 {
31 //加载Layout文件
32 final View view = View.inflate(this, R.layout.dialog_login, null);
33
34 AlertDialog al = new AlertDialog.Builder(this)
35 .setTitle("登录对话框")
36 .setView(view)
37 .setPositiveButton("登录", new DialogInterface.OnClickListener() {
38 @Override
39 public void onClick(DialogInterface dialog, int which) {
40 //转换
41 AlertDialog al = (AlertDialog)dialog;
42 //获取输入信息
43 EditText et_1 = (EditText)al.findViewById(R.id.et_1);
44
45 Toast.makeText(Main3Activity.this, "用户名 = "+
46 et_1.getText(), Toast.LENGTH_SHORT).show();
47 //验证并提示
48 }
49 })
50 .setNegativeButton("取消",null)
51 .show();
52 }
53 }
登录对话框
第六种:日历选择对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 //当前日期 日历
29 //单例模式
30 Calendar c = Calendar.getInstance();
31 //日期对话框
32 public void bt6_onclick(View v)
33 {
34 DatePickerDialog dp = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
35 @Override
36 public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
37 Toast.makeText(Main3Activity.this, year+"-"+(monthOfYear+1)+"-"+dayOfMonth, Toast.LENGTH_SHORT).show();
38 }
39 }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
40
41 dp.setCancelable(false);
42
43 dp.show();
44 }
45 }
日历选择对话框
第七种:时间选择对话框
1 package com.example.administrator.android;
2
3 import android.app.AlertDialog;
4 import android.app.DatePickerDialog;
5 import android.app.Dialog;
6 import android.app.ProgressDialog;
7 import android.app.TimePickerDialog;
8 import android.content.DialogInterface;
9 import android.support.v7.app.AppCompatActivity;
10 import android.os.Bundle;
11 import android.text.Layout;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.DatePicker;
15 import android.widget.EditText;
16 import android.widget.TimePicker;
17 import android.widget.Toast;
18 import java.util.Calendar;
19
20 public class Main3Activity extends AppCompatActivity {
21
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main3);
27 }
28 //时间对话框
29 public void bt7_onclick(View v)
30 {
31 TimePickerDialog tp = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
32 @Override
33 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
34 Toast.makeText(Main3Activity.this, hourOfDay+":"+minute, Toast.LENGTH_SHORT).show();
35 }
36 }, c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE), true);
37
38 tp.setCanceledOnTouchOutside(false);
39
40 tp.show();
41 }
42 }
时间选择对话框
第八种:普通进度对话框
1 //普通进度对话框
2 public void bt8_onclick(View v)
3 {
4 final ProgressDialog progressDialog = new ProgressDialog(this);
5 progressDialog.setTitle("进度对话框");
6 progressDialog.setMessage("请等待. . .");
7 progressDialog.setCancelable(false);
8 progressDialog.show();
9 //不要写业务代码
10 //开启子线程 实现多线程
11 //1.继承 2.实现接口
12 //1.继承 Thread,重写run方法,调用start()
13 new Thread(){
14 @Override
15 public void run() {
16 try {
17 // 延迟 线程
18 Thread.sleep(3000);
19 }
20 catch (Exception e)
21 {
22 }
23 progressDialog.dismiss();//关闭方法
24 }
25 }.start();//start负责启动子线程
26 }
普通进度对话框
第九种:水平进度对话框
1 //水平进度对话框
2 public void bt9_onclick(View v)
3 {
4 final ProgressDialog progressDialog = new ProgressDialog(this);
5 progressDialog.setTitle("水平进度对话框");
6 progressDialog.setMessage("正在加载 . . .");
7 progressDialog.setCancelable(false);
8 //设置水平
9 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
10 progressDialog.show();
11 final TextView tv_2 = (TextView)findViewById(R.id.tv_2);
12 //启动子线程-实现接口方式Runnable启动
13 //匿名内部类
14 new Thread(new Runnable() {
15 @Override
16 public void run() {
17 //模拟进度变化
18 for (int i = 0 ; i <= 100;i++) {
19 progressDialog.setProgress(i);
20 try {
21 // 延迟 线程
22 Thread.sleep(200);
23 } catch (Exception e) {
24 }
25 }
26 //在子线程里访问UI线程的视图
27 runOnUiThread(new Runnable() {
28 @Override
29 public void run() {
30 tv_2.setText("下载完成!");
31 }
32 });
33 //执行完业务代码
34 //关闭
35 progressDialog.dismiss();//关闭方法
36 }
37 }).start();
38 }
39 }
水平进度对话框
自定义对话框如下:
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:layout_margin="16dp">
7
8 <EditText
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:hint="用户名"
12 android:id="@+id/et_1"
13 android:layout_margin="16dp"/>
14 <EditText
15 android:layout_width="match_parent"
16 android:layout_height="wrap_content"
17 android:hint="密码"
18 android:inputType="numberPassword"
19 android:id="@+id/et_2"
20 android:layout_margin="16dp"/>
21 </LinearLayout>
22
23 *登录对话框*
登录对话框
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6
7 <ImageView
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"
10 android:src="@drawable/f8"
11 android:layout_gravity="center"/>
12 </LinearLayout>
13
14 *自定义对话框*
自定义对话框