【Android】SystemUI的StatusBar添加自定义按键

家志学
2023-12-01

问题

为StatusBar添加自定义按键,且不作为系统按键事件进行处理
导入u盘进行配置后显示旋转按钮且实现对应按键的效果

布局

status_bar.xml

不在系统原生的SystemUI下,且一般重写的SystemUI都有被overlay

<com.android.systemui.statusbar.policy.KeyButtonView
            android:id="@+id/status_bar_rotate_screen"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_rotate_screen"
            systemui:keyCode="0"
            android:visibility="gone"
        />

对照原有的Home键进行修改
systemui:keyCode:对应系统按键的value值,赋值0,不做系统按键处理

处理

StatusBar.java

    private void rotateScreen(){
        Log.i(TAG,"rotateScreen() enter!!!");
        KeyButtonView mRotateScreen = mStatusBarView.findViewById(R.id.status_bar_rotate_screen);
        mRotateScreen.setVisibility(View.VISIBLE);
        mRotateScreen.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Log.i(TAG,"rotateScreen: onClick!!!");
                //事件处理
            }
        });
    }
 类似资料: