Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現通知欄透明的方法

Android實現通知欄透明的方法

編輯:關於Android編程

這個特性是andorid4.4支持的,最少要api19才可以使用,也就是說如果Android的機子是低於4.4,沉浸通知欄是沒有效果的。下面介紹一下使用的方法,非常得簡單。

 /**
   * 設置通知欄 這個方法在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);
  }
}

以上代碼寫的不好,還請各位大俠多多提出,同時希望本文分享對大家有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved