仿IOS沉浸式状态栏实现
很简单,在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沉浸式状态栏实现相关推荐
- Android开发笔记(一百六十三)高仿京东的沉浸式状态栏
前面的文章介绍了如何实现广告轮播的Banner效果,本想可以告一段落.然而某天产品经理心血来潮,拿着苹果手机,要求像iOS那样把广告图顶到状态栏这儿.刚接到这需求,不禁倒吸一口冷气,又要安卓开发去实现 ...
- android仿咸鱼底部导航栏,Flutter沉浸式状态栏/AppBar导航栏/仿咸鱼底部凸起导航栏效果...
如下图:状态栏是指android手机顶部显示手机状态信息的位置. android 自4.4开始新加入透明状态栏功能,状态栏可以自定义颜色背景,使titlebar能够和状态栏融为一体,增加沉浸感. 如上 ...
- Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)
根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...
- cordova实现沉浸式状态栏(andriod+ios)
项目需求 将一个webapp打包成成andriod端和ios端,并且实现沉浸式状态栏 什么是沉浸式状态栏 直接上图 非沉浸式状态栏 沉浸式状态栏 可以看出,非沉浸式状态下,状态栏与app界面是分离的, ...
- Android开发类似苹果iOS 7的沉浸式状态栏
1.什么是沉浸式状态栏? 沉浸式状态栏是指Activity的ActionBar的颜色和状态栏的颜色一样,两者连接起来了,看起来就像是一个整体,跟苹果的ios7以后的样式一样.如下图所示: (沉浸式状态 ...
- 仿网易云音乐新版详情页(沉浸式状态栏,上滑隐藏)
一.效果 二.需求 1.Activity内容扩展到状态栏 2.内容为详情头和列表组成,列表上滑详情头会跟着同步上移,最后详情头缩小为Actionbar大小 3.在列表上滑的时候,详情头背景图形逐渐变暗 ...
- 30秒搞定安卓沉浸式状态栏(类似ios)
行业的悲哀!!!众所周知,设计给图都是用苹果的图给,很多苹果自带的功能,放到安卓上,要耗费几百上千行代码,有木有! 在最近的一个项目中,就碰到了这个问题,产品让做到跟苹果一样的沉浸式状态栏,也就是要求 ...
- android状态栏一体化(沉浸式状态栏)
Android 沉浸式状态栏.状态栏一体化.透明状态栏.仿ios透明状态栏 http://blog.csdn.net/jdsjlzx/article/details/50437779 注:状态栏的字体 ...
- android沉浸式状态栏 图片背景,Android App 沉浸式状态栏解决方案
伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material ...
最新文章
- python3安装venv虚拟环境
- 多线程下载的原理和基本用法
- access vba表字段_vba中如何在access的一张表中得到所有的列名?
- Hybris DDIC type and its counterpart model class
- 手机modem开发(5)---LTE基本架构
- 使用Executor管理Thread对象详解
- Python基础——元组与列表
- 给兆芯出主意:开发一批新指令,交叉授权
- ECharts项目小结~
- Windows xp sp3 补丁下载-cuyahoga
- 电子计算机的核心部件是哪三个,电子计算机三大核心部件 是什么
- 不确定性原理的前世今生(转载)
- qq等级计算机在线,I'M QQ - QQ官方网站
- poi 移除图片_用poi替换ppt中的文字和图片
- C语言——学习笔记(全)
- Android学习笔记--菜单
- elasticsearch 配置 之 discovery.zen.ping.unicast.hosts
- jBPM4的PVM解析
- 【小程序】小程序托管平台的功能展望与想法
- 改良型新药之详细分类