From c4d4f71d61fe3edfea22bff955faba3168300eae Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 2 Sep 2022 00:19:07 +0800 Subject: [PATCH] Update Search UI --- .../tv/ui/activity/SearchActivity.java | 26 ++++-- .../tv/ui/adapter/KeyboardAdapter.java | 12 ++- .../android/tv/ui/custom/CustomKeyboard.java | 30 ++++++- app/src/leanback/res/drawable/ic_history.xml | 4 +- .../res/drawable/ic_keyboard_back.xml | 2 +- .../res/drawable/ic_keyboard_left.xml | 2 +- .../res/drawable/ic_keyboard_remote.xml | 10 +++ .../res/drawable/ic_keyboard_right.xml | 2 +- .../res/drawable/ic_keyboard_search.xml | 10 +++ .../res/drawable/ic_keyboard_space.xml | 6 +- app/src/leanback/res/drawable/ic_voice.xml | 2 +- .../leanback/res/layout/activity_search.xml | 89 +++---------------- app/src/leanback/res/layout/adapter_word.xml | 1 - app/src/main/res/drawable/ic_delete.xml | 2 +- app/src/main/res/drawable/ic_filter_off.xml | 4 +- .../main/res/drawable/ic_filter_off_small.xml | 4 +- app/src/main/res/drawable/ic_filter_on.xml | 2 +- .../main/res/drawable/ic_filter_on_small.xml | 2 +- app/src/main/res/drawable/ic_forward.xml | 2 +- app/src/main/res/drawable/ic_pause.xml | 2 +- app/src/main/res/drawable/ic_play.xml | 2 +- app/src/main/res/drawable/ic_rewind.xml | 2 +- app/src/main/res/drawable/ic_search_off.xml | 2 +- app/src/main/res/drawable/ic_search_on.xml | 2 +- 24 files changed, 108 insertions(+), 114 deletions(-) create mode 100644 app/src/leanback/res/drawable/ic_keyboard_remote.xml create mode 100644 app/src/leanback/res/drawable/ic_keyboard_search.xml diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index c7e35d44d..33a0f63ed 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.ui.activity; import android.Manifest; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; @@ -11,6 +12,7 @@ import android.speech.SpeechRecognizer; import android.text.Editable; import android.text.TextUtils; import android.view.View; +import android.view.ViewGroup; import android.view.animation.Animation; import android.view.inputmethod.EditorInfo; @@ -19,6 +21,7 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.leanback.widget.ArrayObjectAdapter; +import androidx.leanback.widget.HorizontalGridView; import androidx.leanback.widget.ItemBridgeAdapter; import androidx.viewbinding.ViewBinding; @@ -40,7 +43,7 @@ import java.util.List; import okhttp3.Call; import okhttp3.Response; -public class SearchActivity extends BaseActivity implements WordPresenter.OnClickListener { +public class SearchActivity extends BaseActivity implements WordPresenter.OnClickListener, CustomKeyboard.Callback { private final ActivityResultLauncher launcherString = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> onVoice()); @@ -69,8 +72,8 @@ public class SearchActivity extends BaseActivity implements WordPresenter.OnClic mHandler = new Handler(Looper.getMainLooper()); mRecognizer = SpeechRecognizer.createSpeechRecognizer(this); mBinding.voice.setVisibility(hasVoice() ? View.VISIBLE : View.GONE); + CustomKeyboard.init(this, mBinding); mBinding.keyword.requestFocus(); - CustomKeyboard.init(mBinding); setRecyclerView(); getHot(); } @@ -78,11 +81,8 @@ public class SearchActivity extends BaseActivity implements WordPresenter.OnClic @Override protected void initEvent() { mBinding.voice.setOnClickListener(view -> onVoice()); - mBinding.search.setOnClickListener(view -> onSearch()); - mBinding.clear.setOnClickListener(view -> mBinding.keyword.setText("")); - mBinding.remote.setOnClickListener(view -> PushActivity.start(this)); mBinding.keyword.setOnEditorActionListener((textView, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) mBinding.search.performClick(); + if (actionId == EditorInfo.IME_ACTION_DONE) onSearch(); return true; }); mBinding.keyword.addTextChangedListener(new CustomListener() { @@ -95,7 +95,6 @@ public class SearchActivity extends BaseActivity implements WordPresenter.OnClic mRecognizer.setRecognitionListener(new CustomListener() { @Override public void onResults(String result) { - mBinding.search.requestFocus(); mBinding.voice.clearAnimation(); mBinding.keyword.setText(result); mBinding.keyword.setSelection(mBinding.keyword.length()); @@ -103,8 +102,11 @@ public class SearchActivity extends BaseActivity implements WordPresenter.OnClic }); } + @SuppressLint("RestrictedApi") private void setRecyclerView() { - mBinding.word.setVerticalSpacing(ResUtil.dp2px(16)); + mBinding.word.setHorizontalSpacing(ResUtil.dp2px(16)); + mBinding.word.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT); + mBinding.word.setFocusScrollStrategy(HorizontalGridView.FOCUS_SCROLL_ITEM); mBinding.word.setAdapter(new ItemBridgeAdapter(mWordAdapter = new ArrayObjectAdapter(new WordPresenter(this)))); } @@ -119,7 +121,8 @@ public class SearchActivity extends BaseActivity implements WordPresenter.OnClic } } - private void onSearch() { + @Override + public void onSearch() { String keyword = mBinding.keyword.getText().toString().trim(); mBinding.keyword.setSelection(mBinding.keyword.length()); Utils.hideKeyboard(mBinding.keyword); @@ -127,6 +130,11 @@ public class SearchActivity extends BaseActivity implements WordPresenter.OnClic CollectActivity.start(this, keyword); } + @Override + public void onRemote() { + PushActivity.start(this); + } + @Override public void onItemClick(String text) { mBinding.keyword.setText(text); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java index 38e92983b..8ac181209 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java @@ -20,7 +20,7 @@ public class KeyboardAdapter extends RecyclerView.Adapter mItems; public KeyboardAdapter(OnClickListener listener) { - this.mItems = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", R.drawable.ic_keyboard_space, R.drawable.ic_keyboard_left, R.drawable.ic_keyboard_right, R.drawable.ic_keyboard_back); + this.mItems = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ",", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "。", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", R.drawable.ic_keyboard_remote, "U", "V", "W", "X", "Y", "Z", R.drawable.ic_keyboard_space, R.drawable.ic_keyboard_left, R.drawable.ic_keyboard_right, R.drawable.ic_keyboard_back, R.drawable.ic_keyboard_search); this.mListener = listener; } @@ -29,6 +29,8 @@ public class KeyboardAdapter extends RecyclerView.Adapter diff --git a/app/src/leanback/res/drawable/ic_keyboard_back.xml b/app/src/leanback/res/drawable/ic_keyboard_back.xml index 645e3fa97..a41f5e210 100644 --- a/app/src/leanback/res/drawable/ic_keyboard_back.xml +++ b/app/src/leanback/res/drawable/ic_keyboard_back.xml @@ -5,6 +5,6 @@ android:viewportWidth="48" android:viewportHeight="48"> diff --git a/app/src/leanback/res/drawable/ic_keyboard_left.xml b/app/src/leanback/res/drawable/ic_keyboard_left.xml index 22558233b..78843ed16 100644 --- a/app/src/leanback/res/drawable/ic_keyboard_left.xml +++ b/app/src/leanback/res/drawable/ic_keyboard_left.xml @@ -5,6 +5,6 @@ android:viewportWidth="48" android:viewportHeight="48"> diff --git a/app/src/leanback/res/drawable/ic_keyboard_remote.xml b/app/src/leanback/res/drawable/ic_keyboard_remote.xml new file mode 100644 index 000000000..e80c9de52 --- /dev/null +++ b/app/src/leanback/res/drawable/ic_keyboard_remote.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/leanback/res/drawable/ic_keyboard_right.xml b/app/src/leanback/res/drawable/ic_keyboard_right.xml index 944ccdb8a..0bf84e0c6 100644 --- a/app/src/leanback/res/drawable/ic_keyboard_right.xml +++ b/app/src/leanback/res/drawable/ic_keyboard_right.xml @@ -5,6 +5,6 @@ android:viewportWidth="48" android:viewportHeight="48"> diff --git a/app/src/leanback/res/drawable/ic_keyboard_search.xml b/app/src/leanback/res/drawable/ic_keyboard_search.xml new file mode 100644 index 000000000..6b396d368 --- /dev/null +++ b/app/src/leanback/res/drawable/ic_keyboard_search.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/leanback/res/drawable/ic_keyboard_space.xml b/app/src/leanback/res/drawable/ic_keyboard_space.xml index b740ef05b..d5ff15172 100644 --- a/app/src/leanback/res/drawable/ic_keyboard_space.xml +++ b/app/src/leanback/res/drawable/ic_keyboard_space.xml @@ -1,10 +1,10 @@ diff --git a/app/src/leanback/res/drawable/ic_voice.xml b/app/src/leanback/res/drawable/ic_voice.xml index a484594f6..94172d3e5 100644 --- a/app/src/leanback/res/drawable/ic_voice.xml +++ b/app/src/leanback/res/drawable/ic_voice.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/leanback/res/layout/activity_search.xml b/app/src/leanback/res/layout/activity_search.xml index d639e3a1c..a29a19452 100644 --- a/app/src/leanback/res/layout/activity_search.xml +++ b/app/src/leanback/res/layout/activity_search.xml @@ -1,18 +1,18 @@ - + android:gravity="center|bottom" + android:keepScreenOn="true" + android:orientation="vertical"> @@ -38,7 +38,6 @@ android:inputType="textCapCharacters|textAutoCorrect|textAutoComplete" android:letterSpacing="0.02" android:maxLength="50" - android:nextFocusDown="@id/word" android:singleLine="true" android:textColor="@color/white" android:textColorHint="@color/white" @@ -47,19 +46,14 @@ - @@ -67,70 +61,13 @@ android:id="@+id/keyboard" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignTop="@+id/word" - android:layout_alignParentEnd="true" - android:layout_marginEnd="24dp" android:clipChildren="false" android:clipToPadding="false" - android:nextFocusLeft="@id/word" - android:nextFocusUp="@id/keyword" + android:padding="24sp" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" - app:spanCount="10" - tools:itemCount="40" + app:spanCount="11" + tools:itemCount="44" tools:listitem="@layout/adapter_keyboard_text" /> - - - - - - - - - - + diff --git a/app/src/leanback/res/layout/adapter_word.xml b/app/src/leanback/res/layout/adapter_word.xml index ffcedea5e..e433de47e 100644 --- a/app/src/leanback/res/layout/adapter_word.xml +++ b/app/src/leanback/res/layout/adapter_word.xml @@ -7,7 +7,6 @@ android:background="@drawable/selector_item_round" android:focusable="true" android:focusableInTouchMode="true" - android:nextFocusLeft="@id/word" android:singleLine="true" android:textColor="@color/white" android:textSize="16sp" diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml index 7f7cf3544..6269d8455 100644 --- a/app/src/main/res/drawable/ic_delete.xml +++ b/app/src/main/res/drawable/ic_delete.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_filter_off.xml b/app/src/main/res/drawable/ic_filter_off.xml index f78f8393a..a81aef1c6 100644 --- a/app/src/main/res/drawable/ic_filter_off.xml +++ b/app/src/main/res/drawable/ic_filter_off.xml @@ -5,9 +5,9 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_filter_off_small.xml b/app/src/main/res/drawable/ic_filter_off_small.xml index 809304495..63fcf796c 100644 --- a/app/src/main/res/drawable/ic_filter_off_small.xml +++ b/app/src/main/res/drawable/ic_filter_off_small.xml @@ -5,9 +5,9 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_filter_on.xml b/app/src/main/res/drawable/ic_filter_on.xml index 047655021..5a44c62c7 100644 --- a/app/src/main/res/drawable/ic_filter_on.xml +++ b/app/src/main/res/drawable/ic_filter_on.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_filter_on_small.xml b/app/src/main/res/drawable/ic_filter_on_small.xml index eaff72db5..53cde4f91 100644 --- a/app/src/main/res/drawable/ic_filter_on_small.xml +++ b/app/src/main/res/drawable/ic_filter_on_small.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_forward.xml b/app/src/main/res/drawable/ic_forward.xml index 1715efdee..0ff3b874a 100644 --- a/app/src/main/res/drawable/ic_forward.xml +++ b/app/src/main/res/drawable/ic_forward.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml index 0a6c16784..834815067 100644 --- a/app/src/main/res/drawable/ic_pause.xml +++ b/app/src/main/res/drawable/ic_pause.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_play.xml b/app/src/main/res/drawable/ic_play.xml index 3ac4b3c1e..8bbd9202a 100644 --- a/app/src/main/res/drawable/ic_play.xml +++ b/app/src/main/res/drawable/ic_play.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_rewind.xml b/app/src/main/res/drawable/ic_rewind.xml index b895c2547..e66230d3e 100644 --- a/app/src/main/res/drawable/ic_rewind.xml +++ b/app/src/main/res/drawable/ic_rewind.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_search_off.xml b/app/src/main/res/drawable/ic_search_off.xml index 2863f6a0e..4ca664a2f 100644 --- a/app/src/main/res/drawable/ic_search_off.xml +++ b/app/src/main/res/drawable/ic_search_off.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/app/src/main/res/drawable/ic_search_on.xml b/app/src/main/res/drawable/ic_search_on.xml index d9cd13fa2..e8481eaa0 100644 --- a/app/src/main/res/drawable/ic_search_on.xml +++ b/app/src/main/res/drawable/ic_search_on.xml @@ -5,6 +5,6 @@ android:viewportWidth="24" android:viewportHeight="24">