|
@@ -1,5 +1,7 @@
|
|
|
package com.cooleshow.student.ui.main;
|
|
|
|
|
|
+import android.animation.ArgbEvaluator;
|
|
|
+import android.animation.ValueAnimator;
|
|
|
import android.text.TextUtils;
|
|
|
import android.util.Log;
|
|
|
import android.view.View;
|
|
@@ -88,6 +90,9 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
|
|
|
private NewHomeVideoCourseAdapter mHomeVideoCourseAdapter;
|
|
|
private TalentStyleFragment mTalentStyleFragment;
|
|
|
private HotNewsFragment mHotNewsFragment;
|
|
|
+ private ValueAnimator bottomTabValueAnimator;
|
|
|
+ private boolean isCollapsed = false;//控制底部tab
|
|
|
+
|
|
|
private ViewPager2.OnPageChangeCallback onPageChangeCallback = new ViewPager2.OnPageChangeCallback() {
|
|
|
@Override
|
|
|
public void onPageSelected(int position) {
|
|
@@ -305,24 +310,34 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
|
|
|
|
|
|
|
|
|
mViewBinding.appBarLayout.addOnOffsetChangedListener(new AppBarLayoutStateChangeListener() {
|
|
|
-
|
|
|
@Override
|
|
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
|
|
switch (state) {
|
|
|
case EXPANDED: //展开
|
|
|
- Log.i("pq","展开");
|
|
|
+ Log.i("pq", "展开");
|
|
|
break;
|
|
|
case COLLAPSED: //折叠
|
|
|
- Log.i("pq","折叠");
|
|
|
+ Log.i("pq", "折叠");
|
|
|
+ if (!isCollapsed) {
|
|
|
+ isCollapsed = true;
|
|
|
+ mViewBinding.viewDivideLine2.setVisibility(View.VISIBLE);
|
|
|
+ handleTabAnim(1);
|
|
|
+ }
|
|
|
break;
|
|
|
case INTERMEDIATE: //中间状态
|
|
|
- Log.i("pq","中间状态");
|
|
|
+ Log.i("pq", "中间状态");
|
|
|
+ if (isCollapsed) {
|
|
|
+ handleTabAnim(0);
|
|
|
+ isCollapsed = false;
|
|
|
+ mViewBinding.viewDivideLine2.setVisibility(View.GONE);
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private void resetBannerAuto() {
|
|
|
boolean localVisibleRect = UiUtils.getLocalVisibleRect(getActivity(), banner, 10);
|
|
|
//banner可见的时候就自动循环,否则就停止,解决问题:在scrollview到最底部时候,由于banner自动到第一个时候就往上顶一段距离
|
|
@@ -502,7 +517,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
|
|
|
@Override
|
|
|
public void getStylePageSuccess(HomeStyleBean data) {
|
|
|
if (mTalentStyleFragment != null) {
|
|
|
- mTalentStyleFragment.setData(data.rows);
|
|
|
+ mTalentStyleFragment.setData(data);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -711,6 +726,30 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+ private void handleTabAnim(int animationMode) {
|
|
|
+ int colorFrom = getResources().getColor(animationMode == 0 ? com.cooleshow.base.R.color.white : com.cooleshow.base.R.color.color_f6f8f9);
|
|
|
+ int colorTo = getResources().getColor(animationMode == 0 ? com.cooleshow.base.R.color.color_f6f8f9 : com.cooleshow.base.R.color.white);
|
|
|
+ if (bottomTabValueAnimator == null) {
|
|
|
+ bottomTabValueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
|
|
|
+ bottomTabValueAnimator.setDuration(150);
|
|
|
+ bottomTabValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
|
|
|
+ @Override
|
|
|
+ public void onAnimationUpdate(ValueAnimator animation) {
|
|
|
+ if (mViewBinding != null) {
|
|
|
+ int colorValue = (int) animation.getAnimatedValue();
|
|
|
+ mViewBinding.csBottomTab.setBackgroundColor(colorValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (bottomTabValueAnimator.isRunning()) {
|
|
|
+ bottomTabValueAnimator.cancel();
|
|
|
+ }
|
|
|
+ bottomTabValueAnimator.setObjectValues(colorFrom, colorTo);
|
|
|
+ bottomTabValueAnimator.start();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 跳转直播课详情页面
|
|
|
*
|
|
@@ -745,5 +784,9 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
|
|
|
@Override
|
|
|
public void onDestroy() {
|
|
|
super.onDestroy();
|
|
|
+ if (bottomTabValueAnimator != null) {
|
|
|
+ bottomTabValueAnimator.cancel();
|
|
|
+ bottomTabValueAnimator = null;
|
|
|
+ }
|
|
|
}
|
|
|
}
|