我们今天就来看看dialog类。其实我们的dialog在应用里用到的地方很多,也是最常用的一个类。那我们怎么样来实现一个简单的漂浮窗口那,完成在activity中创建。使用基本的dialog类,你可以创建一个新的实例并设定标题和布局。
效果图
本程序main.xml源码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="默认样式" />
<Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="改变图标样式" />
<Button
android:id="@+id/btn3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="获取输入内容样式" />
<Button
android:id="@+id/btn4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="单选项列表样式" />
<Button
android:id="@+id/btn5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="多选项列表样式" />
<Button
android:id="@+id/btn6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="信息内容为列表样式" />
<Button
android:id="@+id/btn7"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="登录样式" />
<Button
android:id="@+id/btn8"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="自定义样式" />
</LinearLayout>
AlertDialog类
1)提供1-3个可选按钮来向用户表达信息。这个功能可能和你在任何桌面编程中的经历相似,显示的按钮一般从OK、Cancel、Yes和No中选择。
2)以checkbox或radio Button的方式提供选项列表。
3)提供一个供用户输入的文本输入框
本程序Java源码
package com.sx.Dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class DialogActivity extends Activity implements android.view.View.OnClickListener
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button btn1 = (Button)findViewById(R.id.btn1);
final Button btn2 = (Button)findViewById(R.id.btn2);
final Button btn3 = (Button)findViewById(R.id.btn3);
final Button btn4 = (Button)findViewById(R.id.btn4);
final Button btn5 = (Button)findViewById(R.id.btn5);
final Button btn6 = (Button)findViewById(R.id.btn6);
final Button btn7 = (Button)findViewById(R.id.btn7);
final Button btn8 = (Button)findViewById(R.id.btn8);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btn1:
dialog1();
break;
case R.id.btn2:
dialog2();
break;
case R.id.btn3:
dialog3();
break;
case R.id.btn4:
dialog4();
break;
case R.id.btn5:
dialog5();
break;
case R.id.btn6:
dialog6();
break;
case R.id.btn7:
dialog7();
break;
case R.id.btn8:
dialog8();
break;
}
}
//1效果: 该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式
protected void dialog1()
{
AlertDialog.Builder builder = new Builder(DialogActivity.this);
builder.setMessage("确认退出吗?");
builder.setTitle("提示");
builder.setPositiveButton("确认", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
DialogActivity.this.finish();
}
});
builder.setNegativeButton("取消", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
builder.create().show();
}
//2效果:改变了对话框的图表,添加了三个按钮
protected void dialog2()
{
Dialog dialog = new AlertDialog.Builder(this)
.setIcon(android.R.drawable.btn_star)
.setTitle("喜好调查")
.setMessage("你喜欢李连杰的电影吗?")
.setPositiveButton("很喜欢"
,new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(DialogActivity.this, "我很喜欢他的电影。",Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("不喜欢", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(DialogActivity.this, "我不喜欢他的电影。", Toast.LENGTH_LONG).show();
}
})
.setNeutralButton("一般", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(DialogActivity.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG).show();
}
}).create();
dialog.show();
}
//3效果: 信息内容是一个简单的View类型
protected void dialog3()
{
new AlertDialog.Builder(this)
.setTitle("请输入")
.setIcon(android.R.drawable.ic_dialog_info)
.setView(new EditText(this))
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();
}
//信息内容是一组单选框
protected void dialog4()
{
new AlertDialog.Builder(this)
.setTitle("单选框")
.setIcon(android.R.drawable.ic_dialog_info)
.setSingleChoiceItems(new String[] { "Item1", "Item2" }, 0
,new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.setNegativeButton("取消", null)
.show();
}
//信息内容是一组复选框
protected void dialog5()
{
new AlertDialog.Builder(this)
.setTitle("复选框")
.setMultiChoiceItems(new String[] { "Item1", "Item2" }, null, null)
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();
}
//信息内容是一组简单列表
protected void dialog6()
{
new AlertDialog.Builder(this)
.setTitle("列表框")
.setItems(new String[] { "Item1", "Item2" }, null)
.setNegativeButton("确定", null)
.show();
}
//登录样式
protected void dialog7()
{
}
//自定义样式
protected void dialog8()
{
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog, (ViewGroup) findViewById(R.id.dialog));
new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout)
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();
}
}