In the past two days, due to a customer's requirement, the volume key on the status bar of the MID portrait screen is removed. So I tried to modify it, succeeded, and shared my experience.
Take a look at the modified one, as shown below.
Horizontal screen: there is a volume plus or minus key
Portrait screen: The volume plus or minus key is removed
Then let's talk about my solution.
First I checked the \ mx0831-0525 \ frameworks \ base \ packages \ systemui \ res \ Layout \ system_bar.xml File
<?xml version="1.0" encoding="utf-8"?><!-- * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.--><!-- TabletStatusBarView extends FrameLayout --><com.android.systemui.statusbar.tablet.TabletStatusBarView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui" android:background="@drawable/system_bar_background" > <FrameLayout android:id="@+id/bar_contents_holder" android:layout_width="match_parent" android:layout_height="@*android:dimen/system_bar_height" android:layout_gravity="bottom" > <RelativeLayout android:id="@+id/bar_contents" android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" > <!-- notification icons & panel access --> <include layout="@layout/system_bar_notification_area" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_marginTop="1dp" /> <!-- navigation controls --> <LinearLayout android:id="@+id/navigationArea" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:orientation="horizontal" android:clipChildren="false" android:clipToPadding="false" > <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" android:contentDescription="@string/accessibility_back" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home" android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_home" systemui:keyCode="3" android:contentDescription="@string/accessibility_home" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps" android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_recent" android:contentDescription="@string/accessibility_recent" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/sub" android:background="@drawable/sub_normal" android:layout_width="70dip" android:layout_height="match_parent" android:visibility="invisible" systemui:glowBackground="@drawable/ic_sysbar_highlight" systemui:keyCode="25" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/add" android:background="@drawable/add_normal" android:layout_width="70dip" android:layout_height="match_parent" android:visibility="invisible" systemui:glowBackground="@drawable/ic_sysbar_highlight" systemui:keyCode="24" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/screenshot" android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_screenshot" android:contentDescription="@string/accessibility_screenshot" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" android:layout_width="@dimen/navigation_menu_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_menu" systemui:keyCode="82" android:visibility="invisible" android:contentDescription="@string/accessibility_menu" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> </LinearLayout> <!-- fake space bar zone --> <com.android.systemui.statusbar.policy.EventHole android:id="@+id/fake_space_bar" android:layout_height="match_parent" android:layout_width="0dp" android:paddingLeft="8dip" android:paddingRight="8dip" android:layout_toRightOf="@+id/navigationArea" android:layout_toLeftOf="@+id/notificationArea" android:visibility="gone" /> </RelativeLayout> </FrameLayout> <FrameLayout android:id="@+id/bar_shadow_holder" android:layout_width="match_parent" android:layout_height="@*android:dimen/system_bar_height" android:layout_gravity="bottom" > <!-- lights out shade --> <RelativeLayout android:id="@+id/bar_shadow" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF000000" android:visibility="gone" > <ImageView android:id="@+id/dot0" android:layout_width="80dip" android:layout_height="48dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" /> <ImageView android:id="@+id/dot1" android:layout_width="80dip" android:layout_height="48dip" android:src="@drawable/ic_sysbar_lights_out_dot_large" android:layout_toRightOf="@+id/dot0" android:layout_alignParentBottom="true" /> <ImageView android:id="@+id/dot2" android:layout_width="80dip" android:layout_height="48dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:layout_toRightOf="@+id/dot1" android:layout_alignParentBottom="true" /> <ImageView android:id="@+id/dot3" android:layout_width="80dip" android:layout_height="48dip" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" /> </RelativeLayout> </FrameLayout></com.android.systemui.statusbar.tablet.TabletStatusBarView>
This file sets the Add button (volume plus button) and sub button (volume minus button) attributes. Android: visibility = "invisible" is set to invisible.
However, this will not be able to achieve the disappearance and display effect when switching between landscape and landscape screens.
Then I checked the mx0831-0525 \ frameworks \ base \ packages \ systemui \ SRC \ com \ Android \ systemui \ statusbar \ tablet \ tabletstatusbar. Java File
The onconfigurationchanged (configuration newconfig) method of the file is modified as follows:
@Override protected void onConfigurationChanged(Configuration newConfig) { loadDimens();//edited by ouyangpeng startif(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){mVolumeUpButton.setVisibility(View.VISIBLE);mVolumeDownButton.setVisibility(View.VISIBLE);}else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){mVolumeUpButton.setVisibility(View.GONE);mVolumeDownButton.setVisibility(View.GONE);} //edited by ouyangpeng end mNotificationPanelParams.height = getNotificationPanelHeight(); WindowManagerImpl.getDefault().updateViewLayout(mNotificationPanel, mNotificationPanelParams); mRecentsPanel.updateValuesFromResources(); mShowSearchHoldoff = mContext.getResources().getInteger( R.integer.config_show_search_delay); updateSearchPanel(); }
In this way, you can dynamically set the disappearance and display of the volume key based on the horizontal and vertical screen of Android.
========================================================== ========================================================== ============================
Author: Ouyang Peng: Welcome to repost. sharing with others is the source of progress!
Reprinted Please retain the original address: http://blog.csdn.net/ouyang_peng
========================================================== ========================================================== ============================