很简单,在BaseActivity添加代码:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(getLayout());//判断当前SDK版本号,如果是4.4以上,就是支持沉浸式状态栏的if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}TitleBuilder titleBuilder = new TitleBuilder(this);titleBuilder.setTitleText(res.getString(R.string.app_name));}

TitleBuilder.java

public TitleBuilder(final Activity context) {View root = TypefaceUtil.getRootView(context);isLinearLayout = root instanceof LinearLayout;if (isLinearLayout) {LinearLayout rootView = (LinearLayout) root;
//          rootView.setClipToPadding(true);
//          rootView.setFitsSystemWindows(true);
//          rootView.setBackgroundColor(context.getResources().getColor(R.color.subject_bg));view = LayoutInflater.from(context).inflate(R.layout.top_toolbar, null);view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ConstantValue.TitleHeight));rootView.addView(view, 0);}}

getRootView方法:

/*** 从Activity 获取 rootView 根节点* @param context* @return 当前activity布局的根节点*/public static View getRootView(Activity context){return ((ViewGroup)context.findViewById(android.R.id.content)).getChildAt(0);}

top_toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/ll_toolbar"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="@dimen/y30"android:background="@color/subject_bg"android:gravity="center_vertical"android:paddingTop="@dimen/y10"><LinearLayout
        android:id="@+id/rl_toolbar_left"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:orientation="horizontal"android:paddingLeft="@dimen/x10"android:gravity="left|center_vertical"><ImageView
            android:id="@+id/iv_toolbar_left"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/common_back"/><TextView
            android:id="@+id/tv_toolbar_left"android:layout_width="match_parent"android:layout_height="match_parent"android:textColor="#fff"android:textSize="18sp"android:visibility="gone"android:gravity="center_vertical"android:layout_marginLeft="@dimen/x10"/></LinearLayout><RelativeLayout
        android:id="@+id/rl_toolbar_center"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:gravity="center"><TextView
            android:id="@+id/tv_toolbar_center"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:textSize="18sp"android:ellipsize="end"android:singleLine="true"android:textColor="#fff"/></RelativeLayout><RelativeLayout
        android:id="@+id/rl_toolbar_right"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:orientation="horizontal"android:paddingRight="@dimen/x10"><ImageView
            android:id="@+id/iv_toolbar_right"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:visibility="gone"android:src="@mipmap/common_back"/><TextView
            android:id="@+id/tv_toolbar_right"android:layout_width="wrap_content"android:layout_height="match_parent"android:textColor="#fff"android:textSize="18sp"android:gravity="center"android:layout_alignParentRight="true"android:layout_toLeftOf="@+id/iv_toolbar_right"/></RelativeLayout>
</LinearLayout>

这里根view一定要有个android:paddingTop=”@dimen/y10”属性,用来是标题栏看起来不会渗进状态栏里边。

注意到,TitleBuilder注释掉这两句话:

rootView.setClipToPadding(true);
rootView.setFitsSystemWindows(true);

大概意思就是在标题栏上方留出状态栏位置,但是光有这个的话状态栏的颜色是透明的,一定要和设置Activity的rootView背景色搭配使用。但是这样整个页面的背景色都变成主题色了,还得辛辛苦苦的将View的背景设置一番。

rootView.setBackgroundColor(context.getResources().getColor(R.color.subject_bg));

推荐使用paddingTop方式,简单易上手。

DEMO下载

仿IOS沉浸式状态栏实现相关推荐

  1. Android开发笔记(一百六十三)高仿京东的沉浸式状态栏

    前面的文章介绍了如何实现广告轮播的Banner效果,本想可以告一段落.然而某天产品经理心血来潮,拿着苹果手机,要求像iOS那样把广告图顶到状态栏这儿.刚接到这需求,不禁倒吸一口冷气,又要安卓开发去实现 ...

  2. android仿咸鱼底部导航栏,Flutter沉浸式状态栏/AppBar导航栏/仿咸鱼底部凸起导航栏效果...

    如下图:状态栏是指android手机顶部显示手机状态信息的位置. android 自4.4开始新加入透明状态栏功能,状态栏可以自定义颜色背景,使titlebar能够和状态栏融为一体,增加沉浸感. 如上 ...

  3. Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)

    根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...

  4. cordova实现沉浸式状态栏(andriod+ios)

    项目需求 将一个webapp打包成成andriod端和ios端,并且实现沉浸式状态栏 什么是沉浸式状态栏 直接上图 非沉浸式状态栏 沉浸式状态栏 可以看出,非沉浸式状态下,状态栏与app界面是分离的, ...

  5. Android开发类似苹果iOS 7的沉浸式状态栏

    1.什么是沉浸式状态栏? 沉浸式状态栏是指Activity的ActionBar的颜色和状态栏的颜色一样,两者连接起来了,看起来就像是一个整体,跟苹果的ios7以后的样式一样.如下图所示: (沉浸式状态 ...

  6. 仿网易云音乐新版详情页(沉浸式状态栏,上滑隐藏)

    一.效果 二.需求 1.Activity内容扩展到状态栏 2.内容为详情头和列表组成,列表上滑详情头会跟着同步上移,最后详情头缩小为Actionbar大小 3.在列表上滑的时候,详情头背景图形逐渐变暗 ...

  7. 30秒搞定安卓沉浸式状态栏(类似ios)

    行业的悲哀!!!众所周知,设计给图都是用苹果的图给,很多苹果自带的功能,放到安卓上,要耗费几百上千行代码,有木有! 在最近的一个项目中,就碰到了这个问题,产品让做到跟苹果一样的沉浸式状态栏,也就是要求 ...

  8. android状态栏一体化(沉浸式状态栏)

    Android 沉浸式状态栏.状态栏一体化.透明状态栏.仿ios透明状态栏 http://blog.csdn.net/jdsjlzx/article/details/50437779 注:状态栏的字体 ...

  9. android沉浸式状态栏 图片背景,Android App 沉浸式状态栏解决方案

    伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material ...

最新文章

  1. python3安装venv虚拟环境
  2. 多线程下载的原理和基本用法
  3. access vba表字段_vba中如何在access的一张表中得到所有的列名?
  4. Hybris DDIC type and its counterpart model class
  5. 手机modem开发(5)---LTE基本架构
  6. 使用Executor管理Thread对象详解
  7. Python基础——元组与列表
  8. 给兆芯出主意:开发一批新指令,交叉授权
  9. ECharts项目小结~
  10. Windows xp sp3 补丁下载-cuyahoga
  11. 电子计算机的核心部件是哪三个,电子计算机三大核心部件 是什么
  12. 不确定性原理的前世今生(转载)
  13. qq等级计算机在线,I'M QQ - QQ官方网站
  14. poi 移除图片_用poi替换ppt中的文字和图片
  15. C语言——学习笔记(全)
  16. Android学习笔记--菜单
  17. elasticsearch 配置 之 discovery.zen.ping.unicast.hosts
  18. jBPM4的PVM解析
  19. 【小程序】小程序托管平台的功能展望与想法
  20. 改良型新药之详细分类

热门文章

  1. Linux无线网连接解决方案
  2. 35幅非常漂亮的夜景摄影作品欣赏
  3. 小白学渗透——渗透测试基本流程
  4. 438. 找到字符串中所有字母异位词【异位词-哈希数组】
  5. 车载应用--AUXIN 利用 surfaceView 预览 Camera 数据
  6. 计蒜客 - 德克萨斯长角牛(最短路)
  7. 【开源】Easy系列开源与免费流媒体音视频方案汇总(持续更新)
  8. 小程序(之音乐播放器实现思路)
  9. 现货跌期货涨(现货大涨期货就大涨吗)
  10. 如何实现微信抢红包算法?