当前位置: 代码迷 >> Android >> Android判断Navigation Bar 是不是透明
  详细解决方案

Android判断Navigation Bar 是不是透明

热度:26   发布时间:2016-04-28 05:39:11.0
Android判断Navigation Bar 是否透明

设置Navigation Bar 透明

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
或者Theme中添加  <item name="android:windowTranslucentNavigation">true</item>

  /**     * Convenience function to set the flag bits as specified in flags, as     * per [email protected] #setFlags}.     * @param flags The flag bits to be set.     * @see #setFlags     * @see #clearFlags     */    public void addFlags(int flags) {        setFlags(flags, flags);    }


/**     * Set the flags of the window, as per the     * [email protected] WindowManager.LayoutParams WindowManager.LayoutParams}     * flags.     *      * <p>Note that some flags must be set before the window decoration is     * created (by the first call to     * [email protected] #setContentView(View, android.view.ViewGroup.LayoutParams)} or     * [email protected] #getDecorView()}:     * [email protected] WindowManager.LayoutParams#FLAG_LAYOUT_IN_SCREEN} and     * [email protected] WindowManager.LayoutParams#FLAG_LAYOUT_INSET_DECOR}.  These     * will be set for you based on the [email protected] android.R.attr#windowIsFloating}     * attribute.     *     * @param flags The new window flags (see WindowManager.LayoutParams).     * @param mask Which of the window flag bits to modify.     * @see #addFlags     * @see #clearFlags     */    public void setFlags(int flags, int mask) {        final WindowManager.LayoutParams attrs = getAttributes();        attrs.flags = (attrs.flags&~mask) | (flags&mask);        if ((mask&WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY) != 0) {            attrs.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_SET_NEEDS_MENU_KEY;        }        mForcedWindowFlags |= mask;        if (mCallback != null) {            mCallback.onWindowAttributesChanged(attrs);        }    }

其中:
attrs.flags = (attrs.flags&~mask) | (flags&mask);

谁能给解释一下这行代码的意思?以前学的都忘记了

so 

	public boolean existFlag(int flags){	    WindowManager.LayoutParams attrs= getWindow().getAttributes();	    if(attrs.flags ==( (attrs.flags&~flags) | (flags&flags))){	    	return true;	    }	    return false;	}

KitKat上验证通过。


  相关解决方案