package com.edufound.reader.fragment; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.animation.LinearInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.edufound.reader.R; import com.edufound.reader.activity.CommentActivity; import com.edufound.reader.activity.RecordActivity; import com.edufound.reader.base.BaseActivity; import com.edufound.reader.base.BaseMvpFragment; import com.edufound.reader.bean.SlideVideoBean; import com.edufound.reader.contract.RecommendFragmentContract; import com.edufound.reader.presenter.RecommendFragmentPresenter; import com.orhanobut.logger.Logger; import androidx.recyclerview.widget.RecyclerView; public class RecommendFragment extends BaseMvpFragment implements RecommendFragmentContract.View { View mRootView; RecyclerView mRecyclerView; FrameLayout mUserHeadLayout; FrameLayout mCommentLayout; FrameLayout mCollectionLayout; FrameLayout mThumbsLayout; LinearLayout mToRecordLayout; ImageView mVideoUp; ImageView mVideoNext; ObjectAnimator mRotationImgAnim; ImageView mToRecordRotationbg; ObjectAnimator mToRecordScaleXAnim; ObjectAnimator mToRecordScaleYAnim; ImageView mToRecordScaleIcon; ImageView mUserHead; TextView mUserPhone; TextView mCommentCount; TextView mCollentStatus; TextView mThumbCount; //默认是推荐 mFragmentType=0 //关注 mFragmentType=1 //官方的 mFragmentType=2 //关注的人的mFragmentType=3 int mFragmentType = 0; public RecommendFragment(int type) { mFragmentType = type; } boolean hideBottom = false; int startPosition = 0; @Override protected void initView(View view) { mRootView = view; mPresenter = new RecommendFragmentPresenter(getContext()); mPresenter.attachView(this); mRecyclerView = view.findViewById(R.id.fragment_recommend_recyclerview); mUserHeadLayout = view.findViewById(R.id.fragment_recommend_user_head_layout); mCommentLayout = view.findViewById(R.id.fragment_recommend_comment_layout); mCollectionLayout = view.findViewById(R.id.fragment_recommend_collection_layout); mThumbsLayout = view.findViewById(R.id.fragment_recommend_thumbs_layout); mVideoUp = view.findViewById(R.id.fragment_recommend_video_up); mVideoNext = view.findViewById(R.id.fragment_recommend_video_next); mToRecordLayout = view.findViewById(R.id.fragment_recommend_to_record_layout); mUserHead = view.findViewById(R.id.fragment_recommend_user_head); mUserPhone = view.findViewById(R.id.fragment_recommend_user_phone); mCommentCount = view.findViewById(R.id.fragment_recommend_comment_num); mCollentStatus = view.findViewById(R.id.fragment_recommend_collection_status); mThumbCount = view.findViewById(R.id.fragment_recommend_thumbs_num); //录音按钮背景旋转 mToRecordRotationbg = mToRecordLayout.findViewById(R.id.fragment_recommend_to_record_bg); mRotationImgAnim = ObjectAnimator.ofFloat(mToRecordRotationbg, "rotation", 0.0F, 359.0F); mRotationImgAnim.setRepeatCount(-1); mRotationImgAnim.setDuration(1500); LinearInterpolator interpolator = new LinearInterpolator(); mRotationImgAnim.setInterpolator(interpolator); //设置匀速旋转,不卡顿 icon_anim.start(); mRotationImgAnim.start(); //录音按钮缩小放大 mToRecordScaleIcon = mToRecordLayout.findViewById(R.id.fragment_recommend_to_record_icon); mToRecordScaleXAnim = ObjectAnimator.ofFloat(mToRecordScaleIcon, "scaleX", 1F, 1.2F);//设置Y轴的立体旋转动画 mToRecordScaleXAnim.setRepeatCount(-1); mToRecordScaleXAnim.setRepeatMode(ObjectAnimator.REVERSE); mToRecordScaleXAnim.setDuration(1000); LinearInterpolator interpolator2 = new LinearInterpolator(); mToRecordScaleXAnim.setInterpolator(interpolator2); //设置匀速旋转,不卡顿 icon_anim.start(); mToRecordScaleYAnim = ObjectAnimator.ofFloat(mToRecordScaleIcon, "scaleY", 1F, 1.2F);//设置Y轴的立体旋转动画 mToRecordScaleYAnim.setRepeatCount(-1); mToRecordScaleYAnim.setRepeatMode(ObjectAnimator.REVERSE); mToRecordScaleYAnim.setDuration(1000); mToRecordScaleYAnim.setInterpolator(interpolator2); //设置匀速旋转,不卡顿 icon_anim.start(); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(mToRecordScaleXAnim).with(mToRecordScaleYAnim); animatorSet.start(); } @Override protected int getLayoutId() { return R.layout.fragment_main_recommend; } @Override protected void initViewListener() { addUiClickListener(mUserHeadLayout, o -> { Logger.e("点击了手机号旁边的头像"); }); addUiClickListener(mCommentLayout, o -> { Logger.e("点击了评论"); toNextActivity(CommentActivity.class); }); addUiClickListener(mCollectionLayout, o -> { Logger.e("点击了收藏"); ((ImageView) mCollectionLayout.findViewById(R.id.fragment_recommend_collection_icon)).setImageResource(R.drawable.fragment_recommend_collection_icon_s); ((BaseActivity) getActivity()).showFollowCountAnim(); }); addUiClickListener(mThumbsLayout, o -> { Logger.e("点击了点赞"); ((ImageView) mThumbsLayout.findViewById(R.id.fragment_recommend_thumbs_icon)).setImageResource(R.drawable.fragment_recommend_thumbs_up_s); ((BaseActivity) getActivity()).showFollowCountAnim(); }); if (hideBottom) { mVideoUp.setVisibility(View.GONE); mVideoNext.setVisibility(View.GONE); } else { addUiClickListener(mVideoUp, o -> { Logger.e("上一个视频"); mPresenter.scrollToUpFunction(mRecyclerView); }); addUiClickListener(mVideoNext, o -> { mPresenter.scrollToNextFunction(mRecyclerView, true); Logger.e("下一个视频"); }); } addUiClickListener(mToRecordLayout, o -> { Logger.e("点击我要录音了:" + mPresenter.getCurPlayVideo()); Bundle bundle = new Bundle(); bundle.putString("index", mPresenter.getCurPlayVideo().toString()); toNextActivity(RecordActivity.class, bundle); }); mPresenter.initVideoList(mRecyclerView, mFragmentType, startPosition); } @Override public void showLoading() { } @Override public void hideLoading() { } @Override public void onError(String errMessage) { } @Override public void onPause() { super.onPause(); // JzvdStd.goOnPlayOnPause(); mPresenter.fragmentPause(mRecyclerView); } @Override public void onResume() { Logger.e("onResume"); super.onResume(); // JzvdStd.goOnPlayOnResume(); mPresenter.fragmentResume(mRecyclerView); } @Override public ViewGroup getRootView() { return (ViewGroup) mRootView; } public void hiddenBottomView() { hideBottom = true; } public void scrollPosition(int position) { startPosition = position; } @Override public void setTopStatus(SlideVideoBean bean) { //设置信息和点赞数等 // mUserHead; // mUserPhone; // mCommentCount; // mCollentStatus; // mThumbCount; } }