沉浸式狀態欄確切的說應該叫做透明狀態欄。一般情況下,狀態欄的底色都為黑色,而沉浸式狀態欄則是把狀態欄設置為透明或者半透明。
沉浸式狀態欄是從android Kitkat(Android 4.4)開始出現的,它可以被設置成與APP頂部相同的顏色,這就使得切換APP時,整個界面就好似切換到了與APP相同的風格樣式一樣。在內容展示上會顯得更加美觀。
功能:本博客主要說的是,效果如圖:
測試時,低版本高版本都是可行的。
代碼:
父類Activity
/** * Created by zq on 16/12/16. * * 此類便於其他Activity一同實現狀態欄,只要集成此類就OK了 * */ public abstract class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setMainLayout(); setStatusBar(); } /** * 初始化布局 */ protected abstract void setMainLayout(); /*** *狀態欄 (自己選顏色即可) */ protected void setStatusBar() { StatusBarUtil.setColor(this, getResources().getColor(R.color.colorAccent)); } }
MainActivity.java
public class MainActivity extends BaseActivity { @Override protected void setMainLayout() { setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,BackImaActivity.class)); } }); } }
圖片背景狀態欄
/** * Created by zq on 16/12/16. * */ public class BackImaActivity extends BaseActivity { @Override protected void setMainLayout() { setContentView(R.layout.back_activity); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { StatusBarUtil.setTranslucent(BackImaActivity.this,111); } }); } /**** * 重寫父類方法,覆蓋的作用,可以實現狀態欄的不同顏色或背景 */ protected void setStatusBar() { /** * 參數 * 第一個:當前上下文 * 第二個:狀態欄透明程度,值越大就越暗 0表示完全安背景顯示 之范圍(0-->255) */ StatusBarUtil.setTranslucent(this,0); } }
style.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> </style>
不需要其他配置,只需要在style.xml文件中添加這兩行代碼即可:
<item name="windowNoTitle">true</item> <item name="windowActionBar">false</item>
源碼點擊下載