Android——基本控件(下)(十五)

news/2024/10/31 0:11:59/

1. 对话框:Dialog

1.1 知识点

(1)掌握对话框的主要作用;

(2)可以使用AlertDialog和AlertDialog.Builder进行对话框的建立;

(3)可以通过LayoutInflater进行定制对话框的实现;

(4)可以定义日期对话框、时间对话框、进度对话框的操作。

1.2 具体内容

 通过此类的继承关系发现,Dialog并不是View类的子类,所以不能再布局文件中编写Dialog这个组件,那么就必须要写在Activity程序中。

通过API观察发现,Dialog这个类多个子类,这些子类就是实现的对话框的形式不一样而已。

AlertDiglog 和 AlertDialog.Bulider 这两个类:

Alert是警告的意思,所以AlertDialog表示的是一种警告框,主要就是弹出一些警告的信息。

 

发现AlertDialog是Dialog的子类,所以可以使用Dialog所有的(非私有)方法,通过API可以发现,AlertDialog这个类的构造方法都是propected修饰的,表示此类的构造方法只能有此类、此类的子类、同一个包中的类去调用。所以我们没有办法去使用此类的构造方法构造此类对象。那么现在问题来了:现在想要在自己写的程序中实例化一个AlertDialog对象,就必须要去使用到AlertDialog.Bulider这个类完成,通过AlertDialog.Bulider这个类的名称就可以知道,就是一个专门用于创建警告框的类。

 

 

public class DialogActivity extends Activity {private Dialog dialog = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);this.dialog = new AlertDialog.Builder(this).create();//创建Dialog对象}
}

 现在程序就是创建了一个对话框,而此对话框没有任何内容,那么下面我们就进行内容填充。

public class DialogActivity extends Activity {private Dialog dialog = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);this.dialog = new AlertDialog.Builder(this).setTitle("对话框").setIcon(R.drawable.logo).setMessage("这是一个对话框").create();//创建Dialog对象this.dialog.show();//显示对话框}
}

此时一个对话框就创建好了,在以后我们的很多项目中,都需要使用对话框,比如,在删除一笔数据的时候,需要一个信息提示框,这样可以防止用户误操作。让用户确认是否删除也是使用对话框实现的,但是这种对话框肯定需要添加按钮。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class DialogActivity extends Activity {private Dialog dialog = null;private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {DialogActivity.this.dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("确认删除?").setIcon(R.drawable.exit).setMessage("您确定要删除此笔数据?").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//确认之后需要做的事情}}).setNeutralButton("查看详情", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//查看详情所需要做的事情}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//取消操作}}).create();//创建Dialog对象DialogActivity.this.dialog.show();//显示对话框}});}
}

现在我们只是简单的将画面给编写出来,但是后期我们肯定需要根据业务需求加入事件操作。

 

在许多程序中,都可以让用户实现退出的功能,而所有的退出程序一般都会有一个确认框,在退出的时候调用会让用户去选择是否退出。

<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"><ImageButtonandroid:id="@+id/but"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/exit" />
</LinearLayout>

 现在布局已经完成,主要就是在Activity程序中编写一个对话框以确认是否退出,另外还有一个关键就是程序到底是什么时候才退出呢?可以直接利用Activity类中所提供的finish()完成程序退出。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;public class DialogActivity extends Activity {private Dialog dialog = null;private ImageButton but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);this.but = (ImageButton) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {DialogActivity.this.dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("确认退出?").setIcon(R.drawable.exit).setMessage("您确定要退出此程序吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//确认之后需要做的事情DialogActivity.this.finish();//表示退出程序}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//取消操作}}).create();//创建Dialog对象DialogActivity.this.dialog.show();//显示对话框}});}
}

相信很多同学在使用手机的时候,直接按返回键也能完成退出程序的功能,再次我们通过按返回键弹出确认退出对话框。如果这个时候相对按键进行监听,我们只需要覆写一个操作方法,对按键进行监听。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;public class DialogActivity extends Activity {private Dialog dialog = null;private ImageButton but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);this.but = (ImageButton) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {DialogActivity.this.extiDialog();//调用弹出对话框的方法}});}/*** @param keyCode 按下的是哪个键* @param event*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//此处需要进行判断按下的是否是返回键if(keyCode == KeyEvent.KEYCODE_BACK){this.extiDialog();}return false;//表示继续执行}/*** 弹出退出对话框并进行监听操作*/public void extiDialog(){DialogActivity.this.dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("确认退出?").setIcon(R.drawable.exit).setMessage("您确定要退出此程序吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//确认之后需要做的事情DialogActivity.this.finish();//表示退出程序}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//取消操作}}).create();//创建Dialog对象DialogActivity.this.dialog.show();//显示对话框}
}

对话框列表:

<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="horizontal"><Buttonandroid:id="@+id/but"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请选择你喜欢的水果" /><TextView android:id="@+id/mytext"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

 布局已经编写,关键就是Activity程序中定义我们列表对话框。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class DialogActivity extends Activity {private Button but = null;private TextView mytext = null;private String fruitData[] = {"苹果","西瓜","水蜜桃"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.mytext = (TextView) super.findViewById(R.id.mytext); this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Dialog dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("请选择您喜欢的水果").setIcon(R.drawable.logo).setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {}}).setItems(DialogActivity.this.fruitData,  new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {String fruit = fruitData[which];DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);}}).create();dialog.show();//显示对话框}});}
}

现在的程序是通过硬编码完成的,如果不希望内容以硬编码的方式出现,我们可以将水果信息配置到一个单独的文件中,就是之前所说的资源文件。

<?xml version="1.0" encoding="utf-8"?>
<resources><string-array name="friut"><item>苹果</item><item>西瓜</item><item>水蜜桃</item></string-array>
</resources>

现在是需要简单的修改一下Activity程序。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class DialogActivity extends Activity {private Button but = null;private TextView mytext = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.mytext = (TextView) super.findViewById(R.id.mytext); this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Dialog dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("请选择您喜欢的水果").setIcon(R.drawable.logo).setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {DialogActivity.this.mytext.setText("");//情况内容}}).setItems(R.array.friut,  new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {String fruit = DialogActivity.this.getResources().getStringArray(R.array.friut)[which];//从资源文件中读取选中的内容DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);}}).create();dialog.show();//显示对话框}});}
}

现在我们已经通过配置文件进行最终的显示效果,列表信息完成了之后,我们现在来研究一下如何实现单选钮对话框。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class DialogActivity extends Activity {private Button but = null;private TextView mytext = null;private String fruitData[] = {"苹果","西瓜","水蜜桃"};private int index = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.mytext = (TextView) super.findViewById(R.id.mytext); this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Dialog dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("请选择您喜欢的水果").setIcon(R.drawable.logo).setPositiveButton("确认",  new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {}//DialogActivity.this.index 表示默认的选中项}).setSingleChoiceItems(DialogActivity.this.fruitData, DialogActivity.this.index, new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {String fruit = fruitData[which];DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);DialogActivity.this.index = which;//保存我们已选中的项}}).create();dialog.show();//显示对话框}});}
}

 此程序虽然已经实现了单选,但是无论如何还是需要点击确认或者取消按钮才能回到主屏幕。那么不如在点击确认之后再更新主屏幕信息。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class DialogActivity extends Activity {private Button but = null;private TextView mytext = null;private String fruitData[] = {"苹果","西瓜","水蜜桃"};private int index = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.mytext = (TextView) super.findViewById(R.id.mytext); this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Dialog dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("请选择您喜欢的水果").setIcon(R.drawable.logo).setPositiveButton("确认",  new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubString fruit = fruitData[DialogActivity.this.index];DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);}}).setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {}//DialogActivity.this.index 表示默认的选中项}).setSingleChoiceItems(DialogActivity.this.fruitData, DialogActivity.this.index, new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {DialogActivity.this.index = which;//保存我们已选中的项}}).create();dialog.show();//显示对话框}});}
}

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class DialogActivity extends Activity {private Button but = null;private TextView mytext = null;private String fruitData[] = {"苹果","西瓜","水蜜桃"};private boolean flag[] = {false,false,false};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.mytext = (TextView) super.findViewById(R.id.mytext); this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Dialog dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("请选择您喜欢的水果").setIcon(R.drawable.logo).setPositiveButton("确认",  new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {StringBuffer sb = new StringBuffer();//这也是一个字符串for (int i = 0; i < flag.length; i++) {if(flag[i]){sb.append(fruitData[i]+",");}}DialogActivity.this.mytext.setText("您喜欢的水果为:" + sb.toString());}}).setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {}//参数1为一个显示内容数组,参数2 位 一个 boolean数组,长度和参数1的数组长度相同,表示选中的为那些}).setMultiChoiceItems(DialogActivity.this.fruitData, flag, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {if(isChecked){flag[which] = true;}else{flag[which] = false;}}}).create();dialog.show();//显示对话框}});}
}

 对话框所实现的功能都是比较基础的,不管如何变化,都是使用AlertDialog.Bulider这个类完成创建的。

 

登录的布局: 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/loginlayout"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="用户名:" /><EditTextandroid:id="@+id/username"android:layout_width="200px"android:layout_height="wrap_content" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密      码:" /><EditTextandroid:id="@+id/password"android:layout_width="200px"android:layout_height="wrap_content"android:password="true" /></LinearLayout>
</LinearLayout>

登录布局已经完成,现在主要是进行Activity程序编写。

package com.example.dialogproject;import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class DialogActivity extends Activity {private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {//实例化LayoutInflater对象LayoutInflater flater = LayoutInflater.from(DialogActivity.this);//将布局转换成一个组件View view = flater.inflate(R.layout.login, null);Dialog dialog = new AlertDialog.Builder(DialogActivity.this).setTitle("用户登陆").setIcon(R.drawable.logo).setPositiveButton("登陆", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {}}).setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {}}).setView(view)//将组件放入到对话框.create();dialog.show();}});}
}

日期对话框:

 

package com.example.dialogproject;import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;public class DialogActivity extends Activity {private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {DatePickerDialog dialog = new DatePickerDialog(DialogActivity.this,new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {}},1988,11,12);dialog.updateDate(2008, 7, 8);//修改时间dialog.show();}});}
}

 时间对话框:

 

package com.example.dialogproject;import android.app.Activity;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;public class DialogActivity extends Activity {private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {TimePickerDialog dialog = new TimePickerDialog(DialogActivity.this,new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay,int minute) {}},18,20,true);dialog.show();}});}
}

 进行对话框:

 

现在进度使用一个线程去控制。

package com.example.dialogproject;import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class DialogActivity extends Activity {private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {final Dialog dialog = ProgressDialog.show(DialogActivity.this, "搜索网络", "请耐心等待。。。");new Thread(){public void run(){try{Thread.sleep(3000);}catch(Exception e){e.printStackTrace();}finally{dialog.dismiss();}}}.start();dialog.show();}});}
}

 以上的程序只是完成了一个简单的操作,并不是最为严格的方式,只是做了一些基本的线程进行模拟,当然我们ProgressDialog除了使用静态的show方法之外,还可以使用构造方法实例化(一般不会去使用)。

package com.example.dialogproject;import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class DialogActivity extends Activity {private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {final ProgressDialog dialog = new ProgressDialog(DialogActivity.this);dialog.setTitle("搜索网络");dialog.setMessage("请耐心等待。。。");new Thread(){public void run(){try{Thread.sleep(3000);}catch(Exception e){e.printStackTrace();}finally{dialog.dismiss();}}}.start();dialog.show();}});}
}

默认情况下,都是环形进度,我们也可以设置水平进度。

package com.example.dialogproject;import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class DialogActivity extends Activity {private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_dialog);this.but = (Button) super.findViewById(R.id.but);this.but.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {final ProgressDialog dialog = new ProgressDialog(DialogActivity.this);dialog.setTitle("搜索网络");dialog.setMessage("请耐心等待。。。");dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平显示进度dialog.setMax(100);dialog.setProgress(30);dialog.setButton("后台处理", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});dialog.setButton2("详细信息", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.onStart();new Thread() {				// 线程对象public void run() {			// 线程主体方法for (int x = 0; x < 100; x++) {try {Thread.sleep(500);	// 休眠0.5秒} catch (InterruptedException e) {e.printStackTrace();}	// 进度条每次增长1dialog.incrementProgressBy(1);}dialog.dismiss();	// 关闭对话框}}.start();			// 线程启动dialog.show();}});}
}

1.3 小结

(1)对话框主要通过Activity程序生成,用于对用户的操作进行提示;

(2)对话框可以分为:普通对话框、日期对话框、时间对话框、进度对话框;

(3)对话框的显示组件也可以使用布局文件配置,但是需要通过LayoutInflater类完成转换。


http://www.ppmy.cn/news/598408.html

相关文章

netwox 基于 Ethernet 层构造 IP 数据包【网络工程】(保姆级图文)

目录 基于 Ethernet 层构造 IP 数据包1) 不指定选项&#xff0c;直接运行该模块&#xff0c;查看默认设置。执行命令如下&#xff1a;3) 验证构造的数据包&#xff0c;使用 Wireshark 工具捕获数据包&#xff0c;如图所示。其中&#xff0c;第 2 个数据包为构造的 IPv4 数据包。…

联想Lenovo Quick Fix:关闭或开启Win10系统的自动更新

禁止win10更新小工具.zip - 蓝奏云 下载链接&#xff1a;关闭Win10自动更新.exe - 蓝奏云

联想X86服务器重启管理控制器(XClarity Controller)或TSM的方法

当设备运行较长时间时&#xff0c;服务器的管理控制器&#xff08;或称服务处理器&#xff0c;Service Processor&#xff09;可能由于内存或空间等问题响应缓慢&#xff0c;如果机器上运行ESXi&#xff0c;有可能会在Vcenter报出部件的“state deassert”信息&#xff0c;如下…

联想电脑 linux BIOS,Lenovo笔记本BIOS中各个选项的中文含义是什么

操作步骤: Lenovo笔记本电脑进入BIOS方式: 方式一:按下电源开关按钮开机后,连续不断敲击键盘上的F2按键(频率:每秒1-2次); 方式二:按下电源开关按钮开机后,一边按下键盘左下角的Fn功能键,一边连续不断敲击键盘上的F2按键(频率:每秒1-2次); 方式三: 1、目前联想新销售…

按丶自动打开计算机,联想电脑台式机启动自动进入Lenovo diagnostics界面

用户找到电脑不能进入桌面,启动电脑总是显示这个界面,打开机箱盖子,发现硬件配置,还是独立显卡都很正常。灰尘也不多 ,配置也挺好。 总是进入这个界面,最后发现原来键盘的F10按键被按下去了, 这个台式机键盘比较生硬,容易卡主,灵敏度还行,一点键盘按键卡主,就系统总…

联想lenovo电脑如何开机进入Bios与Boot menu

一、启动快捷启动菜单模式 在开机后电脑屏幕显示了”LENOVO“字样图画的时候&#xff0c;疯狂按F12&#xff0c;如果不行就重启再试一次&#xff0c;如果还不行&#xff0c;就再重启一次&#xff0c;按FnF12。界面如下图所示&#xff1a; 二、开机启动进入bios 在开机后电脑屏…

thinkpad硬件测试软件,Lenovo Diagnostics Windows(联想硬件诊断工具)

LenovoDiagnosticsWindows是一款联想官方打造的电脑硬件检测诊断软件&#xff0c;帮助用户检测电脑硬件问题&#xff0c;并进行修复&#xff0c;有需要的用户可以下载使用。 相关软件软件大小版本说明下载地址 Lenovo Diagnostics Windows是一款联想官方打造的电脑硬件检测诊断…

联想y7000电脑未正确启动_Lenovo/联想 拯救者 Y7000简单装系统教程

前言 今天U大师讲下Lenovo/联想 拯救者 Y7000简单装系统教程。Lenovo/联想 拯救者 Y7000 游戏笔记本是一款四核手提电脑。拥有着15.6英寸的屏幕&#xff0c;配置了酷睿八代CPU,轻薄的机体装有独显4G。电脑的配置简单就是这样&#xff0c;那么如何给Lenovo/联想 拯救者 Y7000快速…