android - 如果在自定义软键盘上快速键入,LinearLayout 会导致延迟

标签 android performance keyboard lag keyboard-layout

我一直在尝试解决我正在处理的 SoftKeyboard 项目的一个神秘问题。我所做的所有研究的问题根源可能与我创建的布局文件有关。 Lint 提示超过 80 的 View 太多,而且它的类型对我的速度来说很好,但我事后对此做出了行动响应,无法弄清楚滞后的根源在哪里。

我已经完成了我能找到的所有 Android Manifest 技巧和 XML 技巧,尝试转换为新的约束布局相对布局使情况变得更糟。我不知道如何在 Android Studio 2.2RC Build 中使用 Trace View,所以不确定线程​​是否是问题所在。但是我的问题是如何使这个文件更有效地改善滞后。

此外,有时当我按下一个键时它会触发,而其他键则会错过,但是如果我随机在键盘 Canvas 区域上超快速地切换所有手指,例如超快速地敲击我的手指,输入似乎跟上我的输入事件,但输出轨迹落后很慢,比如落后 4-6 秒,这很烦人。对于 Play 上的所有键盘,我发现它们都没有这个问题,因为我可以输入超快,当我停止输入时,输出同时停止。

所以我看到有很多人知道如何构建一个性能出色的键盘,但是这个键盘在尝试快速打字时非常慢。此外,如果我输入大量数据,比如 SMS 消息,它会使键盘崩溃,而另一部分真的让我很烦,就像这段代码有缓冲区限制一样。

这里的限制是 30000 我只能粘贴部分布局文件,由于我没有足够的声誉,我无法回复..

这里的任何键盘大师都可以告诉我我缺少什么吗?

            

<?xml version="1.0" encoding="utf-8"?>
<!--suppress ALL -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:clickable="false"
    android:focusableInTouchMode="false"
    android:gravity="bottom">

    <LinearLayout
        android:id="@+id/num_keyLay"
        android:layout_width="match_parent"
        android:layout_height="54.2dp"
        android:orientation="horizontal"
        android:weightSum="10"
        android:baselineAligned="false">

        <LinearLayout
            android:id="@+id/ksOne_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksOne_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:background="@drawable/key_drwable_selector"
                android:text="1"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/kstwo_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/kstwo_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="2"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksthree_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksthree_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="3"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksFour_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksFour_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="4"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksFive_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksFive_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="5"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksSix_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksSix_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="6"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksSeven_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksSeven_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="7"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksEight_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksEight_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="8"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksNine_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksNine_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="9"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ksZero_btn_LiLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ksZero_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="0"
                android:textSize="25sp"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:ignore="ContentDescription" />

        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/line_firstLay"
        android:layout_width="match_parent"
        android:layout_height="54.2dp"
        android:orientation="horizontal"
        android:weightSum="10"
        tools:ignore="DisableBaselineAlignment">

        <LinearLayout
            android:id="@+id/q_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/q_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="q"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/Q_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="Q"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/w_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/w_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="w"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/W_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="W"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/e_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/e_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="e"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/E_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="E"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/r_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/r_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="r"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/R_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="R"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/t_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/t_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="t"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/T_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="T"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/y_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/y_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="y"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/Y_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="Y"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/u_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/u_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="u"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/U_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="U"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/i_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/i_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="i"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                tools:ignore="ContentDescription" />

            <Button
                android:id="@+id/I_btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/key_drwable_selector"
                android:text="I"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:textStyle="bold"
                android:textAllCaps="false"
                android:visibility="gone"
                tools:ignore="ContentDescription" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/o_btn_ReLay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/backgroud_black"
            android:orientation="horizontal" >

最佳答案

我有类似的问题,事实证明,当你快速打字时,你的触摸屏上会有两个指针,你必须处理这个问题,当你使用 onClickListener s 出现问题是因为单击仅在 MotionEvent.ACTION_UP 时才被注册。发生,因此如果您按一个键,然后按另一个键而不按第一个键,则会产生问题,请尝试使用 onTouchListener而是覆盖 MotionEvent.ACTION_DOWN并实现committext那里。

关于android - 如果在自定义软键盘上快速键入,LinearLayout 会导致延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39313576/

相关文章:

android - 为什么在此代码中使用this @ MainActivity?

java - 在 <Android M 版本中获取 CheckBox 默认 Drawable

java - 在RestClient中,RxJava与Android中的Observable配合不佳

javascript - 我可以通过在对象中定位属性来提高查找速度吗?

Android KeyCode大写字母?

java - 如何获取电子邮件 ID、显示名称和电话号码

c++ - 具有多次调用的可替换方法的类

java - 使用 JXLS 限制内存中的行数

c# - 编程多个自定义剪贴板,使用 Windows 剪贴板 - 很少有并发症

iPhone/iPad 键盘调光