LinearLayout在自定义软键盘上快速键入会导致滞后

问题描述 投票:5回答:2

我一直在尝试通过我正在研究的S​​oftKeyboard项目解决一个神秘的问题。我完成的所有研究中的问题根源可能与我创建的布局文件有关。 Lint抱怨超过80的视图太多,它对于我的速度来说算是不错的选择,但是我实际上是对此的反应,无法弄清延迟的来源。

我已经完成了我可以找到的所有Android Manifest技巧和XML技巧,尝试转换为新的Constraint Layout Relative Layout会使情况变得更糟。我不知道如何在Android Studio 2.2RC Build中使用跟踪视图,因此不确定是否是线程问题。但是我的问题是如何使该文件更有效地改善延迟。

[有时,当我按下一个键时,它会触发,而其他键则会丢失,但是,如果我在键盘画布区域中超快地随机切换所有手指,如快速地点击我的手指,则输入似乎跟上我的输入事件,但是输出落后很慢,落后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" >
android performance keyboard lag keyboard-layout
2个回答
0
投票

我遇到了类似的问题,事实证明,快速键入时,有时会在触摸屏上有两个指针,您必须解决,当您单击onClickListener时,问题就出现了,因为仅单击了注册当发生MotionEvent.ACTION_UP时,因此如果您按下一个键,然后在不松开第一个键的情况下又按下另一个键,则会产生问题,请尝试使用onTouchListener代替并覆盖MotionEvent.ACTION_DOWN并在那里实现committext


0
投票

如果是我,我将不使用LinearLayout布局,因此我将使用画布,那么我将使用ACTION_DOWN,因此我可以处理它,这将自动解决杀死其他事件的问题

使用画布还可以解决视图过多的问题。

它将导致的唯一问题是处理按钮的位置,并且由于所有按钮的大小都固定,因此很容易解决。

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.