RecommendFragment.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.edufound.reader.fragment;
  2. import android.animation.AnimatorSet;
  3. import android.animation.ObjectAnimator;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.view.animation.LinearInterpolator;
  8. import android.widget.FrameLayout;
  9. import android.widget.ImageView;
  10. import android.widget.LinearLayout;
  11. import android.widget.TextView;
  12. import com.edufound.reader.R;
  13. import com.edufound.reader.activity.CommentActivity;
  14. import com.edufound.reader.activity.RecordActivity;
  15. import com.edufound.reader.base.BaseActivity;
  16. import com.edufound.reader.base.BaseMvpFragment;
  17. import com.edufound.reader.bean.SlideVideoBean;
  18. import com.edufound.reader.contract.RecommendFragmentContract;
  19. import com.edufound.reader.presenter.RecommendFragmentPresenter;
  20. import com.orhanobut.logger.Logger;
  21. import androidx.recyclerview.widget.RecyclerView;
  22. public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresenter> implements RecommendFragmentContract.View {
  23. View mRootView;
  24. RecyclerView mRecyclerView;
  25. FrameLayout mUserHeadLayout;
  26. FrameLayout mCommentLayout;
  27. FrameLayout mCollectionLayout;
  28. FrameLayout mThumbsLayout;
  29. LinearLayout mToRecordLayout;
  30. ImageView mVideoUp;
  31. ImageView mVideoNext;
  32. ObjectAnimator mRotationImgAnim;
  33. ImageView mToRecordRotationbg;
  34. ObjectAnimator mToRecordScaleXAnim;
  35. ObjectAnimator mToRecordScaleYAnim;
  36. ImageView mToRecordScaleIcon;
  37. ImageView mUserHead;
  38. TextView mUserPhone;
  39. TextView mCommentCount;
  40. TextView mCollentStatus;
  41. TextView mThumbCount;
  42. //默认是推荐 mFragmentType=0
  43. //关注 mFragmentType=1
  44. //官方的 mFragmentType=2
  45. //关注的人的mFragmentType=3
  46. int mFragmentType = 0;
  47. public RecommendFragment(int type) {
  48. mFragmentType = type;
  49. }
  50. boolean hideBottom = false;
  51. int startPosition = 0;
  52. @Override
  53. protected void initView(View view) {
  54. mRootView = view;
  55. mPresenter = new RecommendFragmentPresenter(getContext());
  56. mPresenter.attachView(this);
  57. mRecyclerView = view.findViewById(R.id.fragment_recommend_recyclerview);
  58. mUserHeadLayout = view.findViewById(R.id.fragment_recommend_user_head_layout);
  59. mCommentLayout = view.findViewById(R.id.fragment_recommend_comment_layout);
  60. mCollectionLayout = view.findViewById(R.id.fragment_recommend_collection_layout);
  61. mThumbsLayout = view.findViewById(R.id.fragment_recommend_thumbs_layout);
  62. mVideoUp = view.findViewById(R.id.fragment_recommend_video_up);
  63. mVideoNext = view.findViewById(R.id.fragment_recommend_video_next);
  64. mToRecordLayout = view.findViewById(R.id.fragment_recommend_to_record_layout);
  65. mUserHead = view.findViewById(R.id.fragment_recommend_user_head);
  66. mUserPhone = view.findViewById(R.id.fragment_recommend_user_phone);
  67. mCommentCount = view.findViewById(R.id.fragment_recommend_comment_num);
  68. mCollentStatus = view.findViewById(R.id.fragment_recommend_collection_status);
  69. mThumbCount = view.findViewById(R.id.fragment_recommend_thumbs_num);
  70. //录音按钮背景旋转
  71. mToRecordRotationbg = mToRecordLayout.findViewById(R.id.fragment_recommend_to_record_bg);
  72. mRotationImgAnim = ObjectAnimator.ofFloat(mToRecordRotationbg, "rotation", 0.0F, 359.0F);
  73. mRotationImgAnim.setRepeatCount(-1);
  74. mRotationImgAnim.setDuration(1500);
  75. LinearInterpolator interpolator = new LinearInterpolator();
  76. mRotationImgAnim.setInterpolator(interpolator); //设置匀速旋转,不卡顿 icon_anim.start();
  77. mRotationImgAnim.start();
  78. //录音按钮缩小放大
  79. mToRecordScaleIcon = mToRecordLayout.findViewById(R.id.fragment_recommend_to_record_icon);
  80. mToRecordScaleXAnim = ObjectAnimator.ofFloat(mToRecordScaleIcon, "scaleX", 1F, 1.2F);//设置Y轴的立体旋转动画
  81. mToRecordScaleXAnim.setRepeatCount(-1);
  82. mToRecordScaleXAnim.setRepeatMode(ObjectAnimator.REVERSE);
  83. mToRecordScaleXAnim.setDuration(1000);
  84. LinearInterpolator interpolator2 = new LinearInterpolator();
  85. mToRecordScaleXAnim.setInterpolator(interpolator2); //设置匀速旋转,不卡顿 icon_anim.start();
  86. mToRecordScaleYAnim = ObjectAnimator.ofFloat(mToRecordScaleIcon, "scaleY", 1F, 1.2F);//设置Y轴的立体旋转动画
  87. mToRecordScaleYAnim.setRepeatCount(-1);
  88. mToRecordScaleYAnim.setRepeatMode(ObjectAnimator.REVERSE);
  89. mToRecordScaleYAnim.setDuration(1000);
  90. mToRecordScaleYAnim.setInterpolator(interpolator2); //设置匀速旋转,不卡顿 icon_anim.start();
  91. AnimatorSet animatorSet = new AnimatorSet();
  92. animatorSet.play(mToRecordScaleXAnim).with(mToRecordScaleYAnim);
  93. animatorSet.start();
  94. }
  95. @Override
  96. protected int getLayoutId() {
  97. return R.layout.fragment_main_recommend;
  98. }
  99. @Override
  100. protected void initViewListener() {
  101. addUiClickListener(mUserHeadLayout, o -> {
  102. Logger.e("点击了手机号旁边的头像");
  103. });
  104. addUiClickListener(mCommentLayout, o -> {
  105. Logger.e("点击了评论");
  106. toNextActivity(CommentActivity.class);
  107. });
  108. addUiClickListener(mCollectionLayout, o -> {
  109. Logger.e("点击了收藏");
  110. ((ImageView) mCollectionLayout.findViewById(R.id.fragment_recommend_collection_icon)).setImageResource(R.drawable.fragment_recommend_collection_icon_s);
  111. ((BaseActivity) getActivity()).showFollowCountAnim();
  112. });
  113. addUiClickListener(mThumbsLayout, o -> {
  114. Logger.e("点击了点赞");
  115. ((ImageView) mThumbsLayout.findViewById(R.id.fragment_recommend_thumbs_icon)).setImageResource(R.drawable.fragment_recommend_thumbs_up_s);
  116. ((BaseActivity) getActivity()).showFollowCountAnim();
  117. });
  118. if (hideBottom) {
  119. mVideoUp.setVisibility(View.GONE);
  120. mVideoNext.setVisibility(View.GONE);
  121. } else {
  122. addUiClickListener(mVideoUp, o -> {
  123. Logger.e("上一个视频");
  124. mPresenter.scrollToUpFunction(mRecyclerView);
  125. });
  126. addUiClickListener(mVideoNext, o -> {
  127. mPresenter.scrollToNextFunction(mRecyclerView, true);
  128. Logger.e("下一个视频");
  129. });
  130. }
  131. addUiClickListener(mToRecordLayout, o -> {
  132. Logger.e("点击我要录音了:" + mPresenter.getCurPlayVideo());
  133. Bundle bundle = new Bundle();
  134. bundle.putString("index", mPresenter.getCurPlayVideo().toString());
  135. toNextActivity(RecordActivity.class, bundle);
  136. });
  137. mPresenter.initVideoList(mRecyclerView, mFragmentType, startPosition);
  138. }
  139. @Override
  140. public void showLoading() {
  141. }
  142. @Override
  143. public void hideLoading() {
  144. }
  145. @Override
  146. public void onError(String errMessage) {
  147. }
  148. @Override
  149. public void onPause() {
  150. super.onPause();
  151. // JzvdStd.goOnPlayOnPause();
  152. mPresenter.fragmentPause(mRecyclerView);
  153. }
  154. @Override
  155. public void onResume() {
  156. Logger.e("onResume");
  157. super.onResume();
  158. // JzvdStd.goOnPlayOnResume();
  159. mPresenter.fragmentResume(mRecyclerView);
  160. }
  161. @Override
  162. public ViewGroup getRootView() {
  163. return (ViewGroup) mRootView;
  164. }
  165. public void hiddenBottomView() {
  166. hideBottom = true;
  167. }
  168. public void scrollPosition(int position) {
  169. startPosition = position;
  170. }
  171. @Override
  172. public void setTopStatus(SlideVideoBean bean) {
  173. //设置信息和点赞数等
  174. // mUserHead;
  175. // mUserPhone;
  176. // mCommentCount;
  177. // mCollentStatus;
  178. // mThumbCount;
  179. }
  180. }