我一直在尝试通过我正在研究的SoftKeyboard项目解决一个神秘的问题。我完成的所有研究中的问题根源可能与我创建的布局文件有关。 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" >
我遇到了类似的问题,事实证明,快速键入时,有时会在触摸屏上有两个指针,您必须解决,当您单击onClickListener
时,问题就出现了,因为仅单击了注册当发生MotionEvent.ACTION_UP
时,因此如果您按下一个键,然后在不松开第一个键的情况下又按下另一个键,则会产生问题,请尝试使用onTouchListener
代替并覆盖MotionEvent.ACTION_DOWN
并在那里实现committext
。
如果是我,我将不使用LinearLayout
布局,因此我将使用画布,那么我将使用ACTION_DOWN
,因此我可以处理它,这将自动解决杀死其他事件的问题
使用画布还可以解决视图过多的问题。
它将导致的唯一问题是处理按钮的位置,并且由于所有按钮的大小都固定,因此很容易解决。
希望这会有所帮助