Android还算凑合的沉浸式布局
网上的隐藏底部导航栏
成功的解决了点击不弹出底部导航栏
但是活动跳转的时候 状态栏和底部导航栏仍然会突兀的出现
所以解决思路就是透明+隐藏结合,可以稍微缓解一下
base类中(最下面两个方法)
package com.arcsoft.sdk_demo.lib.base; import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import butterknife.ButterKnife; public abstract class BaseActivity extends AppCompatActivity { protected static final String TAG = "xbh"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(this.getClass().getAnnotation(LayoutId.class).id()); ButterKnife.bind(this); init(); alphaBottom(); } protected abstract void init(); @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface LayoutId { int id() default -1; } public void startActivity(Class clx) { startActivity(new Intent(this, clx)); } protected View getChildAt(View v, int...ints) { for (int i : ints) { v = ((ViewGroup)v).getChildAt(i); } return v; } private Fragment mFragment; protected void addFragment(int frameLayoutId, Fragment fragment) { if (fragment != null) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); if (fragment.isAdded()) { if (mFragment != null) { transaction.hide(mFragment).show(fragment); } else { transaction.show(fragment); } } else { if (mFragment != null) { transaction.hide(mFragment).add(frameLayoutId, fragment); } else { transaction.add(frameLayoutId, fragment); } } mFragment = fragment; transaction.commit(); } } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus && Build.VERSION.SDK_INT >= 19) { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } } private void alphaBottom() { if (Build.VERSION.SDK_INT >= 21) { View decorView = getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; decorView.setSystemUiVisibility(option); getWindow().setNavigationBarColor(Color.TRANSPARENT); getWindow().setStatusBarColor(Color.TRANSPARENT); } } }
效果