Androidで通知欄の透明化を実現する方法
2381 ワード
この特性はandorid 4です.4でサポートされているのは、少なくともapi 19が必要です.つまり、Androidの機が4.4未満であれば、浸透通知欄は効果がありません.使い方をご紹介します.とても簡単です.
最後にレイアウトファイルに追加:android:fitsSystemWindows=「true」
が表示されます.
Android5.0完全透明ステータスバーの効果.具体的なインスタンスコードは以下のとおりです.
上記の効果を実現するコードは以下の通りです.
以上のコードはよく書けませんが、皆さんにもっと提出してください.同時に、本文の共有が皆さんに役に立つことを望んでいます.
/**
* onCreate() , onCreate() , 。
*/
public void initSystemBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.red);
}
}
/**
*
* @param on
*/
@SuppressLint("InlinedApi")
private void setTranslucentStatus(boolean on) {
Window win = this.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);
}
最後にレイアウトファイルに追加:android:fitsSystemWindows=「true」
が表示されます.
Android5.0完全透明ステータスバーの効果.具体的なインスタンスコードは以下のとおりです.
上記の効果を実現するコードは以下の通りです.
public class MainActivity extends Activity {
@SuppressLint("InlinedApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
if(VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
setContentView(R.layout.activity_main);
}
}
以上のコードはよく書けませんが、皆さんにもっと提出してください.同時に、本文の共有が皆さんに役に立つことを望んでいます.