浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项
来源:互联网 发布:linux变量命名 编辑:程序博客网 时间:2024/06/08 11:35
开发中我们会遇到各种各样的布局,特别是漂亮的dialog,当然这些并不一定是规则的,那我们该怎么定义不规则的dialog呢?
先来看看效果图:
图片分离:
没错就是这三张图片。
现在我们来看看怎么实现这个dialog
需要注意的是:
1、必须是dialog这个类,其他子类无法实现,因为alertdialog之类的有默认的背景
2、不规则,其实是规则的,因为有些背景我们设置为了透明
布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:orientation="vertical"> <LinearLayout android:id="@+id/alert_close" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="20dp" android:layout_marginTop="20dp" android:background="@mipmap/dialog" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:gravity="center_horizontal" android:padding="10dp" android:text="@string/alert_update_title" android:textColor="#F00" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center" android:paddingBottom="30dp" android:paddingTop="30dp" android:text="@string/alert_update_content" android:textColor="#000" android:textSize="14sp" /> <Button android:id="@+id/alert_update_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="15dp" android:layout_weight="1" android:background="@null" android:text="@string/alert_update_update" android:textColor="#000" /> </LinearLayout> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_below="@id/alert_close" android:src="@mipmap/dog" /> <Button android:id="@+id/alert_no_update_btn" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentRight="true" android:background="@mipmap/close" /></RelativeLayout>
布局预览:
第二步:我们需要自定义一个dialog的样式:
<style name="update_dialog" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@drawable/transpant_bg</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>自定义透明的背景:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270.0" android:endColor="@android:color/transparent" android:startColor="@android:color/transparent"></gradient></shape>
第三步:实现dialog
private void selectUpdate(final String url) { final Dialog builder = new Dialog(this, R.style.update_dialog); View view = UIUtil.inflateView(R.layout.alert_update_welcome);//加载自己的布局 Button noUpdateBtn = (Button) view.findViewById(R.id.alert_no_update_btn); Button updateBtn = (Button) view.findViewById(R.id.alert_update_btn); noUpdateBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //2、如果选择不更新,则直接判断是否是第一次进入 builder.dismiss(); isFirstIn(); } }); updateBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //1、如果选择更新直接进行下载安装新版本软件 downloadApk(url); //2、判断是否下载成功 boolean downloadSuccess = isDownloadSuccess(); if (isDownloadSuccess()) { installApk(); } else { //下载失败 downloadError(); } } }); builder.setContentView(view);//这里还可以指定布局参数 builder.setCancelable(false);// 不可以用“返回键”取消 builder.show(); }当然你也直接可以继承dialog这个类,具体自定义就不用多说了。
当然还可以指定对话框的透明度,这是针对整个dialog而言的。
Window window = alertDialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.alpha = 0.8f; window.setAttributes(lp);
学会这些你可以制定出各种各样的dialog。
0 0
- 浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项
- android 对话框Dialog背景透明
- android--对话框Dialog背景透明
- android 自定义对话框 背景透明
- android 自定义对话框 背景透明
- C++对话框背景透明处理的问题
- vc设置对话框的背景透明
- MFC基本对话框的背景透明化
- Android自定义对话框,背景颜色透明
- 对话框背景透明
- 设置对话框背景透明
- VC 对话框背景透明
- 子对话框 背景透明
- 透明对话框背景
- 全屏透明背景对话框
- 对话框背景透明
- 自定义Dialog背景透明
- 自定义Dialog 背景透明
- 分享到微信微博空间等第三方平台的JS代码
- linux进程调度、进程切换原理详解
- Java学习之TreeMap
- linux命令之passwd
- CentOS7使用firewalld打开关闭防火墙与端口
- 浅谈自定义不规则背景的对话框,透明背景的对话框dialog定义过程中的注意事项
- 运维说给研发测试的心底话
- 远程SSH连接服务与基本排错
- python爬虫(18)爬取微信公众号内容——绘制词云
- 视图解析
- 仿射变换以及仿射变换矩阵
- 在linux中,rpm和yum有什么区别
- mysql主从配置
- 链表的排序