android自定义Dialog弹框和背景阴影显示效果
程序员文章站
2022-05-27 10:05:45
本文实例为大家分享了android自定义dialog弹框和背景阴影显示的具体代码,供大家参考,具体内容如下
首先需要自定义一个类,继承dialog
im...
本文实例为大家分享了android自定义dialog弹框和背景阴影显示的具体代码,供大家参考,具体内容如下
首先需要自定义一个类,继承dialog
import android.app.dialog; import android.content.context; import android.os.bundle; import android.view.view; import android.view.viewgroup; import android.view.windowmanager; import android.widget.button; import android.widget.textview; import com.zhiziyun.dmptest.bot.r; /** * created by administrator on 2018/1/31. */ public class customdialog extends dialog { private button yes, no;//确定按钮 private textview titletv;//消息标题文本 private textview messagetv;//消息提示文本 private string titlestr;//从外界设置的title文本 private string messagestr;//从外界设置的消息文本 //确定文本和取消文本的显示内容 private string yesstr, nostr; private onnoonclicklistener noonclicklistener;//取消按钮被点击了的监听器 private onyesonclicklistener yesonclicklistener;//确定按钮被点击了的监听器 /** * 设置取消按钮的显示内容和监听 * * @param str * @param onnoonclicklistener */ public void setnoonclicklistener(string str, onnoonclicklistener onnoonclicklistener) { if (str != null) { nostr = str; } this.noonclicklistener = onnoonclicklistener; } /** * 设置确定按钮的显示内容和监听 * * @param str * @param onyesonclicklistener */ public void setyesonclicklistener(string str, onyesonclicklistener onyesonclicklistener) { if (str != null) { yesstr = str; } this.yesonclicklistener = onyesonclicklistener; } public customdialog(context context) { super(context, r.style.dialog_msg); } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.dialog_custom); //按空白处不能取消动画 setcanceledontouchoutside(false); //初始化界面控件 initview(); //初始化界面数据 initdata(); //初始化界面控件的事件 initevent(); } /** * 初始化界面的确定和取消监听器 */ private void initevent() { //设置确定按钮被点击后,向外界提供监听 yes.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if (yesonclicklistener != null) { yesonclicklistener.onyesclick(); } } }); no.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if (noonclicklistener != null) { noonclicklistener.onnoclick(); } } }); } /** * 初始化界面控件的显示数据 */ private void initdata() { //如果用户自定了title和message if (titlestr != null) { titletv.settext(titlestr); } if (messagestr != null) { messagetv.settext(messagestr); } //如果设置按钮的文字 if (yesstr != null) { yes.settext(yesstr); } } /** * 初始化界面控件 */ private void initview() { yes = (button) findviewbyid(r.id.yes); no = (button) findviewbyid(r.id.no); titletv = (textview) findviewbyid(r.id.title); messagetv = (textview) findviewbyid(r.id.message); } /** * 从外界activity为dialog设置标题 * * @param title */ public void settitle(string title) { titlestr = title; } /** * 从外界activity为dialog设置dialog的message * * @param message */ public void setmessage(string message) { messagestr = message; } /** * 设置确定按钮和取消被点击的接口 */ public interface onyesonclicklistener { public void onyesclick(); } public interface onnoonclicklistener { public void onnoclick(); } @override public void show() { super.show(); /** * 设置宽度全屏,要设置在show的后面 */ windowmanager.layoutparams layoutparams = getwindow().getattributes(); layoutparams.width= viewgroup.layoutparams.match_parent; layoutparams.height= viewgroup.layoutparams.match_parent; getwindow().getdecorview().setpadding(0, 0, 0, 0); getwindow().setattributes(layoutparams); } }
这是实体类中的style:
<style name="custom_dialog_style" parent="android:theme.dialog"> <item name="android:windowframe">@null</item> <item name="android:windowisfloating">true</item> <item name="android:windowistranslucent">false</item> <item name="android:windownotitle">true</item><!--除去title--> <item name="android:backgrounddimenabled">true</item><!--半透明--> <item name="android:windowbackground">@color/transparent</item><!--除去背景色--> <item name="android:radius">10dp</item> </style>
其中@color/transparent是一个透明色
<color name="transparent">#00000000</color>
然后是布局
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#a5000000"> <linearlayout android:layout_width="260dp" android:layout_height="wrap_content" android:layout_centerinparent="true" android:background="@drawable/shape_dialog_msg" android:orientation="vertical"> <textview android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="15dp" android:gravity="center" android:text="消息提示" android:textcolor="@color/colorblack" android:textsize="@dimen/title_text_size" /> <textview android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginleft="@dimen/padding_left_right4" android:layout_marginright="@dimen/padding_left_right4" android:text="提示消息" android:textcolor="@color/colorblack" android:textsize="@dimen/textsizi3" /> <view android:layout_width="match_parent" android:layout_height="1px" android:layout_margintop="15dp" android:background="#e4e4e4" /> <linearlayout android:layout_width="match_parent" android:layout_height="@dimen/buttom_height" android:orientation="horizontal"> <button android:id="@+id/no" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:gravity="center" android:singleline="true" android:text="取消" android:textcolor="@color/blue" android:textsize="@dimen/textsizi3" /> <button android:id="@+id/yes" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:gravity="center" android:singleline="true" android:text="确 定" android:textcolor="@color/red" android:textsize="@dimen/textsizi3" /> </linearlayout> </linearlayout> </relativelayout>
下面是shape_dialog_msg的代码
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false"> <shape android:shape="rectangle" > <!-- 填充的颜色 前两位是透明度--> <solid android:color="#f7f6f6"></solid> <!-- 设置按钮的四个角为弧形 --> <!-- android:radius 弧形的半径 --> <corners android:radius="8dip" /> <!-- padding:button里面的文字与button边界的间隔 --> <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" /> </shape> </item> </selector>
准备工作都做好了,下面就是如何使用了
//点击弹出对话框 final customdialog customdialog = new customdialog(getactivity()); customdialog.settitle("消息提示"); customdialog.setmessage("是否暂停广告投放?"); customdialog.setyesonclicklistener("确定", new customdialog.onyesonclicklistener() { @override public void onyesclick() { //这里是确定的逻辑代码,别忘了点击确定后关闭对话框 customdialog.dismiss(); } }); customdialog.setnoonclicklistener("取消", new customdialog.onnoonclicklistener() { @override public void onnoclick() { customdialog.dismiss(); } }); customdialog.show();
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: android中ListView数据刷新时的同步方法
下一篇: 芹菜与韭菜能不能一起吃?