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