安卓应用-自定义对话框(安卓,用,自定义对话框,移动开发)

时间:2024-05-04 05:16:35 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

现在要说的是自定义对话框。

常用的对话框有好多网友们整理的资料,对话框大全啊神马的。但是除了常用对话框外,有时候要根据自己的需求定义新的对话框,下面就稍微说一下自定义对话框的一种做法。


1、需要一个对话框内容的xml配置文件game_dialog.xml,这个应该不需要过多解释,基本布局而已。

有几个图片按钮,所以在drawable下面放几张图,嫌麻烦的话,也可以用Button替换,看下效果。

需要说明的是,所有控件的id这里我都用的@id,因为id我都写在了res/values/ids.xml里面,如果不这样做的话要用@+id,不过不好管理,虽然我在代码管理这块做的并不是特别好,但是尽量尽我所能让他们看起来干净清晰简洁明了,也会做一些注释,以后回来看或者做改动也会舒心一点。

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_vertical|center_horizontal|center"android:orientation="vertical"><TextViewandroid:id="@id/id_dialog_message"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:textSize="20sp"android:text="输出message"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:orientation="horizontal"><ImageButtonandroid:id="@id/id_dialog_next"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="#00000000"android:src="@drawable/dialog_next"/><ImageButtonandroid:id="@id/id_dialog_replay"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="#00000000"android:src="@drawable/dialog_replay"/><ImageButtonandroid:id="@id/id_dialog_continue"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="#00000000"android:src="@drawable/dialog_continue"/><ImageButtonandroid:id="@id/id_dialog_quit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:background="#00000000"android:src="@drawable/dialog_quit"/></LinearLayout></LinearLayout>


ids.xml如下:

<?xmlversion="1.0"encoding="utf-8"?><resources><itemname="id_dialog_next"type="id"></item><itemname="id_dialog_replay"type="id"></item><itemname="id_dialog_continue"type="id"></item><itemname="id_dialog_quit"type="id"></item><itemname="id_dialog_message"type="id"></item></resources>

2、在res/values下的styles.xml中添加如下内容,定义一个名为GameDialog的style,然后设置一些item,基本看意思就能明白,其中android:windowBackground的值可以使用一张图片,也可以使用一个xml文件做配置,用xml会稍微美观一点,用图片的话,我目前还不太会找图,不知道怎么搭配好看。下面也附上我用的shape.xml的源码。

<stylename="GameDialog"parent="@android:Theme.Dialog"><itemname="android:windowFrame">@null</item><itemname="android:windowNoTitle">true</item><itemname="android:windowBackground">@drawable/shape</item><itemname="android:windowIsFloating">true</item><itemname="android:windowIsTranslucent">true</item><itemname="android:windowContentOverlay">@null</item><itemname="android:backgroundDimEnabled">false</item></style>

shap.xml如下:

<?xmlversion="1.0"encoding="UTF-8"?><shapeandroid:shape="rectangle"xmlns:android="http://schemas.android.com/apk/res/android"><!--<solidandroid:color="#55222222"/>--><solidandroid:color="#e0000000"/><cornersandroid:radius="5dp"/><paddingandroid:left="6dp"android:top="6dp" android:right="6dp" android:bottom="6dp"/></shape>


3、定义一个类继承自Dialog并实现OnClickListener接口,使用setContentview加载视图,用findViewById获取对话框中的View对象实例(不知道这样说对不对啊?),和我们平时使用一样,可以为他们设置监听事件。

需要说一下的是这两句:

this.setCancelable(false);

见名知意,就是屏蔽掉按返回键关闭对话框,有时候会有这种需要,强制要求必须做一个选择。

this.dismiss();

这个是关闭掉对话框的。


以下是GameDialog的源代码:

packagecom.test.leetledialog;importandroid.app.Dialog;importandroid.content.Context;importandroid.view.View;importandroid.widget.ImageButton;importandroid.widget.TextView;/***自定义消息通知对话框*@authorLeetle**/publicclassGameDialogextendsDialogimplements android.view.View.OnClickListener{ privateTextViewgd_message; privateImageButtongd_next; privateImageButtongd_replay; privateImageButtongd_continue; privateImageButtongd_quit; publicGameDialog(Contextcontext,Stringmessage){ super(context,R.style.GameDialog); setContentView(R.layout.game_dialog); gd_message=(TextView)findViewById(R.id.id_dialog_message); gd_next=(ImageButton)findViewById(R.id.id_dialog_next); gd_continue=(ImageButton)findViewById(R.id.id_dialog_continue); gd_replay=(ImageButton)findViewById(R.id.id_dialog_replay); gd_quit=(ImageButton)findViewById(R.id.id_dialog_quit); //设置提示消息 gd_message.setText(message); //设置按钮监听 gd_next.setOnClickListener(this); gd_quit.setOnClickListener(this); gd_continue.setOnClickListener(this); gd_replay.setOnClickListener(this); //设置不能通过返回键取消 this.setCancelable(false); } @Override publicvoidonClick(Viewview){ switch(view.getId()){ caseR.id.id_dialog_next:{ System.out.println("GameDialognext"); this.dismiss(); break; } caseR.id.id_dialog_continue:{ System.out.println("GameDialogcontinue"); this.dismiss(); break; } caseR.id.id_dialog_replay:{ System.out.println("GameDialogreplay"); this.dismiss(); break; } caseR.id.id_dialog_quit:{ System.out.println("GameDialogquit"); this.dismiss(); break; } default:{ } } }}


4、在MainActivity中打开一个窗口

packagecom.test.leetledialog;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//new一个GameDialogGameDialoggameDialog;gameDialog=newGameDialog(MainActivity.this,"看我看我快看我"); gameDialog.show();}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.main,menu);returntrue;}}

欧了,运行结果如下图。话说这个代码不能折叠么?

安卓应用-自定义对话框


安卓应用-自定义对话框结束!


2014.12.30



 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:安卓应用-自定义对话框的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Android中SoundPool放声音下一篇:

13 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18