package com.pan.simplepicture.view.fragment;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.pan.simplepicture.ConstantValue;
import com.pan.simplepicture.R;
import com.pan.simplepicture.adapter.BaseRecyclerAdapter;
import com.pan.simplepicture.inter.AbsVideoRes;
import com.pan.simplepicture.inter.LoadingState;
import com.pan.simplepicture.inter.OnRetryListener;
import com.pan.simplepicture.inter.ParallaxViewController;
import com.pan.simplepicture.presenter.PicturePresenter;
import com.pan.simplepicture.presenter.VideoPresenter;
import com.pan.simplepicture.utils.MD5Utils;
import com.pan.simplepicture.utils.NetWorkUtil;
import com.pan.simplepicture.view.holder.ListOfVideoHolder;
import com.pan.simplepicture.view.holder.VideoHolder;
import com.pan.simplepicture.view.impl.IVideoView;
import com.pan.simplepicture.widget.LoadingView;
import java.util.List;
import java.util.TreeMap;
import butterknife.Bind;
public class VideoFragment extends BaseFragment implements IVideoView, SwipeRefreshLayout.OnRefreshListener {
@Bind(R.id.recycler_view)
public RecyclerView mRecyclerView;
private BaseRecyclerAdapter mAdapter;
private boolean canLoadMore = true;
@Override
public void setAdapter(List<? extends AbsVideoRes> list) {
if (mRecyclerView == null) return;
pageNo = list.size();
if (pageNo < pageSize)
canLoadMore = false;
if (mAdapter == null) {
if (params.containsKey("res_Type") && params.get("res_Type").equals("1")) {
mAdapter = new BaseRecyclerAdapter(list, R.layout.cell_item, ListOfVideoHolder.class).setTag(R.id.tag_first, mController);
} else {
mAdapter = new BaseRecyclerAdapter(list, R.layout.res_item, VideoHolder.class).setTag(R.id.tag_first, mController).setTag(R.id.tag_second, mType);
}
mRecyclerView.setAdapter(mAdapter);
} else {
if ((mAdapter.getItem(0) == null) && (list.size() == 0))
return;
if ((mAdapter.getItem(0) == null) || (list.size() == 0) || (!((AbsVideoRes) mAdapter.getItem(0)).getVideoId().equals(list.get(0).getVideoId())))
mAdapter.setmDatas(list);
}
}
@Override
public void loadMore(List<? extends AbsVideoRes> list) {
if (mRecyclerView != null && mAdapter != null && list != null) {
if (list.size() < pageSize)
canLoadMore = false;
if (list.size() <= 0) {
return;
}
mAdapter.addAll(list);
pageNo += list.size();
}
}
@Override
public void onRefreshComplete() {
if (mSwipeRefreshLayout != null && mSwipeRefreshLayout.isRefreshing())
mSwipeRefreshLayout.setRefreshing(false);
}
public void onLoadMoreComplete() {
isLoadingMore = false;
}
private int mType = 0;
public void setType(int mType) {
this.mType = mType;
}
@Override
public VideoPresenter getPresenter() {
return new VideoPresenter();
}
private ParallaxViewController mController;
private LinearLayoutManager mLinearLayoutManager;
@Bind(R.id.swipe_refresh_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.fl_loading)
LoadingView fl_loading;
@Override
public void showSuccess() {
fl_loading.setVisibility(View.GONE);
mSwipeRefreshLayout.setVisibility(View.VISIBLE);
}
@Override
public void showEmpty() {
mSwipeRefreshLayout.setVisibility(View.GONE);
fl_loading.setVisibility(View.VISIBLE);
fl_loading.setState(LoadingState.STATE_EMPTY);
}
@Override
public boolean checkNet() {
return NetWorkUtil.isNetWorkConnected(mContext);
}
@Override
public void showFaild() {
mSwipeRefreshLayout.setVisibility(View.GONE);
fl_loading.setVisibility(View.VISIBLE);
fl_loading.setState(LoadingState.STATE_ERROR);
}
@Override
public void showNoNet() {
mSwipeRefreshLayout.setVisibility(View.GONE);
fl_loading.setVisibility(View.VISIBLE);
fl_loading.setState(LoadingState.STATE_NO_NET);
}
@Override
public void bindView(Bundle savedInstanceState) {
fl_loading.withLoadedEmptyText("≥﹏≤ , 连条毛都没有 !").withEmptyIco(R.drawable.movie_store_empty_view).withBtnEmptyEnnable(false)
.withErrorIco(R.drawable.ic_chat_empty).withLoadedErrorText("(῀( ˙᷄ỏ˙᷅ )῀)ᵒᵐᵍᵎᵎᵎ,我家程序猿跑路了 !").withbtnErrorText("去找回她!!!")
.withLoadedNoNetText("你挡着信号啦o( ̄ヘ ̄o)☞ᗒᗒ 你走").withNoNetIco(R.drawable.ic_chat_empty).withbtnNoNetText("网弄好了,重试")
.withLoadingIco(R.drawable.loading_animation).withLoadingText("加载中...").withOnRetryListener(new OnRetryListener() {
@Override
public void onRetry() {
onRefresh();
}
}).build();
mSwipeRefreshLayout.setOnRefreshListener(this);
mLinearLayoutManager = new LinearLayoutManager(mRecyclerView.getContext());
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mController = new ParallaxViewController() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (canLoadMore)
VideoFragment.this.onScrolled(recyclerView, dx, dy);
}
};
mController.registerImageParallax(mRecyclerView);
if (mPresenter == null || !(mPresenter instanceof VideoPresenter)) {
return;
}
params = new TreeMap<String, String>();
switch (mType) {
//全球动画精选
case 0:
long time = System.currentTimeMillis() / 1000L;
params.put("api_key", "android");
params.put("timestamp", String.valueOf(time));
params.put("page", String.valueOf(page));
String str = MD5Utils.getAccessToken(params);
params.put("access_token", str);
((VideoPresenter) mPresenter).getATVideos(params);
break;
//最美创意
case 1:
params.put("deviceModel", Build.MODEL.replace(" ", "+"));
params.put("plamformVersion", Build.VERSION.RELEASE);
params.put("deviceName", Build.MANUFACTURER);
params.put("plamform", "Android");
params.put("pageNo", String.valueOf(pageNo));
params.put("pageSize", String.valueOf(pageSize));
params.put("imieId", MD5Utils.MD5(ConstantValue.str + ConstantValue.str));
((VideoPresenter) mPresenter).getBeautifulVideos(params);
break;
//游戏CG
case 2:
params.put("res_Type", "0");
params.put("type", "&2&");
params.put("orderBy", "createdAt");
params.put("pageSize", String.valueOf(pageSize));
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
//电影预告花絮
case 3:
params.put("res_Type", "0");
params.put("type", "&3&");
params.put("orderBy", "createdAt");
params.put("pageSize", String.valueOf(pageSize));
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
case 8:
params.put("res_Type", "0");
params.put("type", "&8&");
params.put("orderBy", "createdAt");
params.put("pageSize", String.valueOf(pageSize));
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
case 9:
params.put("res_Type", "0");
params.put("type", "&9&");
params.put("orderBy", "createdAt");
params.put("pageSize", String.valueOf(pageSize));
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
//mv
case 4:
params.put("res_Type", "0");
params.put("type", "&4&");
params.put("orderBy", "createdAt");
params.put("pageSize", String.valueOf(pageSize));
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
//院线电影
case 5:
params.put("client_id", "20230302");
params.put("pagesize", String.valueOf(pageSize));
params.put("page", String.valueOf(page));
((VideoPresenter) mPresenter).getCinemaMovies(params);
break;
//电影
case 6:
params.put("type", "3");
params.put("pagesize", String.valueOf(pageSize));
params.put("page", String.valueOf(page));
((VideoPresenter) mPresenter).getMovies(params);
break;
//热门电影
case 7:
params.put("type", "2");
params.put("pagesize", String.valueOf(pageSize));
params.put("page", String.valueOf(page));
((VideoPresenter) mPresenter).getMovies(params);
break;
//轻松学堂
case 100:
//音乐舞蹈
case 101:
//访谈演讲
case 102:
//娱乐八卦
case 103:
//恶搞配音
case 104:
//搞笑
case 105:
//吐槽
case 106:
//体育
case 107:
//汽车
case 108:
//脱口秀
case 109:
//生活
case 110:
//动漫
case 111:
//微电影
case 112:
//记录片
case 113:
params.put("type", "&" + mType + "&");
params.put("res_Type", "1");
params.put("orderBy", "play_Count");
params.put("pageSize", String.valueOf(pageSize));
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
}
}
@Override
public int getContentLayout() {
return R.layout.list_fragment;
}
private TreeMap<String, String> params;
private int page = 1;
private int pageNo = 0;
private final int pageSize = 10;
@Override
public void onRefresh() {
switch (mType) {
case 0:
page = 1;
params.clear();
long time = System.currentTimeMillis() / 1000L;
params.put("api_key", "android");
params.put("timestamp", String.valueOf(time));
params.put("page", String.valueOf(page));
String str = MD5Utils.getAccessToken(params);
params.put("access_token", str);
((VideoPresenter) mPresenter).getATVideos(params);
break;
case 1:
pageNo = 0;
params.put("pageNo", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getBeautifulVideos(params);
break;
//游戏CG
case 2:
//电影预告花絮
case 3:
//mv
case 8:
case 9:
case 4:
pageNo = 0;
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
//院线电影
case 5:
page = 1;
params.put("page", String.valueOf(page));
((VideoPresenter) mPresenter).getCinemaMovies(params);
break;
//电影
case 6:
//热门电影
case 7:
page = 1;
params.put("page", String.valueOf(page));
((VideoPresenter) mPresenter).getMovies(params);
break;
//轻松学堂
case 100:
//音乐舞蹈
case 101:
//访谈演讲
case 102:
//娱乐八卦
case 103:
//恶搞配音
case 104:
//搞笑
case 105:
//吐槽
case 106:
//体育
case 107:
//汽车
case 108:
//脱口秀
case 109:
//生活
case 110:
//动漫
case 111:
//微电影
case 112:
//记录片
case 113:
pageNo = 0;
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
}
}
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int lastVisibleItem = mLinearLayoutManager.findLastVisibleItemPosition();
int totalItemCount = mLinearLayoutManager.getItemCount();
//lastVisibleItem >= totalItemCount - 2 表示剩下2个item自动加载,各位自由选择
// dy>0 表示向下滑动
if (!isLoadingMore && lastVisibleItem >= totalItemCount - 2 && dy > 0) {
isLoadingMore = true;
loadPage();//这里多线程也要手动控制isLoadingMore
}
}
private void loadPage() {
switch (mType) {
case 0:
params.clear();
long time = System.currentTimeMillis() / 1000L;
params.put("api_key", "android");
params.put("timestamp", String.valueOf(time));
params.put("page", String.valueOf(++page));
String str = MD5Utils.getAccessToken(params);
params.put("access_token", str);
((VideoPresenter) mPresenter).getATVideos(params);
break;
case 1:
params.put("pageNo", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getBeautifulVideos(params);
break;
//游戏
case 2:
//电影预告花絮
case 3:
case 9:
case 8:
//mv
case 4:
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
//院线电影
case 5:
params.put("page", String.valueOf(++page));
((VideoPresenter) mPresenter).getCinemaMovies(params);
break;
//电影
case 6:
//热门电影
case 7:
params.put("page", String.valueOf(++page));
((VideoPresenter) mPresenter).getMovies(params);
break;
//轻松学堂
case 100:
//音乐舞蹈
case 101:
//访谈演讲
case 102:
//娱乐八卦
case 103:
//恶搞配音
case 104:
//搞笑
case 105:
//吐槽
case 106:
//体育
case 107:
//汽车
case 108:
//脱口秀
case 109:
//生活
case 110:
//动漫
case 111:
//微电影
case 112:
//记录片
case 113:
params.put("skip", String.valueOf(pageNo));
((VideoPresenter) mPresenter).getYouKuVideos(params);
break;
}
}
private boolean isLoadingMore;
}