美文网首页
钉钉新建任务页面文字/语音切换按钮位于软键盘之上的实现思路

钉钉新建任务页面文字/语音切换按钮位于软键盘之上的实现思路

作者: _fanqh | 来源:发表于2019-01-04 13:26 被阅读0次

1、项目中要实现一个发布定时任务的功能,页面效果类似于钉钉新建任务页面,现将基本实现思路及部分核心代码记录于此,先看下钉钉的实现效果,上图:


钉钉-新建任务.gif

此页面主要交互难点就在键盘弹出,文字与语音切换按钮位于软键盘之上。


part1.png part2.png
先说说我的实现思路

1、软键盘弹出/隐藏监听

etText.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            //当键盘弹出或隐藏的时候会 调用此方法。
            @Override
            public void onGlobalLayout() {

                Rect r = new Rect();
                //获取当前界面可视部分
                NewTaskActivity.this.getWindow().getDecorView().getWindowVisibleDisplayFrame(r);

                //获取屏幕的高度
                int screenHeight = NewTaskActivity.this.getWindow().getDecorView().getRootView().getHeight();

                //此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数
                int heightDifference = screenHeight - r.bottom;

                //因为该监听回调特别频繁,加此判断,防止频繁执行重复操作
                if (heightDiff != heightDifference) {
                    heightDiff = heightDifference;

                    //此处可判断软键盘是否弹出,navigationBarHeight是手机导航栏的高度,
                    //">"后面的值一般大于导航栏高度就可以,不过稍微定义的再大多一点点。
                    isKeyboardShow = heightDifference > navigationBarHeight * 2;

                   //设置part2.png中那块区域的布局参数,其高度为软键盘的高度,
                  //此处要判断屏幕底部导航栏是否显示,显示的话要减去导航栏的高度
                    if (isKeyboardShow) {
                        ViewGroup.LayoutParams layoutParams = part2.getLayoutParams();
                        layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
                        if (isNavigationBarShow) { //导航栏是否显示
                            layoutParams.height = heightDifference - navigationBarHeight;
                        } else {
                            layoutParams.height = heightDifference;
                        }
                        part2.setLayoutParams(layoutParams);
                    }
                  //设置part1.png中那块区域是否显示
                    if (isKeyboardShow) {
                        //显示part1区域
                        part1.setVisibility(View.VISIBLE);
                    } else {
                        //文字模式下,软键盘隐藏,则part1区域隐藏
                        if (!isWordMode) {
                           part1.setVisibility(View.GONE);
                        }
                    }
                }
            }
        });

相关文章

  • 钉钉新建任务页面文字/语音切换按钮位于软键盘之上的实现思路

    1、项目中要实现一个发布定时任务的功能,页面效果类似于钉钉新建任务页面,现将基本实现思路及部分核心代码记录于此,先...

  • 【钉钉】内嵌H5微应用之头部右侧导航设置

    最近在做内嵌钉钉的H5微应用时,发现钉钉的导航栏很霸道,当你设置一个页面的导航栏右侧按钮时,当你切换别的页面也会附...

  • 方法篇——语音转文字

    今天给大家带来的一种语音转文字的方法——钉钉闪记法。就是利用现在办公软件应用钉钉里面一款强大的内置软件来实现语音转...

  • 误会了钉钉考勤打卡

    早期我写了一篇“钉钉的考勤打卡这样真的好吗?”,主要阐述员工进入钉钉界面,默认页是消息页面,需要切换页面,点击标签...

  • python实现钉钉群消息推送

    Python实现钉钉群消息推送 对于某些自动化任务执行结果反馈,使用钉钉机器人消息替换繁琐的邮件发送方式使用钉钉机...

  • EditText与仿钉钉的搜索功能

    需求:   仿钉钉的通讯录搜索,点击搜索框后,跳页面,直接让输入框获取焦点并且弹出软键盘,当用户输入内容后,点击软...

  • PC端 UI自动化绕过登录方式

    1、使用场景 登录场景,同时存在账号密码登录和钉钉扫码登录方式,绕过钉钉扫码登录 2、实现思路 先使用账号密码登录...

  • zabbix教程4-Zabbix实现钉钉报警

    1.新建钉钉机器人 首先要创建钉钉群,然后在智能群助手中添加机器人。 2.新建报警脚本 3.新建媒介类型 动作配置...

  • 做个钉钉小闹钟

    0x00 前言 大致思路如下: 利用钉钉的webhook,结合python代码,实现发消息的功能。 利用windo...

  • 钉钉授权失败

    代码环境:钉钉中嵌套的html页面,页面中调用钉钉的上传图片功能,不能使用提示下面错误 解决方案:原理:改变URL...

网友评论

      本文标题:钉钉新建任务页面文字/语音切换按钮位于软键盘之上的实现思路

      本文链接:https://www.haomeiwen.com/subject/aqbhrqtx.html