Android window弹窗小结_windowisfloating-程序员宅基地

技术标签: BottomSheetDialog  窗体  凹凸背景  动画  弹出框  clipChlidren  

1、简介

本文将介绍的是从底部弹出窗体以供用户进行交互的例子,本文将介绍使用Dialog,View和DialogFragment的方式分别来进行实现。除此之外还将研究介绍BottomSheetDialog实现案例,上部分弹框的效果实现,也是仿制了58同城的弹出喜好的UI显示和交互。弹出框真的是很常见的,在安卓中有广泛的用途,故而有必要对其进行好好的梳理,后面使用起来也能够得心应手。案例比较多,基本你可以说将涵盖工作中的使用场景。咸鱼底部菜单,底部菜单。


2、和前面一样也是先看效果吧 

                

2.1 Dialog形式

注释写的还是很清晰的,如下。

    private void showPurchaseView() {
        // 以特定的风格创建一个dialog
        Dialog dialog = new Dialog(this,R.style.MyDialog);
        // 加载dialog布局view
        View purchase = LayoutInflater.from(this).inflate(R.layout.dialog_purchase, null);
        // 设置外部点击 取消dialog
        dialog.setCancelable(true);
        // 获得窗体对象
        Window window = dialog.getWindow();
        // 设置窗体的对齐方式
        window.setGravity(Gravity.BOTTOM);
        // 设置窗体动画
        window.setWindowAnimations(R.style.AnimBottom);
        // 设置窗体的padding 
        window.getDecorView().setPadding(0, 0, 0, 0);
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        window.setAttributes(lp);
        dialog.setContentView(purchase);
        dialog.show();
    }

下面给出style的设置。 

    <!-- 设置 弹出弹入的动画  由下往上 然后再返回去-->
    <style name="AnimBottom" parent="@android:style/Animation">
        <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
        <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
    </style>

    <!--底部弹框 样式-->
    <style name="MyDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:backgroundDimAmount">0.6</item>
    </style>

 R.layout.dialog_purchase.xml

 其实这里还是挺重要的:

1. 得为布局设置白色背景 否则为dialog背景色

2. 这种错落的效果 是使用的 clipChildren = "false" 属性,需要去了解

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:clipChildren="false"
    android:layout_height="wrap_content">
    <!-- 该布局承载着 超出父布局的控件的部分的显示-->
    <View
        android:layout_width="match_parent"
        android:layout_height="40dp"/>
    <LinearLayout
        android:background="#fff"
        android:id="@+id/rl_1"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="128dp">
        <android.support.v7.widget.CardView
            android:id="@+id/cd"
            android:layout_gravity="bottom"
            android:layout_marginLeft="10dp"
            android:foreground="?android:attr/selectableItemBackground"
            android:layout_width="120dp"
            android:layout_height="150dp"
            card_view:cardBackgroundColor="#FFFFFF"
            card_view:cardCornerRadius="4dp"
            card_view:cardElevation="2dp"
            card_view:cardUseCompatPadding="true">
            <ImageView
                android:src="@drawable/shop"
                android:scaleType="fitXY"
                android:layout_width="120dp"
                android:layout_height="match_parent"/>
        </android.support.v7.widget.CardView>
        <LinearLayout
            android:layout_marginTop="30dp"
            android:layout_marginLeft="5dp"
            android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content">
            <TextView
                android:text="¥109"
                android:textColor="#f00"
                android:textSize="22sp"
                android:id="@+id/tv_pay_deserve"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <LinearLayout
                android:layout_marginTop="10dp"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/tv_des"
                    android:textColor="#C000"
                    android:textSize="14sp"
                    android:text="对商品的简要的描述:这件商品好好啊,欢迎来购买"
                    android:lines="2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

            </LinearLayout>

        </LinearLayout>
        <ImageView
            android:id="@+id/iv_back"
            android:padding="10dp"
            android:layout_alignParentRight="true"
            android:src="@mipmap/buy_delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <View
        android:background="#fff"
        android:layout_width="match_parent"
        android:layout_height="100dp"/>
    <LinearLayout
        android:background="#fff"
        andr
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/crazyZhangxl/article/details/81195593

智能推荐

高泽龙:下一个独角兽来自长租公寓,行业创新极大地释放租赁红利_租赁前服务平台、租赁后服务平台、社区资产管理平台-程序员宅基地

文章浏览阅读1.2k次。超过万亿的巨大市场前景,九部委联合印发住房租赁新政,提出将采取多种措施加快推进租赁住房建设,培育和发展住房租赁市场,长租公寓尤其让众多资本机构觊觎,正在用惊人的扩张速度勾勒出一幅蓝图盛景。对于被称为“下一个风口”的公寓行业,各方有不同的解读,有的认为是互联网模式催生了房地产行业的变革,也有人认为这是个传统生意的升级变革,很难用互联网来改造和创新。无论如何,租赁公寓正在成为整个房地产行业、金融创投领_租赁前服务平台、租赁后服务平台、社区资产管理平台

常用的jdbc各种数据库的链接-程序员宅基地

文章浏览阅读494次。1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test";_常用的jdbc

linux多线程编程面试,Spring Boot 2(14)-程序员宅基地

文章浏览阅读999次,点赞16次,收藏14次。2.5.4pom2.4.10pom需要注意的是,2.4.x 版本开始版本号不带.RELEASE后缀了!如图所示,这次发版,Spring Boot 主页都不再显示 2.2.x 版本线了。| 版本 | 发布时间 | 停止维护时间 || 2.7.0 | 2022/05(暂定) | - || 2.6.0 | 2021/12/18(暂定) | - || 2019/10 | 2021/07(已停止维护) || 2018/10 | 2020/12(已停止维护) |

git remote prune-程序员宅基地

文章浏览阅读949次。git remote prune的使用_remote prune

Generalizable-BEV-程序员宅基地

文章浏览阅读331次,点赞10次,收藏8次。此外,测试了其他BEV检测方法,在没有特殊设计的情况下,它们的泛化性能非常差。这篇论文尝试利用Nerf的思路来提高BEV的泛化能力,同时可以利用有标签的源域数据和无标签的目标域数据。通过结合来自不同视点的信息,多摄像头3D目标检测可以提供更准确和鲁棒的目标检测结果,特别是在某些视点的目标可能被遮挡或部分可见的情况下。然后通过相机的内外参数就可以在这个Volume采样成为一个2D的特征图,然后这个2D特征图和相机内外参数送到一个RenderNet里面来预测对应视角的heatmap和物体的属性。whaosoft

js map()方法 详解与使用_new map()条件渲染按钮 js-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏9次。javascript也有map和set数据类型。 与javaHashMap()类似Js map()方法 set()存值. get();取值1.industryMap.set(“key”,”value”);添加值,2.industryMap.get(“value”);//获取值var industryMap = new Map();//新建 一个mapVar ind..._new map()条件渲染按钮 js

随便推点

如何利用空号检测 API 降低企业的业务成本_判断电话号码是否为空 api-程序员宅基地

文章浏览阅读364次。空号检测 API 是一种基于云计算的人工智能技术,它可以通过大数据算法、机器学习等技术对电话号码进行分析和处理,识别出有效和无效号码。_判断电话号码是否为空 api

《大话数据结构》前言-程序员宅基地

文章浏览阅读149次。前 言本书起因 大家好!我是《大话设计模式》(2008年初出版)的作者,三年来,承蒙广大读者的厚爱,《大话设计模式》取得了较大的成功。仅在当当网,截止本文写作时,就已经有1073次评论,705次5星评价,位居五星图书榜计算机/网络类的累计总榜第二名。此书已经成为国内原创计算机类图书最畅销的书籍之一。 对于这样一个自己喜欢做、可以做得好,而且已经得到了市场广泛认可,为..._复旦大学程晟涵

Intel- 64 与 IA-32架构软件开发人员手册 中文版_intel-64与ia-32架构软件开发人员手册中文版-程序员宅基地

文章浏览阅读5.7k次。1.2卷一总览:基本架构以下是本手册内容的描述:第一章——关于本手册.提供一个Intel- 64 与 IA-32架构软件开发人员手册五卷的概述,也描述了在该手册中使用的符号及其含义,列出了相关的因特尔手册和程序员文档以及硬件设计文档。第二章——Intel 64和IA-32架构.介绍了Intel- 64 与 IA-32架构以及基于这些架构的处理器家族,也给出了一个关于这些处理器共同特_intel-64与ia-32架构软件开发人员手册中文版

ESP8266工程Makefile分析_pdir := ../$(pdir)-程序员宅基地

文章浏览阅读3k次,点赞5次,收藏9次。最近重新温习了一下《跟我一起学Makefile》的文档,刚好又做了ESP8266的开发,正所谓学而不思则罔,时而不学者殆,所以就来总结下ESP8266里面工程是怎么编译的,Makefile是怎么玩的。当然我也没全部搞懂,好多知识也是别人这样说的我也就这么说了。有什么不对的地方望大家指出,交流学习学习,我菜鸟一枚哈首先说一下我的工程目录结构:Project |--bin |--upgra..._pdir := ../$(pdir)

音频知识点(3)- Speex 简介_speex音频-程序员宅基地

文章浏览阅读1.8k次。Speex:一个针对音频的免费编解码器概要Speex是一个开源/自由软件专利免费的音频编码格式。Speex开源项目是通过专有的音频编解码器降低进入音频处理的门槛。另外,Speex能够很好地适应互联网应用,这是目前大多数编解码器所不具备的。最后,Speex是GNU项目的一部分,具有BSD许可。技术Speex是基于CELP设计且压缩声音的比特率范围从2到44 kbps。_speex音频

Swift之NSOperation及其和GCD的区别_swiftui nsoperationqueue gcd-程序员宅基地

文章浏览阅读1k次。NSOperation GCD swift_swiftui nsoperationqueue gcd

推荐文章

热门文章

相关标签