From abe921cbc4feddb367f1fe9285e999e241187eae Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 16 Aug 2022 17:12:28 +0800 Subject: [PATCH] Add voice anim --- .../fongmi/android/tv/ui/activity/SearchActivity.java | 6 ++++++ .../tv/ui/custom/CustomHorizontalGridView.java | 4 ++-- .../fongmi/android/tv/ui/custom/CustomViewPager.java | 4 ++-- app/src/leanback/res/anim/voice.xml | 11 +++++++++++ .../java/com/fongmi/android/tv/utils/ResUtil.java | 7 +++++++ 5 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 app/src/leanback/res/anim/voice.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 c3c0a1575..d19327a16 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 @@ -11,6 +11,7 @@ import android.speech.SpeechRecognizer; import android.text.Editable; import android.text.TextUtils; import android.view.View; +import android.view.animation.Animation; import android.view.inputmethod.EditorInfo; import androidx.activity.result.ActivityResultLauncher; @@ -24,6 +25,7 @@ import androidx.lifecycle.ViewModelProvider; import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.CustomListener; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Hot; import com.fongmi.android.tv.bean.Result; @@ -64,6 +66,7 @@ public class SearchActivity extends BaseActivity implements VodPresenter.OnClick private ExecutorService mService; private List mSites; private Handler mHandler; + private Animation mBlink; private String getKeyword() { return getIntent().getStringExtra("keyword"); @@ -98,6 +101,7 @@ public class SearchActivity extends BaseActivity implements VodPresenter.OnClick @Override protected void initView() { + mBlink = ResUtil.getAnim(R.anim.voice); mHandler = new Handler(Looper.getMainLooper()); mRecognizer = SpeechRecognizer.createSpeechRecognizer(this); mBinding.voice.setVisibility(hasVoice() ? View.VISIBLE : View.GONE); @@ -131,6 +135,7 @@ public class SearchActivity extends BaseActivity implements VodPresenter.OnClick @Override public void onResults(String result) { mBinding.search.requestFocus(); + mBinding.voice.clearAnimation(); mBinding.keyword.setText(result); mBinding.keyword.setSelection(result.length()); } @@ -185,6 +190,7 @@ public class SearchActivity extends BaseActivity implements VodPresenter.OnClick } else { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); + mBinding.voice.startAnimation(mBlink); mRecognizer.startListening(intent); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomHorizontalGridView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomHorizontalGridView.java index 266a6f777..716c573f5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomHorizontalGridView.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomHorizontalGridView.java @@ -8,13 +8,13 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.animation.Animation; -import android.view.animation.AnimationUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.leanback.widget.HorizontalGridView; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.utils.ResUtil; public class CustomHorizontalGridView extends HorizontalGridView { @@ -35,7 +35,7 @@ public class CustomHorizontalGridView extends HorizontalGridView { @Override protected void initAttributes(@NonNull Context context, @Nullable AttributeSet attrs) { super.initAttributes(context, attrs); - this.shake = AnimationUtils.loadAnimation(getContext(), R.anim.shake); + this.shake = ResUtil.getAnim(R.anim.shake); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomViewPager.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomViewPager.java index d689c2599..e19088404 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomViewPager.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomViewPager.java @@ -10,13 +10,13 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.animation.Animation; -import android.view.animation.AnimationUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.viewpager.widget.ViewPager; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.utils.ResUtil; public class CustomViewPager extends ViewPager { @@ -34,7 +34,7 @@ public class CustomViewPager extends ViewPager { private void init() { this.rect = new Rect(); - this.shake = AnimationUtils.loadAnimation(getContext(), R.anim.shake); + this.shake = ResUtil.getAnim(R.anim.shake); setPageTransformer(false, (page, position) -> { page.setTranslationX(page.getWidth() * -position); if (position <= -1 || position >= 1) { diff --git a/app/src/leanback/res/anim/voice.xml b/app/src/leanback/res/anim/voice.xml new file mode 100644 index 000000000..bf4e80ab3 --- /dev/null +++ b/app/src/leanback/res/anim/voice.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java index 1cdebe9eb..ff54958aa 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java @@ -2,7 +2,10 @@ package com.fongmi.android.tv.utils; import android.graphics.drawable.Drawable; import android.util.DisplayMetrics; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import androidx.annotation.AnimRes; import androidx.annotation.ArrayRes; import androidx.annotation.DrawableRes; import androidx.annotation.StringRes; @@ -39,4 +42,8 @@ public class ResUtil { public static Drawable getDrawable(@DrawableRes int resId) { return ContextCompat.getDrawable(App.get(), resId); } + + public static Animation getAnim(@AnimRes int resId) { + return AnimationUtils.loadAnimation(App.get(), resId); + } }