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

这两天由于一个客户的要求,将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 start
	if(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

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

时间: 2024-09-11 09:33:55

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

Android系统移植与调试之-------&amp;gt;如何修改Android设备添加重启、飞行模式、静音模式等功能(一)

1.首先先来看一下修改前后的效果对比图 修改之后的图片 确认重启界面  具体的修改内容在下一篇中具体介绍. Android系统移植与调试之------->如何修改Android设备添加重启.飞行模式.静音模式等功能(二) ==================================================================================================   作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!   转载请保留原文地址:h

Android系统移植与调试之-------&amp;gt;如何修改Android手机显示的4G信号强度的格子数

           在修改显示的信号强度之前,先了解一下什么是dB,什么是dBm? 1.dB dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时, 按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压比计算,要用20log(甲电压/乙电压).) [例] 甲功率比乙功率大一倍,那么10lg(甲功率/乙功率)=10lg2=3dB.也就是说,甲的功率比乙的功率大3 dB. 反之,如果甲的功率是乙的功率的一半,则甲的功

Android系统移植与调试之-------&amp;gt;如何修改Android启动动画和开机声音

附:本文转载于  http://www.cnblogs.com/jqyp/archive/2012/03/07/2383973.html 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片): 2. Android平台启动初始化,出现"A N D R I O D"文字字样画面: 3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start). 现在我们说的是第三种方式(基于模拟器): an

Android系统移植与调试之-------&amp;gt;如何修改Android手机NFC模块,使黑屏时候能够使用NFC

         我们都知道在不修改源代码的情况下,只能是解锁之后才能使用NFC功能.而在锁屏和黑屏2个状态下是没办法用NFC的,但是最近有个客户要求手机在黑屏状态下能够使用NFC,因此我们需要去修改Android源代码关于NFC模块.        最开始可以通过查看分析源代码,找到到NfcService的相关代码,如下: packages\apps\Nfc\src\com\android\nfc\NfcService.java  找到186行,这句是定义NFC能够使用的屏幕最小状态 // m

Android系统移植与调试之-------&amp;gt;如何修改Android设备存储盘符名称与Android设备的型号

 一.修改Android设备存储盘符名称 (注:TBDG1073为我的项目名称) 1.修改device/other/TBDG1073/system.prop 文件  2.修改ro.media.patition.label属性为OuyangPeng  3.修改完后重新编译  4.将MID通过USB连接到电脑  显示盘符为OuyangPeng 二.修改Android设备的型号   1.进入到~/mx0831-0525/device/other/TBDG1073目录  2.找到TBDG1073.mk文

Android系统移植与调试之-------&amp;gt;如何修改Android自带的apk出现一圈圈类似鸡蛋的花纹

最近被一个问题烦恼到了,就是android4.1系统自带的Email.文件管理器.信息等apk都出现同一个问题,就是现实在平板上的时候会出现一圈圈类似鸡蛋的花纹. 我想了两种方法来解决,第一种方法没有解决,第二种方法解决了问题. 现在我来说说我第一种方法:我尝试去直接修改相关apk的res/drawable目录下的相应图片,因为源码中的图片都不是纯白色的,所以我自己做了图片替换进去.然后重新编译,但是没有其效果. 我的第二种方法起了作用,现在就来看看第二种方法的解决步骤,拿修改Email apk

Android系统移植与调试之-------&amp;gt;如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关

              今天有个用户对[设置]有个特殊的要求,即: 1.开机的时候默认显示[开发者选项]并打开[USB调试]开关    ([Developer options]-->[USB debugging]) 2.开机的时候默认打开[安全]-->[未知来源]的开关    ([Security]--->[Unknown sources])     1.首先解决[设置]界面默认显示[开发者选项]的问题 查看源代码:packages/apps/Settings/src/com/and

Android系统移植与调试之-------&amp;gt;如何修改Android默认字体大小和设置里面字体大小比例

           因为我修改 ro.sf.lcd_density的值,将它从160修改 为120,所以导致整个系统的字体都变得很小.因此需要将整个字体变大,并且在设置-->显示-->字体大小的4个选项的值都必须变大.我想到的思路是将字体的缩放比例调大一些,下面是我的修改步骤. 1.修改默认字体的大小 Step1: 修改frameworks/base/core/java/android/content/res/Configuration.java   文件中的setToDefaults()方

Android系统移植与调试之-------&amp;gt;如何修改Android设备的默认休眠时间

1.找到~/mx0831-0525/frameworks/base/packages/SettingsProvider/res/values/ defaults.xml文件 2.修改默认休眠时间 3.重新编译 4.上述方法编译之后发现没有其效果,原来被device/other/TBDG1073/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件中的值所覆盖了,如果device下面有相应的文件会优先