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


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

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

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

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






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


    首先我查看了mx0831-0525frameworksasepackagesSystemUI eslayoutsystem_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-0525frameworksasepackagesSystemUIsrccomandroidsystemuistatusbar abletTabletStatusBar.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/

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


  • 相关阅读:
    交换函数作业
    对本课程的期望及对老师的建议
    前一半元素与后一半元素交换
    使用多线程(newSingleThreadScheduledExecutor)创建一个定时任务
    js判断是否为整数
    kafka入门及使用(不用集成spring)
    Eclipse 必须安装的几个插件
    mybatis 批量插入/批量修改的写法
    maven pom.xml中出现错误failOnMissingWebXml Dynamic Web Module 3.1 requires Java 1.7 or newer,每次update后都会回滚到1.5解决方案
    Eclipse 插件安装及相关问题解决方案(svn、spring、gradle、git)
  • 原文地址:https://www.cnblogs.com/riskyer/p/3249457.html
Copyright © 2020-2023  润新知