Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏

来源:互联网 发布:海迅开料软件 编辑:程序博客网 时间:2024/06/06 11:25

这两天由于一个客户的要求,将MID竖屏时候的状态条上的音量键去掉。所以尝试修改了一下,成功了,分享一下经验。

先看一下修改后的效果图,如下所示 。

横屏的时候:有音量加减键

竖屏的时候:音量加减键被去掉了






 然后来说一说我的解决思路。


首先我查看了\mx0831-0525\frameworks\base\packages\SystemUI\res\layout\system_bar.xml文件

<?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>

在该文件中设置了add按钮(即音量加按钮)和sub按钮(即音量减按钮)的属性,android:visibility="invisible"设置为不可见

但是这样不能达到切换横竖屏的时候的消失和显示的效果。

然后我查看了mx0831-0525\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\tablet\TabletStatusBar.java文件

然后修改了该文件的 onConfigurationChanged(Configuration newConfig)方法,修改如下


 @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();    }

这样就可以根据android横竖屏来动态设置音量键的消失和显示了。


==================================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

==================================================================================================