Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a3d3ae1 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Fast key preview

Previously the key preview was implemented by PopupWindow.  The key
preview popup window would be dismissed and shown each time the key
was released and pressed.  It turned out that it was taking several
milliseconds.

This change implements the key preview by a simple TextView which will
be layout-ed at absolute coordinates within the screen FrameLayout.
And dismissing and showing the key preview is implemented by the
TextView's visibility.

This implementation needs careful coordination of candidates.xml
layout and LatinIME.onComputeInsets to control suggestion strip
visibility.

Bug: 4179964
Change-Id: Id6347cb35b91eb14ab20dd2f312e58b54b6625a7
parent 47d2ef69
Loading
Loading
Loading
Loading
+0 −29
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2010, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator"
>
    <alpha
        android:fromAlpha="0.5"
        android:toAlpha="1.0"
        android:duration="@integer/config_preview_fadein_anim_time" />
</set>
+0 −29
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2010, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
>
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="@integer/config_preview_fadeout_anim_time" />
</set>
+1 −1
Original line number Diff line number Diff line
@@ -25,5 +25,5 @@
    <alpha
        android:fromAlpha="0.5"
        android:toAlpha="1.0"
        android:duration="@integer/config_preview_fadein_anim_time" />
        android:duration="@integer/config_mini_keyboard_fadein_anim_time" />
</set>
+1 −1
Original line number Diff line number Diff line
@@ -25,5 +25,5 @@
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="@integer/config_preview_fadeout_anim_time" />
        android:duration="@integer/config_mini_keyboard_fadeout_anim_time" />
</set>
+24 −16
Original line number Diff line number Diff line
@@ -21,25 +21,33 @@
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:gravity="bottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="@dimen/candidate_strip_minimum_height"
>
    <!-- On tablets, the candidate strip is centered with horizontal paddings on both sides because
         width of the landscape mode is too long for the candidate strip. This LinearLayout is
         required to hold the paddings. -->
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="@dimen/candidate_strip_height"
        android:background="@drawable/keyboard_suggest_strip_holo"
        android:paddingRight="@dimen/candidate_strip_padding"
        android:paddingLeft="@dimen/candidate_strip_padding"
    >
        <HorizontalScrollView
        android:id="@+id/candidates_scroll_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fadingEdge="horizontal"
            android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length"
            android:scrollbars="none"
        >
            <com.android.inputmethod.latin.CandidateView
                android:id="@+id/candidates"
            android:orientation="horizontal"
                android:layout_width="match_parent"
            android:layout_height="@dimen/candidate_strip_height"
            android:background="@drawable/keyboard_suggest_strip_holo" />
                android:layout_height="match_parent" />
        </HorizontalScrollView>
    </LinearLayout>
</LinearLayout>
Loading