Android 7.0导航栏上添加图标

Android  7.0的代码和6.0有很大变化,在导航栏上添加图标修改的文件更多些,

我先列出需要修改的文件:

1,frameworks/base/packages/SystemUI/res/layout/mark.xml 

2,frameworks/base/packages/SystemUI/res/drawable-sw600dp/custom_mark.png

3,frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml

4,frameworks/base/SystemUI/res/values-sw600dp/config.xml

5,frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java

6,frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java

下面一个一个把修改的文件代码列出,首先是mark.xml文件,Andoid 7.0的recent,back,home定义按键都是定义xml文件.我也是按照这三个按键的定义标准来.





    
	

2,custom_mark.png就是mark.xml所引用的图片,这个没什么说的,随便找一张图片就行

3,frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml文件

mark;back,home,recent,allapps;space    //在这里添加mark

4,frameworks/base/packages/SystemUI/res/values/config.xml文件

mark;back,home,recent,allapps;space   //同样添加mark 

5,frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java文件

  @Nullable
    protected View inflateButton(String buttonSpec, ViewGroup parent, boolean landscape,
            int indexInParent) {
        LayoutInflater inflater = landscape ? mLandscapeInflater : mLayoutInflater;
        float size = extractSize(buttonSpec);
        String button = extractButton(buttonSpec);
        View v = null;
        if("mark".equals(button)){    //判断当前的keyguarButton,如果是mark的话,inflate它
	        v = parent.findViewById(R.id.markTest);
	        if (null == v) {
                isAddToParent = true;
		    v = inflater.inflate(R.layout.mark, parent, false);
            }
	        changeViewPaddingAndWidth(v,landscape,mIsBookuiMode);
    }

6,frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java文件


    public ButtonDispatcher getMarkButton() {    //定义获取mark的方法
        return mButtonDisatchers.get(R.id.markTest);
    }

    public void setDisabledFlags(int disabledFlags, boolean force) {
        if (!force && mDisabledFlags == disabledFlags) return;

        mDisabledFlags = disabledFlags;

        ......
        
        getMarkButton().setVisibility(View.VISIBLE);    //在这里设置图标可见
        ......
    }

然后可以单独编译一下SystemUI,就可以看到自己的图标出现到导航栏上了~

你可能感兴趣的:(Android)