Android手机状态栏

竹蜻蜓O_0纸飞机 · · 193 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、全屏不保留状态栏(欢迎页):

在style.xml中设置


    <style name="Theme.AppStartLoadTranslucent" parent="AppTheme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowFullscreen">true</item>
    </style>

在Activity中设置:

public class WelcomeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
//全屏展示
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        Timer timer = new Timer();// 实例化Timer类
        timer.schedule(new TimerTask() {
            public void run() {
                Intent intent = new Intent(WelcomeActivity.this,
                        MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 3000);// 五百毫秒
    }

}

去掉欢迎页中白色闪屏的方法:

解决闪屏只需要设置一个透明的Theme,在styles.xml添加如下代码

<style name="WelcomeTheme" parent="AppTheme">
        <item name="android:windowIsTranslucent">true</item>
    </style>

在minifist.xml中设置:


        <activity
            android:name=".view.login.WelcomeActivity"
            android:alwaysRetainTaskState="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/Theme.AppStartLoadTranslucent">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

二、 全屏保留状态栏文字(页面上部有Banner图)

Window window = getWindow();
//默认API 最低19 
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    ViewGroup contentView = window.getDecorView().findViewById(Window.ID_ANDROID_CONTENT);
    contentView.getChildAt(0).setFitsSystemWindows(false);
}

三、 标题栏与状态栏颜色一致

xml中配置:

<style name="status_toolbar_same_color" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/status_toolBar_same_color</item>
    <item name="colorPrimaryDark">@color/status_toolBar_same_color</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

如果在低于21版本手机上 ,设置如下:

Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(R.color.status_toolBar_same_color));
} else {
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    ViewGroup systemContent = findViewById(android.R.id.content);
    View statusBarView = new View(this);
    ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight());
    statusBarView.setBackgroundColor(getResources().getColor(R.color.status_toolBar_same_color));
    systemContent.getChildAt(0).setFitsSystemWindows(true);
    systemContent.addView(statusBarView, 0, lp);
}

四、状态栏文字颜色设置

//设置白底黑字
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().getDecorView()
        .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}

除此国内厂商小米、魅族也开放了修改状态栏字体的方式:

  • 小米 MIUI6

    https://dev.mi.com/doc/p=4769/index.html

  • 魅族 Flyme

    http://open-wiki.flyme.cn/index.php?title=状态栏变色

 

 

本文来自:开源中国博客

感谢作者:竹蜻蜓O_0纸飞机

查看原文:Android手机状态栏

193 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet