1:第一种简单应用对话框。
先新建android project
修改AndroidManifest.xml文件activity的属性代码:
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@android:style/Theme.Dialog"
><!-- 设置activity的显示模式为Dialog -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
结果运行图如下
2:单击按钮时显示出一个对话框
布局Layout下的activity_mian.xml代码
<RelativeLayout 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" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/look" tools:context=".MainActivity" /> </RelativeLayout>
string.xml代码
<resources> <string name="app_name">tds</string> <string name="look">欢迎来到对话框!</string> <string name="hello_world">查看AlertDialog对话框!</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">MainActivity</string> <string name="s">这里是AlertDialog对话框!</string> <string name="message">编写人:某某</string> <string name="ok">确定</string> <string name="cancal">取消</string> </resources>
MainActivity.java代码
import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { //定义组件 private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //查找button组件 button = (Button) this.findViewById(R.id.button); //点击按钮触发显示Dialog事件 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this); //对话框的标题 builder.setTitle(R.string.s); //显示的信息内容 builder.setMessage(R.string.message); //设置android内中的图标库为对话框图标 builder.setIcon(android.R.drawable.ic_menu_help); builder.setPositiveButton(R.string.ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //点击确定时弹出文本域提示信息 Toast.makeText(MainActivity.this, "欢迎查看对话框", Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton(R.string.cancal, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //点击取消时退出程序 finish(); } }); builder.show(); } }); }
运行效果:
3:将布局文件设置到对话框里面
(1)实现xml文件变为dialog里面的内容
(2)ProgressDialog进程对话框的简单应用
activity_main.xml文件
<RelativeLayout 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" >
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp"
android:text="@string/login" />
</RelativeLayout>
新建xml登录布局文件用于弹出对话框用户输入用户名和密码login.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:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/inputname" /> <EditText android:id="@+id/user" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" > </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/inputpass" /> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" > </EditText> </LinearLayout>
string.xml代码;
<resources> <string name="app_name">DialogTest</string> <string name="login">进入登录页面</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">主界面</string> <string name="inputname">请输入你的用户名:</string> <string name="inputpass">请输入你的密码:</string> <string name="hello_world">Hello world!</string> <string name="title_activity_success">登录成功页</string> </resources>
Main_Activity.java代码
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
//查找登录按钮组件 login = (Button) this.findViewById(R.id.login); //注册监听,点击按钮打开登录对话框
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示登录窗口
showDialog(LOGIN);
}
});
}
创建对话框:
@Override protected Dialog onCreateDialog(int id) { //LayoutInflater将xml的布局文件变成一个View实例 LayoutInflater inflater=LayoutInflater.from(this); //布局为logindialog实例 View logindialog=inflater.inflate(R.layout.login, null); //NEW出alertdialog AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setIcon(android.R.drawable.ic_menu_help).setTitle("请输入").setView(logindialog); //查找已布局到对话框内View--logindialog的用户名和密码组件 name=(EditText) logindialog.findViewById(R.id.user); pass=(EditText) logindialog.findViewById(R.id.password); builder.setPositiveButton("登录", new DialogInterface.OnClickListener() { //点击登录时事件处理 @Override public void onClick(DialogInterface dialog, int which) { System.out.println(name.getText()); System.out.println(pass.getText()); //转化为String类型,否则出现空指针异常 if(name.getText().toString().equals("admin")&&pass.getText().toString().equals("123")){ //创建进程对话框 ProgressDialog pro=ProgressDialog.show(MainActivity.this, "请等待","正在为你登录……", true); try { //进程休眠三秒钟 Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } Intent intent=new Intent(); intent.setClass(MainActivity.this,SuccessActivity.class); //将登录的用户名传到另一个activity——SuccessActivity intent.putExtra("username", name.getText().toString()); //必须转化为String类型,否则出现空指针 startActivity(intent); } else Toast.makeText(MainActivity.this, "登录失败!!!\n用户名或密码不正确", Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){ //取消登录时退出登录 @Override public void onClick(DialogInterface dialog, int which) { removeDialog(LOGIN);//关闭对话框 } }); return builder.create(); }
activity_success.xml布局文件代码:
<RelativeLayout 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" >
<TextView
android:id="@+id/showuser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:padding="@dimen/padding_medium"
tools:context=".SuccessActivity" />
</RelativeLayout>
Success_Activity.java代码
public class SuccessActivity extends Activity { private TextView showinfo; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_success); showinfo=(TextView) this.findViewById(R.id.showuser); //获取定义的意图,得到传的参数值 Intent i=this.getIntent(); showinfo.setText("登录成功!!!\n欢迎"+i.getStringExtra("username")+"登录!"); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_success, menu); return true; } }
运行效果:
用户名及密码不正确或是有空值时登录失败,不跳转其他页面
输入正确时显示进程对话框,并进行登录跳转成功页面