图记 2016.1.5 透明状态栏

现在时间是2016年1月5号凌晨1:11,呃,光棍时间~

今天主要磨蹭了一下透明石状态栏,虽然效果实现了,但还是不完美,如图

  

  

虽然实现了状态栏的 透明,但是RaidoButton下面那一大段空白看着特别的别扭,群里问了一溜遍,也没有答案...只好想别的办法来弥补了,我想着下面加一个状态栏,类似于这样

也许会显得好一些

于是重新写布局,在写布局的时候,顺手运行了一下,发现竟然特么的成了

原来实现透明状态栏的代码是从网上找来的,结果其中有一条属性并不适用我这个场景,唉...理解不透彻....

  透明状态栏的实现:

  Mainactivity.java

package cn.lixyz.tuji;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

@SuppressLint("NewApi")
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }
        setContentView(R.layout.activity_main);
    }
}

  该特性是在android4.4之后加入的,如果 Activity 有 actionbar,那么还需要在 Activity 的布局文件的根节点上设置属性

android:clipToPadding="true"

  我们来看一下这个属性的效果:不设置这个属性

<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="cn.lixyz.tuji.MainActivity" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/test"
        android:orientation="vertical" >
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="11" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="22" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="33" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="44" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="55" />
    </LinearLayout>
</LinearLayout>

  效果:

  可以看到,有一部分内容被遮挡了 

  设置android:fitsSystemWindows="true"

<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="cn.lixyz.tuji.MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/test"
        android:fitsSystemWindows="true"
        android:orientation="vertical" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="11" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="22" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="33" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="44" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="55" />
    </LinearLayout>

</LinearLayout>

  运行结果:

时间: 2024-10-09 21:29:00

图记 2016.1.5 透明状态栏的相关文章

Android 透明状态栏&amp;着色状态栏

Android 5.0 及以上实现方式(android在5.0之后引入Material Design 实现方式相对简单) 透明状态栏,背景浸入状态栏 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } 在布局文件中View 默认f

透明状态栏(StatusBar)的全适配

透明状态栏(StatusBar)的全适配 状态栏指定android手机上顶部显示手机状态信息的位置. 透明状态栏是android 自4.4开始新加入的功能,他可以是状态栏根据我们自己想要的颜色进行定义,使titleBar能够和状态栏融为一体,增加沉浸感. 实现中遇到的阻碍 因为状态栏是在4.4加入的,所以在4.4以前的系统上无法实现.现在世面上的手机android4.4一下的占比不是很大,所以不是太影响. 网上有很多关于透明状态栏实现的技术博客,以及我之前的博客透明状态栏(沉浸式状态栏)中,实现

Android 透明状态栏

if(VERSION.SDK_INT >= VERSION_CODES.KITKAT) {    //4.4以上                                 //透明状态栏                                 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);                                 //透明导航栏        

【Android】透明状态栏在App中的实现与接口设计

By Sodino 文章目录 1. 认识透明状态栏 2. 透明状态栏Api及特性 3. 设置透明状态栏 4. 处理消失的系统状态栏区域 5. fitsSystemWindows 6. Activity中的接口设计 7. Fragment中的接口设计 8. 白色Titlebar的处理 9. 小米 与 魅族 与 (莫名其妙的)华为 10. 腾讯优测UTest GitHub源码:TransparentStatusbar源码中分两个app TestBasic: 透明状态栏实现的示例,方便debug 白色

Android UI体验之全屏沉浸式透明状态栏效果

前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体验.而Android 5.0之后谷歌又提出了 ColorPalette 的概念,让开发者可以自己设定系统区域的颜色,使整个 App 的颜色风格和系统的颜色风格保持统一.今天学习总结一下如何实现Android 4.4以上全屏沉浸式透明状态栏效果.先看下预期效果: 首先现分清楚哪部分是状态栏,哪部分是导

Android 4.4 沉浸式透明状态栏与导航栏

安卓4.4才有的沉浸式状态栏 在代码设置: if(VERSION.SDK_INT >= VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } 直接调用上面2行代码可以

android 透明状态栏方法及其适配键盘上推(二)

在上一篇文章中介绍了一种设置透明状态栏及其适配键盘上推得方法.但是上一篇介绍的方法中有个缺点,就是不能消除掉statusbar的阴影.很多手机如(三星,Nexus都带有阴影).即使我用了: <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:elevation="

android 透明状态栏方法及其适配键盘上推(一)

android的状态栏(statusBar)版本的差异化比较大.在android 4.4 以上和5.x可以设置状态栏背景颜色,但是不可以设置状态栏中字和图标的颜色.而系统默认的statusbar的字体和图标颜色为白色.如果在6.0以下的要实现透明状态栏(也就是把整个界面延伸到statusbar),就要考虑到如果您的应用背景颜色为白色的时候,会出现statusbar里的内容都看不清楚,这一点暂时是没办法去适配的.但是6.0以上的是既能修改statusbar的背景颜色,也可以修改statusbar的

android4.4以上透明状态栏简单设置

只要在Activity中的onCreate方法中增加如下代码: if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) {   // 透明状态栏   getWindow().addFlags(     WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // 透明导航栏   getWindow().addFlags(     WindowManager.LayoutParams.FLAG_TRANSLUCEN