Android的Dialog开发和运用
本文演示如何开发按BACK弹出退出游戏的Dialog对话框。
自定义Dialog需要一个Style文件,Layout文件。
style文件用来设置对话框的样式(主题)。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DialogExit" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<!--是否有标题-->
<item name="android:windowNoTitle">true</item>
<!--对话框是否浮动--><!-- 如果不是浮动,对话框就会变成全屏-->
<item name="android:windowIsFloating">true</item>
<!--对话框是否有遮盖-->
<item name="android:windowContentOverlay">@null</item>
<!--设置是否背景模糊-->
<item name="android:backgroundDimEnabled">false</item>
<!--背景灰度-->
<item name="android:backgroundDimAmount">0.1</item>
<!--此对话框的背景-->
<item name="android:windowBackground">@drawable/rect</item>
</style>
</resources>Layout文件用来设置对话框的按钮文字等信息
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="top"
>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="5dip" >
<TextView
android:id="@+id/dialog_eixt_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:text="消息"
android:textColor="#FFFFFF" />
<TableRow
android:id="@+id/dialog_eixt_tablerow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/dialog_eixt_message"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center_horizontal">
<Button
android:id="@+id/dialog_eixt_okbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button"
android:text="确定"
android:textColor="#ffffff"
android:textSize="15sp"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="5dip"
android:paddingBottom="5dip"/>
<Button
android:layout_marginLeft="25dip"
android:id="@+id/dialog_eixt_cancelbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button"
android:text="取消"
android:textColor="#ffffff"
android:textSize="15sp"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="5dip"
android:paddingBottom="5dip"
/>
</TableRow>
</RelativeLayout>
</RelativeLayout> 接下来就是在代码中的运用!
新建一个类,继承DIalog,然后对文字信息进行修改,以及监听按钮之后的处理
package com.imf.view.util;
import com.imf.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**
* 退出游戏对话框
*/
public class DialogExit extends Dialog {
Context context;
public DialogExit(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
}
public DialogExit(Context context, int theme){
super(context, theme);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//加载layout布局文件
this.setContentView(R.layout.dialog_exit);
TextView info = (TextView) findViewById(R.id.dialog_eixt_message);
info.setText("您确定退出游戏?");
Button btnok = (Button) findViewById(R.id.dialog_eixt_okbutton);
btnok.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
//关闭进程,就是关闭游戏。
android.os.Process.killProcess(android.os.Process.myPid());
}
});
Button btnexit = (Button) findViewById(R.id.dialog_eixt_cancelbutton);
btnexit.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
//如果按的是取消,那么就dismiss();
dismiss();
}
});
}
}在某Activity上面监听按下back键,进行处理
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
//在这里设置style主题文件。
DialogExit dialog = new DialogExit(MainActivity.this,
R.style.DialogExit);
dialog.show();
return true;
}
return super.onKeyDown(keyCode, event);
} 相关推荐
hanliuxinming 2014-05-30
asdjkl 2014-02-13
delmarks 2012-03-05
apowerfulman 2020-03-03
hustlei 2011-03-03
Mexican 2011-08-31
larrywangsun 2011-08-09
TTHHVV 2011-09-28
87384559 2014-11-11
xuewenke 2015-11-04
火星的你 2015-10-25
王磊的程序员之路 2019-06-19
十一郎的IT 2013-10-29
攻城师 2019-06-28
89453862 2016-05-13