LinearLayout вызывает задержку при быстрой печати на пользовательской SoftKeyboard

Я пытался решить загадочную проблему с проектом SoftKeyboard, над которым я работаю. Источник проблемы во всех исследованиях, которые я провел, может быть связан с файлом макета, который я создал. Линт жалуется на слишком много просмотров за 80, и это нормально для моей скорости, но я реагирую на фактические действия и не могу понять, где источник отставания.

Я выполнил все трюки с манифестом Android и трюки с XML, которые я смог найти, попытавшись преобразовать его в новый относительный макет Constraint Layout, что еще хуже. Я не знаю, как использовать Trace View в 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" >

0 ответов

Если бы это был я, я бы не использовал LinearLayout макет и тому подобное, я бы использовал холст, тогда я бы использовал ACTION_DOWN чтобы я мог справиться с этим, и это автоматически решило бы проблему убийства других событий

использование холста также решит проблему слишком большого количества просмотров.

единственная проблема, которую это вызовет, - это обработка местами кнопок, и это легко решаемо, потому что все кнопки имеют фиксированные размеры.

надеюсь это поможет

У меня была похожая проблема, оказывается, при быстром вводе будут моменты, когда на вашем сенсорном экране будут два указателя, вам придется с этим справиться, когда вы набираете onClickListeners проблема возникает, поскольку щелчок регистрируется только тогда, когда MotionEvent.ACTION_UP происходит, поэтому если вы нажмете одну клавишу, а затем нажмете другую, не отжимая первую, это создаст проблемы, попробуйте использовать onTouchListener вместо этого и отменяя MotionEvent.ACTION_DOWN и реализация committext там.

Другие вопросы по тегам