|
|
@@ -2,11 +2,13 @@ package com.atmob.voiceai.module.splash;
|
|
|
|
|
|
import android.animation.Animator;
|
|
|
import android.animation.AnimatorListenerAdapter;
|
|
|
+import android.animation.AnimatorSet;
|
|
|
import android.animation.ValueAnimator;
|
|
|
import android.annotation.SuppressLint;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.Handler;
|
|
|
import android.view.View;
|
|
|
+import android.view.animation.AnimationSet;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
@@ -47,23 +49,20 @@ public class SplashActivity extends BaseActivity<ActivitySplashBinding> {
|
|
|
}
|
|
|
|
|
|
private void initObserver() {
|
|
|
+ splashViewModel.setCanNext(true);
|
|
|
splashViewModel.getShowMainEvent().observe(this, o -> showMain());
|
|
|
splashViewModel.getCurrentGuide().observe(this, current -> {
|
|
|
if (current == null) {
|
|
|
return;
|
|
|
}
|
|
|
if (SplashViewModel.GUIDE_PAGE_1 == current) {
|
|
|
- startGuideEnter(binding.ivGuideHeader1, binding.tvGuideHeader1, binding.ivGuide1, 400);
|
|
|
+ startGuideEnter(binding.ivGuideHeader1, binding.tvGuideHeader1, binding.ivGuide1, 0, 400);
|
|
|
} else if (SplashViewModel.GUIDE_PAGE_2 == current) {
|
|
|
startGuideLeave(binding.ivGuideHeader1, binding.tvGuideHeader1, binding.ivGuide1);
|
|
|
- new Handler().postDelayed(() -> {
|
|
|
- startGuideEnter(binding.ivGuideHeader2, binding.tvGuideHeader2, binding.ivGuide2, 0);
|
|
|
- }, 600);
|
|
|
+ startGuideEnter(binding.ivGuideHeader2, binding.tvGuideHeader2, binding.ivGuide2, 600, 0);
|
|
|
} else if (SplashViewModel.GUIDE_PAGE_3 == current) {
|
|
|
startGuideLeave(binding.ivGuideHeader2, binding.tvGuideHeader2, binding.ivGuide2);
|
|
|
- new Handler().postDelayed(() -> {
|
|
|
- binding.tvNextStep.animate().alpha(0).setDuration(200).start();
|
|
|
- }, 400);
|
|
|
+ new Handler().postDelayed(() -> binding.tvNextStep.animate().alpha(0).setDuration(200).start(), 400);
|
|
|
showEndGuide();
|
|
|
} else if (SplashViewModel.GUIDE_PAGE_END == current) {
|
|
|
closeGuide();
|
|
|
@@ -106,24 +105,40 @@ public class SplashActivity extends BaseActivity<ActivitySplashBinding> {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void startGuideEnter(@NonNull View headerView1, @NonNull View headerView2, @NonNull View contentView, int contentDelay) {
|
|
|
+ private void startGuideEnter(@NonNull View headerView1, @NonNull View headerView2, @NonNull View contentView, int startDelay, int contentStartDelay) {
|
|
|
ValueAnimator alphaAnimator = ValueAnimator.ofFloat(0f, 1f);
|
|
|
alphaAnimator.setDuration(800);
|
|
|
+ alphaAnimator.setStartDelay(startDelay);
|
|
|
alphaAnimator.addUpdateListener(animation -> {
|
|
|
float alpha = (float) animation.getAnimatedValue();
|
|
|
headerView1.setAlpha(alpha);
|
|
|
headerView2.setAlpha(alpha);
|
|
|
});
|
|
|
- alphaAnimator.start();
|
|
|
|
|
|
ValueAnimator contentAnimator = ValueAnimator.ofFloat(SizeUtil.getScreenWidth(), 0f);
|
|
|
- contentAnimator.setStartDelay(contentDelay);
|
|
|
+ contentAnimator.setStartDelay(startDelay + contentStartDelay);
|
|
|
contentAnimator.setDuration(800);
|
|
|
contentAnimator.addUpdateListener(animation -> {
|
|
|
float value = (float) animation.getAnimatedValue();
|
|
|
contentView.setX(value);
|
|
|
});
|
|
|
- contentAnimator.start();
|
|
|
+ AnimatorSet animatorSet = new AnimatorSet();
|
|
|
+ animatorSet.playTogether(alphaAnimator, contentAnimator);
|
|
|
+ animatorSet.addListener(new AnimatorListenerAdapter() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onAnimationStart(Animator animation) {
|
|
|
+ super.onAnimationStart(animation);
|
|
|
+ splashViewModel.setCanNext(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onAnimationEnd(Animator animation) {
|
|
|
+ super.onAnimationEnd(animation);
|
|
|
+ splashViewModel.setCanNext(true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ animatorSet.start();
|
|
|
}
|
|
|
|
|
|
|