所谓的沉浸式轮播图,指的是轮播图位于状态栏后面,这是最近比较流行的一种设计方式,在电商客户端上面用的比较多。比如下面的京东Android客户端首页:

京东首页

Android 从Android4.4开始支持一种半透明的状态栏,提供了一个属性android:windowTranslucentStatus。只要在value/styles.xml里面按照下面配置,就可以实现:

true

它在让状态栏半透明的同时,也会将布局内容往上拉至状态栏后面。

Activity页面沉浸方案

若是用在Activity页面上有两种方法实现沉浸式轮播图:

准备两个Theme,让需要状态栏沉浸的用上含有android:windowTranslucentStatus属性的theme

在onCreate的setContentView之前动态调用

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

Fragment页面沉浸方案

将Fragment所在的Activity的theme按照上面的方法配置即可,效果如下:

效果图

主页确实做到了沉浸式轮播图,但是其他的Fragment的内容也被往上拉到了状态栏后面。

对于上面出现的问题有两种解决办法:

在切换fragment的时候重新创建Activity,从而调用不同的Theme在首页达到沉浸轮播图的效果,其他的Fragment调用正常的Theme,但是这样频繁销毁、重建Activity会造成额外的性能损耗,而且页面切换也会比较慢,这种方案并不推荐。

在不需要沉浸状态栏的Fragment页面放一个View,View的高度和状态栏的高度一致,这样被拉到状态栏后面的布局就是我们的放置的View,真正的内容就不会被往上拉了。

我们具体说下方案2,主要是解决不需要沉浸状态栏的Fragment页面内容会往上拉的问题,

不需要沉浸状态栏的Fragment 布局如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/bg_gray_dark"

android:orientation="vertical"

>

android:layout_width="match_parent"

android:layout_height="@dimen/statusbar_view_height"

android:background="@color/colorPrimaryDark"

/>

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

values/dimens.xml里的状态栏高度:

25dp

看下效果图:

效果图

如果项目最低适配到 android 4.4那么到这里已经结束了。

但是如果要适配到Android 4.4以下,会因为系统不支持android:windowTranslucentStatus属性,导致整体布局是不会往上拉,这时候我们设置的View,就会把真正的内容挤下去,这样也是不符合要求的,解决办法就是再创建一个文件夹values-v19,

values-v19/dimens.xml里的内容如下:

25dp

原来的values/dimens.xml里的内容改为:

0dp

根据资源文件加载规则,在Android 4.4以下的手机上,会加载values/dimens.xml文件下的尺寸,这时候高度为0,就不会把真正的内容挤下去,在Android 4.4及更高版本的手机上会加载values-v19/dimens.xml文件下的尺寸,这样,真正的内容就不会被往上拉,问题完美解决。

参考:

android在Fragment做轮播图,Android Fragment沉浸式轮播图相关推荐

  1. Android UI进阶之旅9 Material Design之沉浸式设计

    ###沉浸式设计基本概念 官方的沉浸式Translucent定义:就是让整个APP沉浸(充斥了整个屏幕)在屏幕里面,没有显示状态栏,甚至没有显示底部导航栏. 平时大家所讨论的沉浸式:比如QQ的顶部To ...

  2. Android 全屏悬浮窗适配(悬浮窗沉浸式)

    前言 由于Android 高版本的类型限制,如果我们使用WindowsManager 做悬浮窗,会被限制在当前窗口内容中.而当前窗口大小会限制在状态栏和导航栏之间,所以会导致悬浮窗沉浸不了状态栏. 高 ...

  3. Android状态栏微技巧,带你真正理解沉浸式模式

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51763825 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  4. (转)Android状态栏微技巧,带你真正理解沉浸式模式

    版权声明:本文出自郭霖的博客,转载必须注明出处. https://blog.csdn.net/sinyu890807/article/details/51763825 转载请注明出处:http://b ...

  5. 《Android状态栏微技巧,带你真正理解沉浸式模式(转载)》

    最近爱上了郭神的文章,不禁转发一下~~ 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51763825 本文同步发表于我的微信公众号 ...

  6. Android状态栏微技巧,带你真正理解沉浸式模式(转)

    转载自:http://blog.csdn.net/guolin_blog/article/details/51763825 记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算 ...

  7. Android开发之实现QQ空间、美团首页沉浸式状态栏

    前言:QQ空间和美团首页的状态栏是图片充满了状态栏,往上滑动,状态栏会慢慢变成ToolBar的颜色或者是我们自定义组件的背景颜色,今天我们就来实现这一效果! --------------------- ...

  8. android app实现系统导航栏设置图片起到沉浸式效果

    1:在oncreate中,调用以下代码块,注:因为继承了自己封装的BaseActivity,故写在了重写方法provideBindView()中,其实和在oncreate中一样.(代码在最下面,图为展 ...

  9. android studio 显示view树_Android 沉浸式解析和轮子使用

    文 | 黑羽 on 移动电商 前言 我们先一起来回顾一下实现沉浸式状态栏的一般套路.在 Android 上,关于对 StatusBar(状态栏)的操作,一直都在不断改善,并且表现越来越好,在 Andr ...

最新文章

  1. 2022-2028年中国废矿物油行业市场研究及前瞻分析报告
  2. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)
  3. 循环爬取图片_Java爬取简单的网页内容和图片
  4. js中显示一个指定html文档,JS实现选定指定HTML元素对象中指定文本内容功能示例...
  5. admm算法_「优化」交替方向乘子法(ADMM)的基本原理
  6. java sdk 1.7_jdk 1.7升级到1.8后显示还是1.7
  7. mysql1440秒未活动_phpMyAdmin登陆超时1440秒未活动请重新登录
  8. mysql在可视化软件navicat中如何解决中文乱码问题
  9. linux脚本编写思想,Linux脚本编写入门基础(三)
  10. 95-150-544-源码-Sink-Flink BucketingSink 源码分析
  11. php 完整redis类,PHP Redis类
  12. 小区的净水设备,应该很少人用,为什么
  13. 各种杀毒软件序列号注册码大全
  14. GRE阅读高频机经原文及答案之鸟叫研究
  15. 【深度学习】CNN算法
  16. 匹配表情emoji 正则_新版Emoji表情过滤
  17. iOS Block弱引用
  18. Linux bash: redis-server: 未找到命令
  19. java fushubaioshi_java – AI如何为战列舰建立遗传规划模型
  20. 龙族幻想最新东京机器人位置_龙族幻想东京攻略异闻怎么触发_龙族幻想东京攻略异闻详细攻略_求知软件网...

热门文章

  1. 一种简单的压力传感器信号调节电路
  2. C语言数据结构 单链表的建立、遍历、查找、插入和删除操作
  3. 自定义商品分类,选择分类之后,添加商品附属性;仿淘宝后台添加商品附属性的价格和数量
  4. 【pytorch损失函数(4)】nn.MSELoss,(Mean Squared Error,MSE) 均方误差(MSE)(squared L2 norm,平方L2范数)。它也被称为L2 Loss。
  5. android融云自定义通知,Android SDK 体系架构 - 融云 RongCloud
  6. Springboot优雅的参数校验(一)
  7. discern concern fifth sixth
  8. 平衡树之文艺平衡树(维护区间)
  9. 【教程】基于resnet的中草药识别小程序_python_CNN图像识别
  10. 用html语言做坦克大战