package com.weikou.beibeivideo.ui.recommend;
|
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.support.v4.view.PagerAdapter;
|
import android.support.v4.view.ViewPager;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.widget.AbsListView;
|
import android.widget.FrameLayout;
|
import android.widget.ListView;
|
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.lcjian.library.RetainViewFragment;
|
import com.lcjian.library.util.SingleToast;
|
import com.qq.e.ads.cfg.VideoOption;
|
import com.qq.e.ads.nativ.ADSize;
|
import com.qq.e.ads.nativ.NativeExpressAD;
|
import com.qq.e.ads.nativ.NativeExpressADView;
|
import com.qq.e.comm.util.AdError;
|
import com.viewpagerindicator.CirclePageIndicator;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.entity.CategoryRecommendVideo;
|
import com.weikou.beibeivideo.entity.HomeType;
|
import com.weikou.beibeivideo.entity.VideoInfo;
|
import com.weikou.beibeivideo.entity.VideoType;
|
import com.weikou.beibeivideo.ui.category.CategoryRecommedTopAdapter;
|
import com.weikou.beibeivideo.ui.category.CategoryRecommendAdapter;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.util.DimenUtils;
|
import com.yeshi.buwanshequ.R;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import de.greenrobot.event.EventBus;
|
|
/**
|
* 推荐分类
|
* Created by weikou2015 on 2016/8/18.
|
*/
|
public class CategoryRecommendFragment extends RetainViewFragment {
|
|
private ViewPager vp_recommend;
|
|
private CirclePageIndicator indicator_recommend;
|
|
private CategoryRecommendAdapter adapter;
|
|
private String mHomeType;
|
|
private VideoType type;
|
|
private String id;
|
|
private SwipeRefreshLayout rl_cate_recommed;
|
|
private List<VideoInfo> mVideoInfos;
|
|
private ListView gv_moives;
|
|
CategoryRecommedTopAdapter topAdapter;
|
|
private boolean isBottom = false;
|
|
FrameLayout fl_ad;
|
|
public static CategoryRecommendFragment newInstance(VideoType type, String id) {
|
CategoryRecommendFragment fragment = new CategoryRecommendFragment();
|
Bundle bundle = new Bundle();
|
bundle.putSerializable("videotype", type);
|
bundle.putString("id", id);
|
fragment.setArguments(bundle);
|
return fragment;
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
View view = LayoutInflater.from(getContext()).inflate(R.layout.item_cate_recommend_top, null);
|
rl_cate_recommed = contentView.findViewById(R.id.rl_cate_recommend);
|
|
vp_recommend = view
|
.findViewById(R.id.vp_recommend);
|
gv_moives = contentView.findViewById(R.id.gv_cate_recommend);
|
indicator_recommend = view
|
.findViewById(R.id.indicator_recommend);
|
topAdapter = new CategoryRecommedTopAdapter(homeAds, getContext());
|
vp_recommend.setAdapter(topAdapter);
|
indicator_recommend.setViewPager(vp_recommend);
|
vp_recommend.postDelayed(mAutoScroller, 2000);
|
|
gv_moives.addHeaderView(view);
|
|
mHomeType = getActivity().getIntent().getStringExtra("home_type");
|
type = (VideoType) getArguments().getSerializable("videotype");
|
id = (String) getArguments().get("id");
|
mHomeType = (mHomeType == null ? "" : mHomeType);
|
|
rl_cate_recommed.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
rl_cate_recommed.setRefreshing(true);
|
EventBus.getDefault().post(new VideoType());
|
loadAD3();
|
getHomeAd();
|
refreshAd();
|
}
|
});
|
|
fl_ad = new FrameLayout(rl_cate_recommed.getContext());
|
AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView
|
.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT);
|
fl_ad.setPadding(0, DimenUtils.dip2px(rl_cate_recommed.getContext(), 10), 0, 0);
|
fl_ad.setLayoutParams(params);
|
|
gv_moives.addFooterView(fl_ad);
|
|
mVideoInfos = new ArrayList<>();
|
adapter = new CategoryRecommendAdapter(mVideoInfos, getActivity().getApplicationContext());
|
gv_moives.setAdapter(adapter);
|
rl_cate_recommed.setRefreshing(true);
|
gv_moives.setOnScrollListener(new AbsListView.OnScrollListener() {
|
@Override
|
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
|
}
|
|
@Override
|
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
if (mVideoInfos.size() > 1 && firstVisibleItem + visibleItemCount < totalItemCount) {
|
isBottom = false;
|
}
|
if (mVideoInfos.size() > 1 && !isBottom && firstVisibleItem + visibleItemCount >= totalItemCount) {
|
SingleToast.showToast(rl_cate_recommed.getContext(), "没有更多了!");
|
isBottom = true;
|
}
|
}
|
});
|
|
gv_moives.post(new Runnable() {
|
@Override
|
public void run() {
|
loadAD3();
|
getHomeAd();
|
refreshAd();
|
}
|
});
|
|
}
|
|
@Override
|
public void onSaveInstanceState(Bundle outState) {
|
outState.putString("flash back", "show");
|
super.onSaveInstanceState(outState);
|
}
|
|
private boolean otherOver = false;
|
List<CategoryRecommendVideo> homeAds = new ArrayList<>();
|
|
public void getHomeAd() {
|
SharedPreferences preferences = gv_moives.getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getCategoryBanner(gv_moives.getContext(), uid, id,
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder()
|
.setPrettyPrinting()
|
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<CategoryRecommendVideo> list = gson.fromJson(jsonObject
|
.getJSONObject("Data").getJSONArray("data")
|
.toString(), new TypeToken<List<CategoryRecommendVideo>>() {
|
}.getType());
|
if (homeAds.size() > 0)
|
homeAds.clear();
|
homeAds.addAll(list);
|
topAdapter.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
if (otherOver) {
|
rl_cate_recommed.setRefreshing(false);
|
otherOver = false;
|
} else {
|
otherOver = true;
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
}
|
});
|
}
|
|
private Runnable mAutoScroller = new Runnable() {
|
|
@Override
|
public void run() {
|
PagerAdapter adapter = vp_recommend.getAdapter();
|
if (adapter != null && adapter.getCount() != 0) {
|
vp_recommend.setCurrentItem((vp_recommend.getCurrentItem() + 1)
|
% adapter.getCount(), true);
|
}
|
vp_recommend.postDelayed(this, 5000);
|
}
|
};
|
|
public void getVideoList() {
|
SharedPreferences preferences = gv_moives.getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getCategoryRecommend(gv_moives.getContext(), uid, type.getId(),
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<VideoInfo> videoInfos = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<VideoInfo>>() {
|
}.getType());
|
|
mVideoInfos.clear();
|
|
mVideoInfos.addAll(videoInfos);
|
|
if (adInfo != null && mVideoInfos != null && mVideoInfos.size() > 0) {
|
mVideoInfos.set(0, adInfo);
|
}
|
adapter.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString,
|
throwable);
|
}
|
|
@Override
|
public void onFinish() {
|
if (otherOver) {
|
rl_cate_recommed.setRefreshing(false);
|
otherOver = false;
|
} else {
|
otherOver = true;
|
}
|
}
|
});
|
}
|
|
VideoInfo adInfo;
|
|
// 1.加载广告,先设置加载上下文环境和条件
|
private void loadAD3() {
|
NativeExpressAD nativeExpressAD = new NativeExpressAD(rl_cate_recommed.getContext(), new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
|
BeibeiConstant.GDT_ID, BeibeiConstant.GDT_RECOMMEND_CATEGORY_MIN_NATIVE, new NativeExpressAD.NativeExpressADListener() {
|
@Override
|
public void onADLoaded(List<NativeExpressADView> list) {
|
if (null != list && list.size() > 0) {
|
adInfo = new VideoInfo();
|
adInfo.setAdView(list.get(0));
|
}
|
handler.sendEmptyMessage(0);
|
}
|
|
@Override
|
public void onRenderFail(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onRenderSuccess(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADExposure(NativeExpressADView nativeExpressADView) {
|
}
|
|
@Override
|
public void onADClicked(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADClosed(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADLeftApplication(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADOpenOverlay(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onNoAD(AdError adError) {
|
handler.sendEmptyMessage(0);
|
}
|
}); // 传入Activity
|
// 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选)
|
nativeExpressAD.setVideoOption(new VideoOption.Builder()
|
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
|
.setAutoPlayMuted(true) // 自动播放时为静音
|
.build()); //
|
nativeExpressAD.loadAD(2);
|
}
|
|
Handler handler = new Handler() {
|
@Override
|
public void handleMessage(Message msg) {
|
super.handleMessage(msg);
|
getVideoList();
|
}
|
};
|
|
// 1.加载广告,先设置加载上下文环境和条件
|
private void refreshAd() {
|
NativeExpressAD nativeExpressAD = new NativeExpressAD(rl_cate_recommed.getContext(), new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
|
BeibeiConstant.GDT_ID, BeibeiConstant.GDT_RECOMMEND_CATEGORY_NATIVE, new NativeExpressAD.NativeExpressADListener() {
|
@Override
|
public void onADLoaded(final List<NativeExpressADView> list) {
|
gv_moives.post(new Runnable() {
|
@Override
|
public void run() {
|
if (list.size() > 0) {
|
fl_ad.removeAllViews();
|
NativeExpressADView adView = list.get(0);
|
adView.render();
|
fl_ad.addView(adView);
|
}
|
}
|
});
|
|
}
|
|
@Override
|
public void onRenderFail(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onRenderSuccess(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADExposure(NativeExpressADView nativeExpressADView) {
|
}
|
|
@Override
|
public void onADClicked(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADClosed(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADLeftApplication(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADOpenOverlay(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onNoAD(AdError adError) {
|
|
}
|
}); // 传入Activity
|
// 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选)
|
nativeExpressAD.setVideoOption(new VideoOption.Builder()
|
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
|
.setAutoPlayMuted(true) // 自动播放时为静音
|
.build()); //
|
nativeExpressAD.loadAD(2);
|
}
|
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_cate_recommend;
|
}
|
|
}
|