package com.pandaq.pandaeye.modules.video.videodetail; import android.animation.ArgbEvaluator; import android.animation.FloatEvaluator; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.util.TypedValue; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.pandaq.pandaeye.R; import com.pandaq.pandaeye.config.Constants; import com.pandaq.pandaeye.modules.video.videodetail.mvp.MovieInfo; import com.pandaq.pandaeye.rxbus.RxBus; import com.pandaq.pandaeye.rxbus.RxConstants; import com.pandaq.pandaeye.activities.SwipeBackActivity; import com.pandaq.pandaeye.utils.PicassoTarget; import com.pandaq.pandaeye.modules.video.videodetail.mvp.VideoCommentFrag; import com.pandaq.pandaeye.modules.video.videodetail.mvp.VideoInfoFragment; import com.squareup.picasso.Picasso; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; /** * Created by PandaQ on 2017/2/28. * 视频详情界面 */ public class VideoInfoActivity extends SwipeBackActivity implements ViewPager.OnPageChangeListener { @BindView(R.id.jc_video_player) JCVideoPlayerStandard mJcVideoPlayer; @BindView(R.id.toolbar_title) TextView mToolbarTitle; @BindView(R.id.toolbar) Toolbar mToolbar; @BindView(R.id.vp_video_info) ViewPager mVpVideoInfo; @BindView(R.id.tv_tab_description) TextView mTvTabDescription; @BindView(R.id.tv_tab_comment) TextView mTvTabComment; private Disposable mDisposable; private Disposable mPicDisposable; private ArgbEvaluator argbEvaluator; private FloatEvaluator floatEvaluator; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vedioinfo); ButterKnife.bind(this); addViewPager(mVpVideoInfo); mToolbar.setTitle(""); setSupportActionBar(mToolbar); initRxBus(); initView(); } private void initView() { Bundle bundle = getIntent().getExtras(); String title = bundle.getString(Constants.BUNDLE_KEY_TITLE); String idOrUrl = bundle.getString(Constants.BUNDLE_KEY_ID); String pic = bundle.getString(Constants.BUNDLE_KEY_IMG_URL); mToolbarTitle.setText(title); mJcVideoPlayer.backButton.setVisibility(View.GONE); mJcVideoPlayer.titleTextView.setVisibility(View.GONE); mJcVideoPlayer.tinyBackImageView.setVisibility(View.GONE); mJcVideoPlayer.thumbImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); if (!TextUtils.isEmpty(pic)) { Picasso.with(this) .load(pic) .into(new PicassoTarget(this, mJcVideoPlayer.thumbImageView, mToolbar)); } final ArrayList<Fragment> fragments = new ArrayList<>(); //将首次需要加载的电影Id传递过去 VideoInfoFragment videoInfoFragment = new VideoInfoFragment(); Bundle arg = new Bundle(); arg.putString(Constants.BUNDLE_KEY_DATAID, idOrUrl); videoInfoFragment.setArguments(arg); VideoCommentFrag videoCommentFrag = new VideoCommentFrag(); videoCommentFrag.setArguments(arg); fragments.add(videoInfoFragment); fragments.add(videoCommentFrag); mVpVideoInfo.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return fragments.size(); } }); mVpVideoInfo.addOnPageChangeListener(this); mVpVideoInfo.setCurrentItem(0); argbEvaluator = new ArgbEvaluator(); floatEvaluator = new FloatEvaluator(); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finishAfterTransition(); } }); } private void initRxBus() { // 点击推荐视频跳转观察者 RxBus .getDefault() .toObservableWithCode(RxConstants.LOADED_DATA_CODE, MovieInfo.class) .subscribe(new Observer<MovieInfo>() { @Override public void onSubscribe(Disposable d) { mDisposable = d; } @Override public void onNext(MovieInfo value) { mToolbarTitle.setText(value.getTitle()); mJcVideoPlayer.setUp(value.getVideoUrl(), JCVideoPlayerStandard.SCREEN_LAYOUT_LIST, value.getTitle()); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); RxBus .getDefault() .toObservableWithCode(RxConstants.LOADED_VIDEO_PIC_CODE, String.class) .subscribe(new Observer<String>() { @Override public void onSubscribe(Disposable d) { mPicDisposable = d; } @Override public void onNext(String value) { if (!TextUtils.isEmpty(value)) { Picasso.with(VideoInfoActivity.this) .load(value) .into(new PicassoTarget(VideoInfoActivity.this, mJcVideoPlayer.thumbImageView, mToolbar)); } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } @Override public void onBackPressed() { if (JCVideoPlayer.backPress()) { return; } super.onBackPressed(); } @Override protected void onPause() { if (mDisposable != null && !mDisposable.isDisposed()) { mDisposable.dispose(); mPicDisposable.dispose(); } super.onPause(); JCVideoPlayer.releaseAllVideos(); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { changePage(position, positionOffset); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } private void changePage(int position, float positionOffset) { if (position == 0) { // 字体颜色 mTvTabDescription.setTextColor(ContextCompat.getColor(this, R.color.white_FFFFFF)); int stepsColor = (int) argbEvaluator.evaluate(positionOffset, ContextCompat.getColor(this, R.color.white_FFFFFF), ContextCompat.getColor(this, R.color.grey_607D8B)); mTvTabDescription.setTextColor(stepsColor); mTvTabComment.setTextColor(ContextCompat.getColor(this, R.color.grey_607D8B)); int sleepColor = (int) argbEvaluator.evaluate(positionOffset, ContextCompat.getColor(this, R.color.grey_607D8B), ContextCompat.getColor(this, R.color.white_FFFFFF)); mTvTabComment.setTextColor(sleepColor); // 字体大小 mTvTabDescription.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); float stepsSize = floatEvaluator.evaluate(positionOffset, 18, 14); mTvTabDescription.setTextSize(TypedValue.COMPLEX_UNIT_SP, stepsSize); mTvTabComment.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); float sleepSize = floatEvaluator.evaluate(positionOffset, 14, 18); mTvTabComment.setTextSize(TypedValue.COMPLEX_UNIT_SP, sleepSize); } else { // 字体颜色 mTvTabDescription.setTextColor(ContextCompat.getColor(this, R.color.grey_607D8B)); int stepsColor = (int) argbEvaluator.evaluate(positionOffset, ContextCompat.getColor(this, R.color.grey_607D8B), ContextCompat.getColor(this, R.color.white_FFFFFF)); mTvTabDescription.setTextColor(stepsColor); mTvTabComment.setTextColor(ContextCompat.getColor(this, R.color.white_FFFFFF)); int sleepColor = (int) argbEvaluator.evaluate(positionOffset, ContextCompat.getColor(this, R.color.white_FFFFFF), ContextCompat.getColor(this, R.color.grey_607D8B)); mTvTabComment.setTextColor(sleepColor); // 字体大小 mTvTabDescription.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); float stepsSize = floatEvaluator.evaluate(positionOffset, 14, 18); mTvTabDescription.setTextSize(TypedValue.COMPLEX_UNIT_SP, stepsSize); mTvTabComment.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); float sleepSize = floatEvaluator.evaluate(positionOffset, 18, 14); mTvTabComment.setTextSize(TypedValue.COMPLEX_UNIT_SP, sleepSize); } } }