[置顶] 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/
===================================================================================================
[置顶] Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏的时候的切换与显示的更多相关文章
- Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
这两天由于一个客户的要求,将MID竖屏时候的状态条上的音量键去掉.所以尝试修改了一下,成功了,分享一下经验. 先看一下修改后的效果图,如下所示 . 横屏的时候:有音量加减键 竖屏的时候:音量加减键被去 ...
- Android系统移植与调试之------->如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关
今天有个用户对[设置]有个特殊的要求,即: 1.开机的时候默认显示[开发者选项]并打开[USB调试]开关 ([Developer options]-->[USB debugging]) 2 ...
- Android系统移植与调试之------->如何修改Android手机显示的4G信号强度的格子数
在修改显示的信号强度之前,先了解一下什么是dB,什么是dBm? 1.dB dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时, 按 ...
- Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(二)
今天要说的是为Android设备添加重启.飞行模式.静音模式按钮,客户需求中需要添加这项功能,在长按电源键弹出的菜单中没有这些选项,谨以此文记录自己添加这个功能的过程. 首先找到长按电源键弹出的对话框 ...
- Android系统移植与调试之------->如何修改Android手机NFC模块,使黑屏时候能够使用NFC
我们都知道在不修改源代码的情况下,只能是解锁之后才能使用NFC功能.而在锁屏和黑屏2个状态下是没办法用NFC的,但是最近有个客户要求手机在黑屏状态下能够使用NFC,因此我们需要去修改Android源代 ...
- Android系统移植与调试之------->如何修改Android设备存储盘符名称与Android设备的型号
一.修改Android设备存储盘符名称 (注:TBDG1073为我的项目名称) 1.修改device/other/TBDG1073/system.prop 文件 2.修改ro.media.patiti ...
- [置顶] Android系统移植与调试之------->如何修改Android设备添加3G上网功能
1.首先先来看一下修改前后的效果对比图 step1.插上3G设备前 step2.插上3G设备后,获取信号中.... step3.插上3G设备后,获取到信号 step4.使用3G信号浏览网页 2.下面讲 ...
- Android系统移植与调试之------->如何修改Android自带的apk出现一圈圈类似鸡蛋的花纹
最近被一个问题烦恼到了,就是android4.1系统自带的Email.文件管理器.信息等apk都出现同一个问题,就是现实在平板上的时候会出现一圈圈类似鸡蛋的花纹. 我想了两种方法来解决,第一种方法没有 ...
- Android系统移植与调试之------->如何修改Android默认字体大小和设置里面字体大小比例
因为我修改 ro.sf.lcd_density的值,将它从160修改 为120,所以导致整个系统的字体都变得很小.因此需要将整个字体变大,并且在设置-->显示-->字体大小的4个选项的值都 ...
随机推荐
- PHP5的类与对象
类是一个由变量和方法组成的独立程序块或功能模块. 人类: 口,脚,身高,体重,姓名,肤色等 (变量) 说话,行走等(方法) 丁三石,马化树,张夕阳(具体对象) 类的定义和对象的创建
- 【操作系统】linux创建子进程--fork()方法
(1)fork()的定义 fork()函数是Unix中派生新进程的唯一方法,声明如下: #include <unistd.h> pid_t fork(void); 我们需要理解的是,调用一 ...
- Linux下利用fork()创建子进程并使父进程等待子进程结束
int status; pid_t t = fork(); if(t){ waitpid(t, &status, 0); }else{ system("vi temp ...
- vc++深入跟踪MFC程序的执行流程
在MFC程序设计的学习过程中最令人感到难受,甚至于有时会动摇学习者信心的就是一种对于程序的一切细节都没有控制权的感觉.这种感觉来源于学习者不知道一个MFC程序是如何运行起来的(即一个MFC程序的执行流 ...
- 网易云课堂_程序设计入门-C语言_第六章:数组_2鞍点
2 鞍点(5分) 题目内容: 给定一个n*n矩阵A.矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数.一个矩阵A也可能没有鞍点. 你的任务是找出A的鞍点. 输入格 ...
- hdu 5583 Kingdom of Black and White(模拟,技巧)
Problem Description In the Kingdom of Black and White (KBW), there are two kinds of frogs: black fro ...
- 设计模式六大原则——迪米特法则(LoD)
1.背景 在图书馆借书.刚開始的时候,直接跑到对应的楼层去,到里面去转,去找要借的书,在里面溜达半天才干找到:后来知道图书馆有一个电脑查询处.然后直接在电脑上输入想要借的书,电脑就会显示你想要借的书的 ...
- AlertDialog.Builder中的setMultiChoiceItems中的事件处理
因为实习项目中涉及到类似于时钟设置闹钟反复时间的原因须要使用对话框的方式呈现.因为DialogFragment眼下还没实验出嵌套Fragment的方法.所以临时先用AlertDialog.Builde ...
- HTML5实现坦克大战(一)
Tank 字段 x:坦克的中心点的横坐标 y:坦克的中心点的纵坐标 dir:坦克的前进的方向 spped:坦克的速度 color:坦克的颜色,用于区分种类不同的坦克 bullet:坦克的子弹 为a ...
- VMware vSphere Client为虚拟机制定物理网卡(图文并茂)
1.首先,查看我的服务器有几张网卡,如下图共3张,接下来我将为虚拟主机制定一张网卡,以及为当中的两台虚拟的CentOS7各制定一张网卡. 2.打开“硬件”---->“网络”,如图,已经启用一张网 ...