Android沉浸式状态栏实现沉浸式状态栏实现
主要介绍了Android沉浸式状态栏实现,即一体化状态栏实现,感兴趣的小伙伴们可以参考一下
苹果上的UI基本上都是这个效果,然而Android机上的顶部状态栏总是和app的主题颜色不搭。还好如今的api19以上的版本,
我们也能做出这样的效果。
第一步:第一步:
// 需要setContentView之前调用
private void setTranslucentStatus() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 透明状态栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
SystemStatusManager tintManager = new SystemStatusManager(this);
tintManager.setStatusBarTintEnabled(true);
// 设置状态栏的颜色
tintManager.setStatusBarTintResource(R.color.theme_color);
getWindow().getDecorView().setFitsSystemWindows(true);
}
}
第二步:第二步:
为xml 的根布局添加android:fitsSystemWindows=”true” 属性
第三步:第三步:SystemStatusManager
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout.LayoutParams;
import java.lang.reflect.Method;
@SuppressWarnings({ “unchecked”, “rawtypes” })
public class SystemStatusManager
{
static
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
try {
Class c = Class.forName(“android.os.SystemProperties”);