package com.example.jingbin.cloudreader.ui.one;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.ImageView;
import com.example.jingbin.cloudreader.R;
import com.example.jingbin.cloudreader.adapter.MovieDetailAdapter;
import com.example.jingbin.cloudreader.base.BaseHeaderActivity;
import com.example.jingbin.cloudreader.bean.MovieDetailBean;
import com.example.jingbin.cloudreader.bean.moviechild.SubjectsBean;
import com.example.jingbin.cloudreader.databinding.ActivityOneMovieDetailBinding;
import com.example.jingbin.cloudreader.databinding.HeaderSlideShapeBinding;
import com.example.jingbin.cloudreader.http.HttpClient;
import com.example.jingbin.cloudreader.utils.CommonUtils;
import com.example.jingbin.cloudreader.utils.StringFormatUtil;
import com.example.jingbin.cloudreader.view.webview.WebViewActivity;
import rx.Observer;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* 继承基类而写的电影详情页 2016-12-13
*/
public class OneMovieDetailActivity extends BaseHeaderActivity<HeaderSlideShapeBinding, ActivityOneMovieDetailBinding> {
private SubjectsBean subjectsBean;
private String mMoreUrl;
private String mMovieName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one_movie_detail);
if (getIntent() != null) {
subjectsBean = (SubjectsBean) getIntent().getSerializableExtra("bean");
}
initSlideShapeTheme(setHeaderImgUrl(), setHeaderImageView());
setTitle(subjectsBean.getTitle());
setSubTitle(String.format("主演:%s", StringFormatUtil.formatName(subjectsBean.getCasts())));
// ImgLoadUtil.showImg(bindingHeaderView.ivOnePhoto,subjectsBean.getImages().getLarge());
bindingHeaderView.setSubjectsBean(subjectsBean);
bindingHeaderView.executePendingBindings();
loadMovieDetail();
}
@Override
protected void setTitleClickMore() {
WebViewActivity.loadUrl(OneMovieDetailActivity.this, mMoreUrl, mMovieName);
}
@Override
protected int setHeaderLayout() {
return R.layout.header_slide_shape;
}
@Override
protected String setHeaderImgUrl() {
if (subjectsBean == null) {
return "";
}
return subjectsBean.getImages().getMedium();
}
@Override
protected ImageView setHeaderImageView() {
return bindingHeaderView.imgItemBg;
}
private void loadMovieDetail() {
Subscription get = HttpClient.Builder.getDouBanService().getMovieDetail(subjectsBean.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<MovieDetailBean>() {
@Override
public void onCompleted() {
showContentView();
}
@Override
public void onError(Throwable e) {
showError();
}
@Override
public void onNext(final MovieDetailBean movieDetailBean) {
// 上映日期
bindingHeaderView.tvOneDay.setText(String.format("上映日期:%s", movieDetailBean.getYear()));
// 制片国家
bindingHeaderView.tvOneCity.setText(String.format("制片国家/地区:%s", StringFormatUtil.formatGenres(movieDetailBean.getCountries())));
bindingHeaderView.setMovieDetailBean(movieDetailBean);
bindingContentView.setBean(movieDetailBean);
bindingContentView.executePendingBindings();
mMoreUrl = movieDetailBean.getAlt();
mMovieName = movieDetailBean.getTitle();
transformData(movieDetailBean);
}
});
addSubscription(get);
}
/**
* 异步线程转换数据
*/
private void transformData(final MovieDetailBean movieDetailBean) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < movieDetailBean.getDirectors().size(); i++) {
movieDetailBean.getDirectors().get(i).setType("导演");
}
for (int i = 0; i < movieDetailBean.getCasts().size(); i++) {
movieDetailBean.getCasts().get(i).setType("演员");
}
OneMovieDetailActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
setAdapter(movieDetailBean);
}
});
}
}).start();
}
/**
* 设置导演&演员adapter
*/
private void setAdapter(MovieDetailBean movieDetailBean) {
bindingContentView.xrvCast.setVisibility(View.VISIBLE);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(OneMovieDetailActivity.this);
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
bindingContentView.xrvCast.setLayoutManager(mLayoutManager);
bindingContentView.xrvCast.setPullRefreshEnabled(false);
bindingContentView.xrvCast.setLoadingMoreEnabled(false);
// 需加,不然滑动不流畅
bindingContentView.xrvCast.setNestedScrollingEnabled(false);
bindingContentView.xrvCast.setHasFixedSize(false);
MovieDetailAdapter mAdapter = new MovieDetailAdapter();
mAdapter.addAll(movieDetailBean.getDirectors());
mAdapter.addAll(movieDetailBean.getCasts());
bindingContentView.xrvCast.setAdapter(mAdapter);
}
@Override
protected void onRefresh() {
loadMovieDetail();
}
/**
* @param context activity
* @param positionData bean
* @param imageView imageView
*/
public static void start(Activity context, SubjectsBean positionData, ImageView imageView) {
Intent intent = new Intent(context, OneMovieDetailActivity.class);
intent.putExtra("bean", positionData);
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(context,
imageView, CommonUtils.getString(R.string.transition_movie_img));//与xml文件对应
ActivityCompat.startActivity(context, intent, options.toBundle());
}
}