本文共 5214 字,大约阅读时间需要 17 分钟。
本博文源于安卓基础对话框的实现。先讲理论后看实践。大家先可以看实践的效果,看到不懂的代码才回头看理论,加深理论的学习。知行合一方能做到知识有的放矢。
对话框是提示用户做出决定或输入额外信息的小窗口,对话框不会填充屏幕。对话框是一个有边框和标题栏的、独立存在的容器,再应用程序中经常使用对话框组件来进行人机交互,用于需要用户采取行动才能继续执行的事件。
Android系统提供了丰富的对话框功能。Dialog是所有对话框的基类,AlertDialog是Dialog的直接派生类。消息对话框(AlertDialog)是应用程序设计中最常用的对话框之一。AlertDialog的内容很丰富,可以放置标题、消息和3个按钮。使用它可以创建普通对话框、带列表的对话框,以及带单选按钮和复选框的对话框。AlertDialog的常用方法如表
方法 | 说明 |
---|---|
AlertDialog.Builder(Context) | 对话框Builder对象的构造方法 |
create() | 创建AlertDialog对象 |
setTitle() | 设置对话框标题 |
setIcon() | 设置对话框图标 |
setMessage() | 设置对话框的消息 |
setItems() | 设置对话框要显示的一个列表 |
setPositiveButton() | 在对话框中添加肯定按钮 |
setNegativeButton() | 在对话框中添加否定按钮 |
show() | 显示对话框 |
dismiss() | 关闭对话框 |
创建AlertDialog对象需要使用AlertDialog的内部类Builder,设计AlertDialog的步骤如下。
(1)用AlertDialog.Builder类创建对话框Builder对象Builder dialog = new AlertDialog.Builder(Context);
(2)设置对话框的标题、图标、提示信息内容、按钮等
dialog.setTitle("普通对话框")dialog.setIcom(R.drawable.icon1);dialog.setMessage("一个简单的提示对话框");dialog.setPositiveButton("确定",new okClick());
(3)创建并显示AlertDialog对话框对象。
dialog.create();dialog.show();
AlertDialog对话框是最重要的对话框,有多种表现形式、包括列表对话框、单选对话框、多选对话框、进度条对话框(ProgressDialog)、时间对话框(DatePickerDialog和TimePickerDIalog)、自定义布局对话框等形式。其中时间对话框带有允许用户选择日期或时间的预定义界面。
PressDialog类继承于AlertDialog,综合了进度条与对话框的特点,使用起来非常简单。ProgressDialog的常用方法如表所示:
方法 | 说明 |
---|---|
getMax() | 获取对话框进度的最大值 |
getProgress() | 获取对话框当前进度值 |
onStart() | 开始调用对话框 |
setMax(int max) | 设置对话框进度的最大值 |
setMessage(CharSequence message) | 设置对话框的消息 |
setProgress(int vlaue) | 设置对话框当前进度 |
show(COntext context,CharSequence title,CharSequence message) | 设置对话框的标题和消息 |
ProgressDialog(Context context) | 对话框的构造方法 |
点击普通对话框,弹出最平常的对话框,点击输入对话框,可以输入对话框,其中对话框的内容可以自由输入。在这里密码只要为admin就可以登录,否则就是登陆失败。
将此图另存为“xx.gif"
这个是主界面搭建的源码,下面部分会对他细致讲解
线性布局作为根元素,设置width与height,方向为垂直。
两个按钮作为响应事件width与height。id一定要设置,为了变得更加友好。text也要设置,textSize只是为了更美观。
次要界面就是实现对话框的弹出。这也就是用户登录对话框,后续java代码会对此进行相应事件配置。
也就是次界面的布局,主要实现用户登录对话框的界面。
简单的height与width设置,方向设置为垂直
也就是我们看到的用户名和密码这两个显示内容,不可编辑所以TextView。
id一定要设置,方便后面操作!
也就是两个按钮的代码,用户点击进行相应。
package com.example.myapplication;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.Toast;public class DialogActivity extends Activity implements View.OnClickListener { Button btn1,btn2; LinearLayout login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); btn1 = (Button)findViewById(R.id.button1); btn2 = (Button)findViewById(R.id.button2); btn1.setOnClickListener(this); btn2.setOnClickListener(this); } public void onClick(View arg0) { AlertDialog.Builder dialog = new AlertDialog.Builder(DialogActivity.this); if(arg0==btn1) { dialog.setTitle("警告"); dialog.setIcon(R.drawable.xx); dialog.setMessage("本项操作可能导致信息泄露!"); dialog.setPositiveButton("确定",new okClick()); dialog.create(); dialog.show(); } else if(arg0==btn2) { login = (LinearLayout)getLayoutInflater().inflate(R.layout.login,null); dialog.setTitle("用户登录").setMessage("请输入用户名和密码").setView(login); dialog.setPositiveButton("确定",new loginClick()); dialog.setIcon(R.drawable.xx); dialog.create(); dialog.show(); } } class okClick implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog,int which) { dialog.cancel(); } } class loginClick implements DialogInterface.OnClickListener{ EditText txt; @Override public void onClick(DialogInterface dialog,int which) { txt = (EditText)login.findViewById(R.id.paswdEdit); if((txt.getText().toString()).equals("admin")) Toast.makeText(getApplicationContext(),"登录成功",Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicationContext(),"密码错误",Toast.LENGTH_SHORT).show(); dialog.dismiss(); } } class exitClick implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog,int which) { DialogActivity.this.finish(); } }}
主界面代码看起来非常复杂,其实本身内容非常灵清。分为两种。第一种激活控件,将id一一get,这是第一种。第二种就是对用户所点击地进行相应事件的编辑。主要采用java的复写思想。然后在第二种用户登录对话框需要创建和显示对话框。我们还做了单击事件也要注意!
程序运行点击绿色按钮
代码得以运行主要有以下步骤
很高兴博文能帮助到大家!一些文件名的修改也要思考的。如果大家文件名有问题,可以参考博主做这个实验的目录,仅供参考!
转载地址:http://fsrd.baihongyu.com/