万事须己运,他得非我贤。这篇文章主要讲述Android沉浸式状态栏的简单实现相关的知识,希望能为你提供帮助。
【Android沉浸式状态栏的简单实现】随着卡片式设计在android系统的上越来越流行,比如现在早已经烂大街的沉浸式状态栏,几乎所有的主流的APP都支持沉浸式状态栏,如QQ、UC浏览器等等。所以觉得有必要学习一下,找了点资料,总结了一下,未测试低版本的效果,如果有测试的话欢迎反馈一下。只是简单的记录这一步骤,更深层次的代码请访问 http://www.open-open.com/lib/view/open1455584716230.html 这里面的大神写的很详细。
实现效果
文章图片
- 未进行状态栏沉浸效果,状态栏为黑色的
文章图片
+注意观察顶部,不再是黑黑的状态栏了,比原来好看多了
实现原理
- 通过配置标志位来配置状态栏透明
- 创建一个和状态栏大小一致的矩形VIew
- 添加到布局中,并配置
- 创建一个类ImmersiveStatusBar.java 内部包含下面两个静态的方法
- 在Activity中在setContentLayout中,调用本类的setColor即可实现沉浸式状态栏,如
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ImmersiveStatusBar.setColor(this,0x387fb5);
......
}
- setColor()方法
public static void setColor(Activity activity, int color) {
//限制android系统的版本
if (Build.VERSION.SDK_INT >
= Build.VERSION_CODES.KITKAT) {
// 设置状态栏透明
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 生成一个状态栏大小的矩形
View statusView = createStatusView(activity, color);
// 添加 statusView 到布局中
ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
decorView.addView(statusView);
// 设置根布局的参数
ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
rootView.setFitsSystemWindows(true);
rootView.setClipToPadding(true);
}
}
- 其中createStatusView()方法代码如下:
/**
* 生成一个和状态栏大小相同的矩形条
* @param activity 需要设置的activity
* @param color 状态栏颜色值
* @return 状态栏矩形条
*/
private static View createStatusView(Activity activity, int color) {
// 获得状态栏高度
int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusBarHeight = activity.getResources().getDimensionPixelSize(resourceId);
// 绘制一个和状态栏一样高的矩形
View statusView = new View(activity);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,statusBarHeight);
statusView.setLayoutParams(params);
statusView.setBackgroundColor(color);
return statusView;
}
推荐阅读
- Android权限之动态权限
- 如何实现微信扫码直接下载APP
- 关于Android的fragment的使用
- 闲置安卓手机搭建家庭公司局域网云盘及web服务器
- APP-11-视觉技术-通用文字设别
- APP-6-百度地图导航
- SpringBoot学习14(springboot异常处理方式4(使用SimpleMappingExceptionResolver处理异常))
- Android 开发过程中问题解析
- APP-4-百度地图定位