摘要:Dialog是在一个好的应用程序中必不可少,因此这里我就谈谈Dialog的几种写法:常规写法(2种)和自定义写法,仅供自己以后参考。其中使用到的快捷键有插入import(ctrl+shift+o)、刷新(ctrl+shif+f)。
1.直接在Main_Activity中写一个AlertDialog
AlertDialog.Builder Builder = new AlertDialog.Builder(this);
Builder.setTitle("提示:"); // 标题栏
Builder.setMessage("确定退出应用程序!"); // 内容
Builder.setIcon(R.drawable.world); // 设置图标
Builder.setPositiveButton("确定", // 按钮监听事件,可直接退出一个activity
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// dbAdapter.deleteDBByName("SmarkPort.db"); // 调试作用
finish();
System.exit(0);
}
});
Builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 确定,不干什么
}
});
Builder.show();
还可以写成:
new AlertDialog.Builder(Main_Screen_Activity.this)
.setTitle("关于我们:")
.setMessage(
"版本:1" + "\r\n" + "作者:LBY" + "\r\n"
+ "开发时间:2014年")
.setIcon(R.drawable.world)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
}
}).show();
2.自定义一个Dialog,其步骤如下:
1)在layout.xml中重新布置dialog的布局作为一个界面,如R.layout.other_dlg
2)写一个class继承Dialog或者AlertDialog都行
public class OtherDlg extends Dialog implements
android.view.View.OnClickListener {
public OtherDlg(Context context) {
super(context);
}
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏
super.onCreate(savedInstanceState);
setContentView(R.layout.other_dlg);// 设置对话框的布局
}
在main_Activity中的调用方式为:
Dialog dialog = new SetDlg(Main_Screen_Activity.this, R.style.dialog); // 重写了style,改变Dialog格式
Window window = dialog.getWindow();
WindowManager windowManager = getWindowManager();
// Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = window.getAttributes();
window.setGravity(Gravity.BOTTOM); // 置于底端,与windowManager同用
lp.alpha = 0.7f; // 透明度
lp.x = 300; // 与左边偏移量
lp.y = 75; // 与底边偏移量,android中有一个PopupWindow可以调用,这里先不调了。
// lp.width = (int)(display.getWidth()); //将dialog宽度充满屏
window.setAttributes(lp);
dialog.setCanceledOnTouchOutside(true);// 设置点击Dialog外部任意区域关闭Dialog
dialog.show();
若要使Dialog充满整个界面参考网址:http://blog.csdn.net/xuewater/article/details/29808499
style代码为:
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<!-- 边框 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item>
<!-- 半透明 -->
<item name="android:windowNoTitle">true</item>
<!-- 无标题 -->
<item name="android:windowBackground">@color/transparent</item>
<!-- 背景透明 -->
<item name="android:backgroundDimEnabled">false</item>
<!-- 模糊 -->
</style>
3)第2步中的onCreate()可以由一个函数替换
public void DisplayDilog() {
// TODO Auto-generated constructor stub
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏
setContentView(R.layout.portinfo_dlg);// 设置对话框的布局
show();
}
这种写法可以重写标题和内容,为能够重复使用提供基础。
在main_Activity中的调用方式为:
new ScoreDlg(Main_Screen_Activity.this).DisplayDilog();