Android 系统状态栏统一色实现+侧滑抽屉全屏实现
来源:互联网 发布:系统盘瘦身软件 编辑:程序博客网 时间:2024/06/17 15:22
这里自定义实现,不使用三方控件,4.4系统以上可用。
效果如下:
配置一
project工程模式下,res目录新建 values-v19和values-v21两个文件夹,加上默认的values,一共三个values,每个values下保证有styles.xml文件,这个是系统根据版本自动区分加载资源文件,必有内容如下:
values–>styles.xml:
<!--NoActionBar主题自定义Bar--><style name="MyTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar"/>
values-v19 –> styles.xml:
<style name="MyTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style>
values-v21 –> styles.xml:
<style name="MyTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">false</item> <item name="android:windowTranslucentNavigation">true</item> <!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色--> <item name="android:statusBarColor">@android:color/transparent</item> </style>
配置二:
AndroidManifest.xml配置 全局application的theme为刚配置的theme:
配置三:
这样实现后是扩展内容到状态栏的:设置下背景色证明状态栏的指示存在。。。
配置四:
基本可以了,自定义的titlebar的布局,需要了include一下即可,提示为了避免多次配置可自定义BaseActivity来统一扩展一下哦:
设置完titlebar后他是在最上边的,包括状态栏了,如何把状态栏预留出来,实现开始展示的效果?在BaseActivity里获取系统状态栏高度,然后给titlebar设置下padding或margin即可,注意如果设置titlebar的content属性要考虑下边布局的位置会不会错位,否则就设置根布局。
分支一:
实现效果:
代码:
//获取到系统根布局设置padding和背景色val mContentView = findViewById(Window.ID_ANDROID_CONTENT) as ViewGroup mContentView.setBackgroundColor(ContextCompat.getColor(this,R.color.colorPrimary)) mContentView.setPadding(0,statusBarHeight,0,0)
这种和设置等价于修改APPTheme样式中的colorPramiry的颜色值,但是这个是完全自定义的,未使用titlebar
如果有侧滑栏就有问题了:
分支二:
实现上就不能设置根布局了,因为所有的控件添加都是建立在根布局之上的,如果修改根布局这里顺理成章的就不扩展到设置的padding之上了。这个解决方式也很简单设置baseview的padding即可。
BaseActivity的布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/base_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/colorPrimary" > <include layout="@layout/title_layout" /> <FrameLayout android:id="@+id/main_content_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/color_white" > </FrameLayout></LinearLayout>
include的titlebar:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_title_bar_view" android:layout_width="match_parent" android:layout_height="50dp" android:background="@color/colorPrimary" android:visibility="visible"> <!--title--> <TextView android:id="@+id/tv_main_bar_title" style="@style/Text.Title" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:layout_marginLeft="60dp" android:layout_marginRight="60dp" /> <!--返回按钮--> <Button android:id="@+id/btn_main_bar_back" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@null" android:drawableLeft="@drawable/title_back_arrow" android:gravity="center" android:layout_marginLeft="10dp" android:visibility="invisible" /> <!--搜索--> <Button android:id="@+id/btn_main_bar_search" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:visibility="invisible" /> <!--动态 --> <Button android:id="@+id/btn_main_bar_dynamic" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:visibility="invisible" /> <Button android:id="@+id/btn_main_bar_push" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:text="发布" android:textColor="@color/color_white" android:background="@null" android:textSize="16sp" android:visibility="invisible" /> <Button android:id="@+id/btn_main_bar_detail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:text="明细" android:textColor="@color/color_white" android:visibility="gone" android:background="@null" android:textSize="20sp" /> <TextView android:id="@+id/tv_main_bar_share" style="@style/Text.Title" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:text="分享" android:visibility="gone" /></RelativeLayout>
这里我是吧colorPrimary设置成了我的主题色,布局实现好后代码里这样写:
base_layout.setPadding(0,statusBarHeight,0,0)
里边的statusBarHeight是获取系统状态栏高度的代码:
/** * 获取状态栏高度 */ private val statusBarHeight: Int get() { var result = 0 val resId = resources.getIdentifier("status_bar_height", "dimen", "android") if (resId > 0) { result = resources.getDimensionPixelSize(resId) } return result }
ok这里全部代码就实现完毕了,如有问题,欢迎私聊讨论,里边我的实现是kotlin的代码,java编写的转一下就是了。
- Android 系统状态栏统一色实现+侧滑抽屉全屏实现
- Android侧滑抽屉效果实现
- Android 系统状态栏一体化实现
- Android 系统状态栏一体化实现
- android中去掉标题栏和状态栏,实现全屏
- android中去掉标题栏和状态栏,实现全屏
- android中去掉标题栏和状态栏,实现全屏
- android中去掉标题栏和状态栏,实现全屏
- android中去掉标题栏和状态栏,实现全屏
- android中去掉标题栏和状态栏,实现全屏
- Android Studio中隐藏状态栏、标题栏实现全屏的方式
- Android Studio中隐藏状态栏、标题栏实现全屏的方式
- Android 隐藏状态栏和Actionbar实现全屏显示
- Android双击屏幕动态实现全屏(隐藏标题栏状态栏)
- 实现Android 抽屉效果
- android抽屉实现
- android抽屉实现
- Android抽屉实现
- 数据类型
- 深度卷积网络实例
- ACL权限的查看和设定
- maven依赖冲突
- ButterKnife
- Android 系统状态栏统一色实现+侧滑抽屉全屏实现
- Linux中sudo权限(上)
- maven聚合
- Linux中ACL最大权限与删除
- rabbitmq安装配置与基本操作
- Linux中ACL默认权限与递归权限
- 什么是Web应用程序
- Linux中sudo权限(下)
- ajax上传图片