精华内容
下载资源
问答
  • 最近技术群里面的妹纸说:在华为手机上开发应用的时候,隐藏底部的虚拟按键Activity会被重启的问题,并且找不到问题所在,于是查查资料,发现问题解决起来蛮简单的。

    引言

    最近技术群里面的妹纸说:在华为手机上开发应用的时候,隐藏底部的虚拟按键Activity会被重启的问题,并且找不到问题所在,于是查查资料,发现问题解决起来蛮简单的。

    问题描述

    一开始觉得应该是代码问题,然后自己撸了一个工程,并在华为的测试机上测了一吧,发现在二级Activity隐藏掉虚拟按键盘的时候,然后按页面上的返回键,发现第一级的Activity的生命周期这样走了

    startActivity(Intent)的声明周期
    onCreate() ---> onStart()  --->onResume();
    startActivityForResult(Intent,requestCode);的声明周期
    onCreate() ---> onStart()  --->onResume() ---> onActivityResult(requestCode, resultCode, Intent);

    这这,不符合预期的结果啊,Activity被重启了….这明显的影响性能啊,页面又重新绘制了一次。如果再有一点耗时操作,那么就被用户感知了,用户:浪费我时间和流量啊….

    思路

    仔细检查了代码,发现不是代码的问题,那么是什么问题了。我们想想,把虚拟按键隐藏后,最直观的东西:Activity的大小改变了吧??
    为了确定这个猜测,我把Activity里面的onConfigurationChanged(Configuration newConfig) 重写了。然后Debug,接着复现一下,然后发现onConfigurationChanged确实被调用了…..
    然后我们想想当横竖屏切换后,如果不在配置文件里面设置 android:configChanges=”” 值,是不是Activity也会重启啊。于是我们就查相关资料,我想configChanges里面应该也有个值是虚拟按键的。

    解决方式

    首先想到虚拟按键,在华为Android手机里面应该属于导航栏,那么应该是这样的

    android:configChanges="navigation"

    然后问题解决了。

    拓展

    英文说明 翻译
    mcc The IMSI mobile country code (MCC) has changed — a SIM has been detected and updated the MCC. IMSI(国际移动用户识别码)发生改变,检测到SIM卡,或者更新MCC
    mnc The IMSI mobile network code (MNC) has changed — a SIM has been detected and updated the MNC. IMSI网络发生改变,检测到SIM卡,或者更新MCC其中mcc和mnc理论上不可能发生变化
    locale The locale has changed — the user has selected a new language that text should be displayed in. 语言发生改变,用户选择了一个新的语言,文字应该重新显示
    touchscreen The touchscreen has changed. (This should never normally happen.) 触摸屏发生改变,这通常是不应该发生的
    keyboard The keyboard type has changed — for example, the user has plugged in an external keyboard. 键盘类型发生改变,例如,用户使用了外部键盘
    keyboardHidden The keyboard accessibility has changed — for example, the user has revealed the hardware keyboard 键盘发生改变,例如,用户使用了硬件键盘
    navigation The navigation type (trackball/dpad) has changed. (This should never normally happen.) 导航发生改变,(这通常不应该发生) 举例:连接蓝牙键盘,连接后确实导致了navigation的类型发生变化。因为连接蓝牙键盘后,我可以使用方向键来navigate了
    screenLayout The screen layout has changed — this might be caused by a different display being activated. 屏幕的布局发生改变,这可能导致激活不同的显示
    fontScale The font scaling factor has changed — the user has selected a new global font size. 全局字体大小缩放发生改变
    orientation The screen orientation has changed — that is, the user has rotated the device. 设备旋转,横向显示和竖向显示模式切换。
    screenSize screenSize 屏幕大小改变了
    smallestScreenSize smallestScreenSize 屏幕的物理大小改变了,如:连接到一个外部的屏幕上
    展开全文
  • 手机虚拟按键处理

    2015-09-25 10:57:58
    手机build.prop adb pull system/build.prop . 修改build.prop 中将里面 qemu.hw.mainkeys注释掉 adb push build.prop system/ adb shell chmod 644 system/build.prop 修改编译环境中 device...
    把手机上的build.prop

    adb pull system/build.prop .
    修改build.prop 中将里面的 qemu.hw.mainkeys注释掉

    adb push build.prop system/

    adb shell chmod 644 system/build.prop

    修改编译环境中
    device/mediatek/common/overlay/navbar/frameworks/base/core/res/res/values/config.xml

    <bool name="config_showNavigationBar">true</bool>修改为<bool name="config_showNavigationBar">false</bool>


    编译frameworks/base/core/res/

    adb push out/target/product/gionee6735_65c_l/system/framework/framework-res.apk system/framework/


    adb reboot
    展开全文
  • Android部分手机会有虚拟按键,而没有实体按键,例如华为系列的手机。 然而在开发过程中,有时候会涉及底部视图开发,最终结果却因为虚拟按键的关系,结果底部视图被虚拟按键给遮盖住了。 在这里,分为两种情况...
  • 1 先在laya引擎设置scaleMode: Laya.stage.scaleMode = Stage.SCALE_EXACTFIT; Laya.stage.screenMode = Stage.SCREEN_HORIZONTAL; //水平居中对齐 Laya.stage.alignH = Stage.ALIGN_CENTER; //垂直居中对齐 ...

    1 先在laya引擎里设置scaleMode:

    Laya.stage.scaleMode = Stage.SCALE_EXACTFIT;
    Laya.stage.screenMode = Stage.SCREEN_HORIZONTAL;
    //水平居中对齐
    Laya.stage.alignH = Stage.ALIGN_CENTER;
    //垂直居中对齐
    Laya.stage.alignV = Stage.ALIGN_MIDDLE;

    2再构建到androidstudio里设置AppTheme NoActionBar

    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
    </resources>
    

    3再打开MainActivity.java,重写方法onWindowFocusChanged

    @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            super.onWindowFocusChanged(hasFocus);
            if (hasFocus && Build.VERSION.SDK_INT >= 19) {
                View decorView = getWindow().getDecorView();
                decorView.setSystemUiVisibility(
                        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_FULLSCREEN
                                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
            }
        }

    4直接generate apk 安卓到手机, 进游戏的时候不管玩家有没有开启虚拟按键,都会强制隐藏显示全屏。

    用cocos2dx 或cocoscreator 打包的也是类似处理

    欢迎加入技术讨论群:199678137,日常潜水,偶尔一起淌技术坑。

    展开全文
  • 2014.07.08隐藏华为手机下面虚拟按键

    千次阅读 2014-07-08 20:20:05
    通过查看手机的绘制效果,才发现给华为的虚拟按键给遮住了。而且这虚拟按键在应用显示的过程中还是透明的。后天再dialog里面加了一句 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_A

    2014.07.08

    今天碰到一个奇葩的问题,底部弹一个时间选择器的dialog。在华为手机上竟然接近底部的地方点不动。通过查看手机的绘制效果,才发现给华为的虚拟按键给遮住了。而且这虚拟按键在应用显示的过程中还是透明的。后天再dialog里面加了一句


    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

    就可以了。

    展开全文
  • 在使用沉浸式状态栏设置界面全屏时发现pad和部分手机(华为和魅族系统自带)屏幕底部会带有虚拟按键,遮挡住界面本身一部分。 为了设置隐藏,在网上找了一些方法,设置Activity主题再在布局加fitsSystemWindows,...
  • 在activity弹Popupwindow被虚拟按键遮挡,开发工具Android Studio 测试手机华为TAG-AL00 5.0系统。 使用Studio在Fragment里边弹Popupwindow同款手机未出现遮挡情况 使用Eclipse在Activity里边弹Popupwindow同款...
  • android 隐藏底部虚拟按键

    千次阅读 2019-07-03 12:43:42
    隐藏底部虚拟按键,但是如果你在底部网上滑动还是显示出来, 我在项目中写在了BaseActivity里面,大致如下 ,我这用在贩卖机上面,手机app开发还真没用过, 下面测试可以使用,已经使用在项目上了。。。。...
  • 华为(HuaWei)虚拟按键的判断和监听标签(空格分隔): 适配最近在项目遇到华为手机的虚拟按键对于布局的挤压导致组件压缩,没办法,华为商务手机贼多,视而不见是不可能的。另外在Google Nexus 6P(华为代工)也...
  • 很多情况下,例如华为手机和谷歌原生系统只有虚拟按键,这时候假如你们做了特殊处理我们可以将布局绘制到navigationBar里面。当然为了避免这种情况,我们应该讲所有绘图到在navigationBar上面。 ...
  • 小Demo 里面有关于自己手机的屏幕分辨率,包含虚拟按键的,方便手机进行屏幕适配
  • UWP 判断windows mobile是使用实体键还是虚拟按键 ...可是有什么办法知道手机是用实体键还是虚拟按键吗? 如下图。可以看到红色部分显示了一点点。代码设置是60px。 ...
  • 最近刚做完公司一个项目,碰到几个小问题,自己在这里做点小笔记  项目中需求是要求沉侵式效果,沉侵式效果我就不多说了网上都有介绍,方法也有多种,但是可能会影响到其他问题。...还有在类似华为手机下面
  • 在Android4.0,多了一些API,其中包括怎样隐藏虚拟按键(导航栏),这样编写游戏或一个视频播放器时,可以设置隐藏虚拟按键的参数,达到最佳效果,当然前提是使用的手机是有虚拟按键的,如下图所示下方方框中。...
  • 在Android4.0,多了一些API,其中包括怎样隐藏虚拟按键(导航栏),这样编写游戏或一个视频播放器时,可以设置隐藏虚拟按键的参数,达到最佳效果,当然前提是使用的手机是有虚拟按键的,例如galaxy nexus(i9250)。...
  • 用于电容屏,FPC按键设计,设计出各种方案IC的按键功能,用于手机设计,平板电脑设计,触摸屏各项设计里面都可以用到
  • 最近公司项目遇到了一个问题,就是最后适配时候时候同事华为手机时,由于底部带有虚拟按键,所以正好遮住了底部导航栏按钮以及其他子页面一些存在于底部功能。 也在网上找了些解决方案,但是不是很...
  • 弹出PopWindow时如果手机虚拟按键可能回出现虚拟按键遮挡住popwindow显示,导致pop显示不全: 解决办法 设置PopWindow显示时Y轴虚拟按键高度位置下面时获取虚拟按键高度方法: /** * Desc: 获取...
  • 最近入手华为Mate,6.1...其实安卓从4.0系统开始都把底部的虚拟按键嵌入到了系统,很多手机是把这个功能屏蔽掉了,华为Mate只不过是把它借调出来优化了下用,屏蔽和开启方法如下:  1、开启底部虚拟按键:用RE浏览

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

手机里的虚拟按键