在我们开发android app时会经常会遇到控制设备状态栏两种情况,
第一种情况是状态栏的隐藏,例如在首次 引导或闪屏广告时我们不希望显示,希望引导页和闪屏广告布
满整屏来显示,这里只给出关键代码如:
AndroidManifest.xml
public class SplashActivity extends Activity {
<activity
android:name=".view.activity.SplashActivity"
android:launchMode="standard"
android:screenOrientation="portrait"
android:theme="@style/FullScreen" >
其中FullScreen在styles.xml定义如下:
<style name="FullScreen" parent="AppTheme.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackgroundCacheHint">@android:color/black</item>
<item name="android:windowAnimationStyle">@style/MainActivityAnimation</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
SplashActivity.java
@Override
protected void onResume() {
super.onResume();
isOnBack=true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (preferences.getBoolean("firststart", true)) {
editor = preferences.edit();
//将登录标志位设置为false,下次登录时不在显示首次登录界面
editor.putBoolean("firststart", false);
editor.commit();
if(isOnBack){
Intent intent = new Intent();
intent.setClass(SplashActivity.this, GuideViewActivity.class);
SplashActivity.this.startActivity(intent);
SplashActivity.this.finish();
}
} else {
if(isOnBack){
Intent intent = new Intent();
intent.setClass(SplashActivity.this, MainActivity.class);
SplashActivity.this.startActivity(intent);
SplashActivity.this.finish();
}
}
}
}, SPLASH_DISPLAY_LENGHT);
}
第二种情况是状态栏的显示并控制颜色,只要我们在统一的BaseActivity填加以下代码即可:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//状态栏颜色修改
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.all_title_bgcolor);//通知栏所需颜色
}
}
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}