Android之简单的实现透明状态栏
来源:互联网 发布:鸡啄米 mfc编程入门 编辑:程序博客网 时间:2024/05/01 20:50
今天学习了让界面实现透明状态栏效果,俗称沉侵式状态栏。然后决定写成笔记,记录下学习脚印。以下效果就是要实现的:
可以看到界面的标题栏和状态栏的颜色融为一体了,但还是能看到状态栏的图标,这就是透明状态栏,大家也叫它为“沉侵式状态栏”。
这个简单的界面大体的布局我用的是LinearLayout,通过一个自定义的actionBar和一个简单的TextView来实现界面布局。
一、首先新建actionBar.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="44dp" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textColor="#ffffff" android:text="标题栏" /></RelativeLayout>一个简单的相对布局RelativeLayout包裹着TextView,并且颜色也没有设置。
二、新建actionBar_immersion.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:clipToPadding="true" android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="64dp" android:background="@android:color/holo_red_light" > <include layout="@layout/actionbar" /></RelativeLayout>可以看到我在标题栏的外层再次包裹了一个相对布局RelativeLayout,并且设置了两个重要的属性:
1.android:clipToPadding="true"
2.android:fitsSystemWindows="true"
这个布局包括了标题栏和状态栏,所以高度设置为:标题栏高度+状态栏高度,并且颜色设置为红色
三、新建activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <include layout="@layout/actionbar_immersion" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="内容" android:layout_centerInParent="true"/> </RelativeLayout></LinearLayout>在主布局中通过include把标题栏引入,再通过一个TextView展示内容文字
四、新建MainActivity.java文件:
import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.view.WindowManager;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // 透明导航栏 // getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } } }
可以看到代码实现了,如果SDK版本大于19的时候才执行透明状态栏效果,并且设置透明状态栏:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
这样就完成了透明状态栏的好看的效果。
源码
1 0
- Android之简单的实现透明状态栏
- Android透明状态栏的实现
- android 4.4版本以上透明状态栏的简单实现
- Android studio技术之透明状态栏效果的实现
- Android 透明状态栏实现
- Android实现透明状态栏
- android实现透明状态栏
- Android 透明状态栏实现
- Android:透明状态栏的效果实现
- Android透明状态栏的实现方法
- android 实现透明的沉浸式状态栏
- 透明状态栏的实现
- Android 沉浸式状态栏的实现方法、状态栏透明
- Android 沉浸式状态栏的实现方法、状态栏透明。
- Android 沉浸式状态栏的实现方法、状态栏透明
- Android 沉浸式状态栏的实现方法、状态栏透明
- Android 沉浸式状态栏的实现方法、状态栏透明
- Android 沉浸式状态栏的实现方法、状态栏透明
- Linux中的远程复制,scp命令,可以复制文件夹
- 升级支持ipv4/ipv6后的Socket处理(cocos2dx项目苹果审核支持ipv6处理二)
- 关于不同类的Method Swizzling
- 在web项目启动时,执行某个方法
- 51nod-【1004 n^n的末位数字】
- Android之简单的实现透明状态栏
- 测试oracle数据库的脱机备份和恢复
- java:String使用equals和==比较的区别
- Android打包系列-基础知识
- C# 如何移除PDF文档的数字签名
- 三星手机拍照图片自动旋解决方法
- Windows下Android Studio点击运行,找不到夜神模拟器。
- 【转载】hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等
- Java中伪造referer来获取数据