Android 中沉浸式状态栏实现

农村四月闲人少,勤学苦攻把名扬。这篇文章主要讲述Android 中沉浸式状态栏实现相关的知识,希望能为你提供帮助。
android 中沉浸式状态栏实现方式如下
【Android 中沉浸式状态栏实现】 
计算状态栏高度及调用沉浸式状态栏的相关API方法

1 package com.example.status; 2 import android.annotation.TargetApi; 3 import android.app.Activity; 4 import android.content.Context; 5 import android.os.Build; 6 import android.view.View; 7 import android.view.Window; 8 import android.view.WindowManager; 9 public class ImmersedStatusbarUtils { 10 11/** 12* 在{@link Activity#setContentView}之后调用 13* 14* @param activity 15*要实现的沉浸式状态栏的Activity 16* @param titleViewGroup 17*头部控件的ViewGroup,若为null,整个界面将和状态栏重叠 18*/ 19@TargetApi(Build.VERSION_CODES.KITKAT) 20public static void initAfterSetContentView(Activity activity, 21View titleViewGroup) { 22if (activity == null) 23return; 24if (Build.VERSION.SDK_INT > = Build.VERSION_CODES.KITKAT) { 25Window window = activity.getWindow(); 26window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 27} 28if (titleViewGroup == null) 29return; 30// 设置头部控件ViewGroup的PaddingTop,防止界面与状态栏重叠 31int statusBarHeight = getStatusBarHeight(activity); 32titleViewGroup.setPadding(0, statusBarHeight, 0, 0); 33 34} 35 36/** 37* 获取状态栏高度 38* 39* @param context 40* @return 41*/ 42private static int getStatusBarHeight(Context context) { 43int result = 0; 44int resourceId = context.getResources().getIdentifier( 45"status_bar_height", "dimen", "android"); 46if (resourceId > 0) { 47result = context.getResources().getDimensionPixelSize(resourceId); 48} 49return result; 50} 51 }

 
调用实例,使用步骤一编写的相关方法。
 
1 package com.example.status; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.View; 7 import android.view.Window; 8 9 public class MainActivity extends Activity { 10 11@Override 12protected void onCreate(Bundle savedInstanceState) { 13super.onCreate(savedInstanceState); 14requestWindowFeature(Window.FEATURE_NO_TITLE); 15setContentView(R.layout.activity_main); 16View topView = findViewById(R.id.lin); 17ImmersedStatusbarUtils.initAfterSetContentView(this, topView); 18} 19 20@Override 21public boolean onCreateOptionsMenu(Menu menu) { 22// Inflate the menu; this adds items to the action bar if it is present. 23getMenuInflater().inflate(R.menu.main, menu); 24return true; 25} 26 27 }

 
对应的布局文件
 
1 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2xmlns:tools="http://schemas.android.com/tools" 3android:layout_width="match_parent" 4android:layout_height="match_parent" 5android:orientation="vertical" > 6 7< LinearLayout 8android:id="@+id/lin" 9android:layout_width="match_parent" 10android:layout_height="wrap_content" 11android:background="#ff123654" > 12 13< TextView 14android:id="@+id/title" 15android:layout_width="match_parent" 16android:layout_height="45.0dp" 17android:background="#ff123654" 18android:gravity="center" 19android:text="我是头部控件" 20android:textColor="#ffffffff" /> 21< /LinearLayout> 22 23 < /LinearLayout>

 
Android 中沉浸式状态栏实现

文章图片

 

    推荐阅读