精华内容
下载资源
问答
  • 安卓手机虚拟按键

    2016-02-02 22:43:45
    手机虚拟按键是专门为手机按键损坏和没有所准备的,如果安卓手机有了虚拟按键之后,怎么就觉得高大上了。 现在教你给安卓手机添加虚拟按键: 条件:1.安卓手机(已root,系统4.0以上都支持吧,2.3没试过) 2.re...


    手机虚拟按键是专门为手机按键损坏没有所准备的,如果安卓手机有了虚拟按键之后,怎么就觉得高大上了。

    现在教你给安卓手机添加虚拟按键:

    条件1.安卓手机(已root,系统4.0以上都支持吧,2.3没试过)
    2.re管理器(最好是汉化的)
          第一步打开re管理器,进入根目录,进入system文件夹,(挂载为读写状态
     


    图1  

    第二步:找到“build.prop”文档,并用编辑方式打开.

    第三步:在文档中最后一行加入文字代码:qemu.hw.mainkeys=0

    图2
    第四步:保存(如果没有按键无法保存,请下载虚拟按键软件先起到一次退出的作用
    重启就行了(先把锁屏方式改为“无”,防止加入虚拟按键后无法解锁

    量子加加  http://lzppoffice.hostcoz.com
    展开全文
  • 使用ADB命令控制安卓手机虚拟按键、状态栏)显示隐藏,或者直接禁用。
  • 小米手机屏蔽和开启实体按键和虚拟按键 屏蔽实体按键的方法 第一步;同样使用RE文件管理器修改系统状态为读写 第二步:进入system/usr/keylayout目录下 第三步:选择synaptics_dsx.kl(长按synaptics_dsx.kl选择...

    小米手机屏蔽和开启实体按键和虚拟按键

    屏蔽实体按键的方法

    第一步;同样使用RE文件管理器修改系统状态为读写
    第二步:进入system/usr/keylayout目录下
    第三步:选择synaptics_dsx.kl(长按synaptics_dsx.kl选择以文本方式编辑)
    第四步:找到如下信息
    key 139 MENU VIRTUAL
    key 102 HOME VIRTUAL
    key 158 BACK VIRTUAL

    分别在key前添加#(后面有个空格)

    第五步:选择RE文件管理器右上角的保存并退出
    第六步:重启手机

    开启安卓原生虚拟按键

    第一步:首先手机要ROOT,System分区要解锁
    第二步:下载一个RE 文件管理器汉化版(去豌豆夹,RE V4.6.1)
    第三步:系统状态改为可读写(如果System分区未解锁,RE在手机根目录下无法以可读写方式挂载)
    第四步:进去system目录下
    第五步:修改build.prop(长按build.prop文件选择以文本方式编辑)
    第六步:在build.prop文件里找到qemu.hw.mainkeys=1 将 1改为0
    第七步:在RE文件管理器的右上角选择保存并退出。删除RE的bak备份文件
    第八步:重启手机

    展开全文
  • 最近发现很多安卓手机都开始用虚拟按键了,这样一来菜单按键就消失了。虽然现在用到菜单扭的机会很少,但需要的时候找不到它也会很烦恼。 解决方法1. 发现Manifest文件中编译版本号(targetSdkVersion)小于11可以...


    此文仅作为个人笔记,如果被你搜到就当作分享了。


    最近发现很多安卓手机都开始用虚拟按键了,这样一来菜单按键就消失了。虽然现在用到菜单扭的机会很少,但需要的时候找不到它也会很烦恼。


    解决方法1.

    发现Manifest文件中编译版本号(targetSdkVersion)小于11可以让菜单按钮显示出来。


    解决方法2.

    在onCreate()中,super.onCreate();之后添加如下代码:

    try {
        getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
    } catch (IllegalAccessException e) {
    	e.printStackTrace();
    } catch (IllegalArgumentException e) {
    	e.printStackTrace();
    } catch (NoSuchFieldException e) {
    	e.printStackTrace();
    }

    这样菜单按钮就显示到标题栏上了,所以为了保证菜单键在虚拟按键上,此方法只适用于程序不需要标题栏的状况下。

    取消标题栏可以在onCreate();方法中添加如下这句话:

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    注意,这句话一定要在setContentView();前面才会生效,不然会抛异常。

    展开全文
  • 需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占满整个屏幕,当用户启用虚拟键时,应用能往上收缩,等于是被底部虚拟按键顶上来。 需求很简单,实现起来却困难重重,公司抠门,连个带虚拟键的手机也...

    场景1:华为手机遮挡了屏幕底部。

    场景2:进入应用时,虚拟键自动缩回,留下空白区域。

    需求:

    • 需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占满整个屏幕,当用户启用虚拟键时,应用能往上收缩,等于是被底部虚拟按键顶上来。

    • 需求很简单,实现起来却困难重重,公司抠门,连个带虚拟键的手机也不配一部~~。

    完美解决方案:

    解释一下下面的代码,就是监听某个视图的变化,当可以看见的高度发生变化时,就对这个视图重新布局,保证视图不会被遮挡,也不会浪费屏幕空间。这一点尤其可用在像华为手机等可以隐藏和显示虚拟键盘上导致屏幕变化的手机上。

    /**
     * Created by win7 on 2016/9/9.
     */
    public class AndroidBug54971Workaround {
        // For more information, see https://code.google.com/p/android/issues/detail?id=5497
        // To use this class, simply invoke assistActivity() on an Activity that already has its content view set.
    //    private static boolean isKeyBordVisiable;
    
        public static void assistActivity(View content) {
            new AndroidBug54971Workaround(content);
        }
    
        private View mChildOfContent;
        private int usableHeightPrevious;
        private ViewGroup.LayoutParams frameLayoutParams;
    
        private AndroidBug54971Workaround(View content) {
            mChildOfContent = content;
            mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                public void onGlobalLayout() {
                    possiblyResizeChildOfContent();
                }
            });
            frameLayoutParams = mChildOfContent.getLayoutParams();
        }
    
        private void possiblyResizeChildOfContent() {
            int usableHeightNow = computeUsableHeight();
            if (usableHeightNow != usableHeightPrevious) {
                //如果两次高度不一致
    
    
    //            int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
    //            int heightDifference = usableHeightSansKeyboard - usableHeightNow;
    //            if (heightDifference > (usableHeightSansKeyboard / 4)) {
    //                // keyboard probably just became visible
    //                isKeyBordVisiable=true;
    //            } else {
    //                // keyboard probably just became hidden
    //                isKeyBordVisiable=false;
    //            }
                //将计算的可视高度设置成视图的高度
                frameLayoutParams.height = usableHeightNow;
                mChildOfContent.requestLayout();//请求重新布局
                usableHeightPrevious = usableHeightNow;
            }
        }
    
        private int computeUsableHeight() {
            //计算视图可视高度
            Rect r = new Rect();
            mChildOfContent.getWindowVisibleDisplayFrame(r);
            return (r.bottom - r.top);
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    然后在你需要解决这个问题的Activity的onCreate方法的setContentView(R.layout.content_frame);后面添加上

    setContentView(R.layout.content_frame);
     AndroidBug54971Workaround.assistActivity(findViewById(android.R.id.content));
    • 1
    • 2
    • 1
    • 2

    如果你看的懂代码,你肯定知道assistActivity方法里放入的View是你 要调整高度的视图。

    其他不完美方案:或多或少在某些情况上会起不到作用

    我一种方法:

    Android:fitsSystemWindows=”true” 
    这句话写在layout的根目录下,看名字就知道是自适应系统窗口。估计能解决很大一部分手机了,可是在同事的nexus 4下并没有什么用。

    第二种方法:

    我去掉了每个布局的android:fitsSystemWindows=”true” 
    在style文件中添加了这句话。

    <item name="android:windowTranslucentNavigation">false</item>
    • 1
    • 1

    注意: 你会发现系统报错,这是因为这句话是在API-19后才有的,所以你可以复制你的style文件,把它放到API-19的文件夹下。这样的用途就是如果手机大于等于API19,就会用API-19的文件夹下的内容。否则用原来的style文件。你在API19文件夹下的style文件的根主题中添加上面这句话就OK啦。

    本来我以为是完美解决了我的问题。可是被打脸了。刚进入App时会出现上面的场景2的情况。 
    我一看MainActivity中的onCreate方法的setContentView(R.layout.xxxx);之前有下面的代码

            //控制底部虚拟键盘
            getWindow().getDecorView().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 // hide nav bar
    //                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                            | View.SYSTEM_UI_FLAG_IMMERSIVE);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    估计是这个项目以前的仁兄为了解决这个问题添加的。

    经过多次调试,我添加了一句话

         //控制底部虚拟键盘
            getWindow().getDecorView().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 // hide nav bar
    //                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                            | View.SYSTEM_UI_FLAG_IMMERSIVE);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    场景2的情况解决了。这是在虚拟键一直存在的情况下没有问题了,因为nexus不能手动隐藏虚拟键盘,所以我也不清楚是否能在华为等手机上正常运行。TODO。

    另外如果想要一直隐藏虚拟键盘,点击屏幕也不会出现的话,将上面的代码换成:

            //让虚拟键盘一直不显示
            Window window = getWindow();
            WindowManager.LayoutParams params = window.getAttributes();
            params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_IMMERSIVE;
            window.setAttributes(params);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5

    就酱样。虽然不懂原理,还是有收获的,记录下来。

    展开全文
  • 取得安卓手机界面的尺寸,标题栏高度,状态栏高度,虚拟按键存在与否,和虚拟按键高度,取得手机操作系统版本 1 /** 2 * 获取标题栏的高度 3 * 4 * @param activity 5 * @return 6 */ 7 public...
  • react native 安卓(特别是小米手机)全面屏是否开虚拟按键的适配 做rn蛮久了,遇到的坑无数,谢谢大家带我爬过的坑,这次我也来分享一下,希望帮助到有需要的人! 大家先看先后效果对比: 没开虚拟按键的时候完美:...
  • 安卓系统手动添加虚拟按键教程

    千次阅读 2014-12-15 21:08:28
    1、 开启底部虚拟按键:用RE浏览器进入 “\system\“目录,打开编辑“build.prop”并在最后一行添加“ qemu.hw.mainkeys=0 “ 保存,重启手机就有了 2、 屏蔽底部虚拟按键:用RE浏览器进入 “\system\“目录,打开...
  • 业务需要,需对安卓虚拟按键的收放做判断,主要是动态修改手机显示的高度范围root_container = (FrameLayout)findViewById( R.id.root_container); root_container.getViewTreeObserver()....
  • 安卓手机怎么屏蔽实体按键

    千次阅读 2018-01-22 12:59:35
    开启安卓原生虚拟按键 第一步:首先手机要ROOT 第二步:下载一个RE 文件管理器汉化版 第三步:系统状态改为可读写 第四步:进去system目录下 第五步:修改build.prop(长按build.prop文件选择以文本方式编辑) ...
  • 1、 开启底部虚拟按键:用RE浏览器进入 “\system\“目录,打开编辑“build.prop”并在最后一行添加“ qemu.hw.mainkeys=0 “ 保存,重启手机就有了 2、 屏蔽底部虚拟按键:用RE浏览器进入 “\system\“目录,...
  • 华为的一些手机的屏幕上的虚拟按键是可以显示或者隐藏的,因此在布局适配的时候就要考虑到这个问题,要不然当虚拟按键被隐藏后界面的布局就会出现问题,下面给出一种解决方法,(原文来自:安卓适配碰到的一些问题)...
  • 原标题:ROG真游戏手机系统主页面有三大虚拟按键安卓原生系统?为了满足用户玩游戏的需求,游戏手机在今年横空出世了,目前最具代表的就是黑鲨和红魔。相比普通的旗舰机,游戏手机除了配置更加强悍,同时散热方面...
  • 可以监听输入法键盘的打开和关闭动作,通过回调精准判断,兼容几乎所有手机原理:在输入法打开和关闭的时候会引起当前界面的高度变化,从而出发onLayout方法,所以我们监听layout动作,当触发此方法时,判断当前界面可视...
  • 问题说明 1.这不是安卓软件性能的优化,只是把短暂的白屏换成自动启动页的背景图而已。...备注:可以发现当打开app的时候,有一道白光一闪而过,很是让人不舒服啊,而且虚拟按键也挺碍眼的。 ...
  • Android手机屏幕助手,用来替换NavigationBar虚拟导航按键。由于涉及到系统按键消息。 所以需要在源码环境下编译,需要系统签名,需要声明android_sharedUserId=_android.uid.system_ .zip,太多无法一一验证是否可用...
  • 项目场景: 一个商城app的商品详情页,顶部状态栏侵染,顶部图片幻灯片和中间图片...在切换回非全面屏,存在虚拟按键时所有机型表现正常。 原因分析: 具体原因目前仍不能确定,有多种情况会导致出现该问题。 1...
  • 之前提到了,去除虚拟按键,因为手机自带实体按键,Mr.Alright---MTK平台Android Q去除虚拟按键并修改实体菜单键为换起最近任务,后面有个新的问题,设置中的触摸反馈对于实体按键来说不起作用,还是得在\alps\...
  • // 安卓沉浸式 0关闭 1安卓状态栏导航栏都进入沉浸模式 2设置状态栏沉浸 3设置导航栏沉浸function windowFull(pr) {var main = plus.android.runtimeMainActivity();var windowMe = main.getWindow();plus.android....
  • 最近入手华为Mate,6.1...其实安卓从4.0系统开始都把底部的虚拟按键嵌入到了系统里,很多手机是把这个功能屏蔽掉了,华为Mate只不过是把它借调出来优化了下用,屏蔽和开启方法如下:  1、开启底部虚拟按键:用RE浏览
  • 部分安卓手机将物理按键弄成虚拟的物理按键显示在屏幕底部,这样就会挡住我们的app底部导航栏等情况; 我出现这种情况是因为主题里加了 &lt;item name="android:windowTranslucentNavigation"&...
  • “中转站” 的建立前提是要有个 云服务器 或 云虚拟主机, 把做好“中转站” 部署上去 ,按键精灵就能访问。 二、能做到什么程度 重点→ 中转站可以让手机按键做到更多强大的功能,比如 : 批量登录账号搬砖...
  • 安卓手机ROM之 DIY纪实

    2011-11-16 14:31:03
    在人家现成的ROM基础上去掉不满意的,加上自己喜欢的,当然就是DIY了。只是因为本人技术水平有限,...A版本,因为觉得乐蛙ROM的虚拟按键还不错,想把这个功能整合进自定版,找来找去,不晓得是哪一个APK,莫非是SystemU

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

安卓手机虚拟按键