package com.mugua.mgvideo.ui.common;
|
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.LinearLayout.LayoutParams;
|
import android.widget.ListView;
|
import android.widget.ProgressBar;
|
import android.widget.RadioButton;
|
import android.widget.RadioGroup;
|
import android.widget.RadioGroup.OnCheckedChangeListener;
|
import android.widget.Toast;
|
|
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.util.RefreshLayout;
|
import com.lcjian.library.util.common.DimenUtils;
|
import com.mugua.mgvideo.MGVideoAPI;
|
import com.mugua.mgvideo.R;
|
import com.mugua.mgvideo.ui.category.CategoryListAdapter;
|
import com.yeshi.base.entity.ad.AdPositionEnum;
|
import com.yeshi.base.utils.BeibeiConstant;
|
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.umeng.analytics.MobclickAgent;
|
import com.yeshi.base.entity.video.VideoInfo;
|
import com.yeshi.base.entity.video.VideoType;
|
import com.yeshi.base.utils.ad.AdUtil;
|
import com.yeshi.base.utils.ad.GDTConstant;
|
import com.yeshi.base.utils.http.BasicTextHttpResponseHandler;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import androidx.fragment.app.Fragment;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
|
public class VideosFragment extends Fragment implements
|
OnCheckedChangeListener, OnClickListener {
|
|
private RefreshLayout rl_video;
|
|
private ListView lv_video;
|
|
private CategoryListAdapter mGridVideoAdapter;
|
|
private List<VideoInfo> mVideoInfos;
|
|
private String mHomeType;
|
|
private String mVideoType;
|
|
private String mStarId;
|
|
private RadioGroup rg_category;
|
|
private RadioButton rb_most_new;
|
|
private RadioButton rb_most_hot;
|
|
private int mCurrentPage = 1;
|
|
private VideoType type;
|
View view;
|
|
private ImageView iv_download_failure;
|
|
private LinearLayout ll_videosfragment;
|
|
private Runnable getVideoRunnable = new Runnable() {
|
@Override
|
public void run() {
|
getVideoList();
|
}
|
};
|
|
|
public static VideosFragment newInstance(VideoType type) {
|
VideosFragment fragment = new VideosFragment();
|
Bundle bundle = new Bundle();
|
bundle.putSerializable("videotype", type);
|
fragment.setArguments(bundle);
|
return fragment;
|
}
|
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
MobclickAgent.onPageStart("分类详情页");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
MobclickAgent.onPageEnd("分类详情页");
|
}
|
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
Bundle savedInstanceState) {
|
view = inflater.inflate(R.layout.videos_activity, null);
|
super.onCreate(savedInstanceState);
|
rl_video = (RefreshLayout) view.findViewById(R.id.rl_video);
|
lv_video = (ListView) view.findViewById(R.id.lv_video);
|
rl_video.setOnLoadListener(new RefreshLayout.OnLoadListener() {
|
@Override
|
public void onLoad() {
|
mCurrentPage++;
|
getVideoList();
|
}
|
});
|
rl_video.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
mCurrentPage = 1;
|
if (AdUtil.getAdType(getContext(), AdPositionEnum.other) != null) {
|
loadAD();
|
} else {
|
getVideoList();
|
}
|
}
|
});
|
ll_videosfragment = (LinearLayout) view
|
.findViewById(R.id.ll_videosfragment);
|
iv_download_failure = (ImageView) view
|
.findViewById(R.id.iv_videosfragment_download_failure);
|
iv_download_failure.setOnClickListener(this);
|
|
type = (VideoType) getArguments().getSerializable("videotype");
|
|
rg_category = (RadioGroup) view.findViewById(R.id.rg_category);
|
rb_most_new = (RadioButton) view.findViewById(R.id.rb_most_new);
|
rb_most_hot = (RadioButton) view.findViewById(R.id.rb_most_hot);
|
|
int screenWidth = getActivity().getWindowManager().getDefaultDisplay()
|
.getWidth();
|
LinearLayout.LayoutParams params = new LayoutParams(screenWidth / 4, 10);
|
params.gravity = Gravity.CENTER_HORIZONTAL;
|
view.findViewById(R.id.v_1).setLayoutParams(params);
|
view.findViewById(R.id.v_2).setLayoutParams(params);
|
rg_category.setOnCheckedChangeListener(this);
|
|
mHomeType = getActivity().getIntent().getStringExtra("home_type");
|
mVideoType = getActivity().getIntent().getStringExtra("video_type");
|
mStarId = getActivity().getIntent().getStringExtra("star_id");
|
|
mHomeType = (mHomeType == null ? "" : mHomeType);
|
mVideoType = (mVideoType == null ? "" : mVideoType);
|
mStarId = (mStarId == null ? "" : mStarId);
|
lv_video = (ListView) view.findViewById(R.id.lv_video);
|
mVideoInfos = new ArrayList<VideoInfo>();
|
mGridVideoAdapter = new CategoryListAdapter(mVideoInfos,
|
rb_most_hot.getContext());
|
lv_video.addHeaderView(new View(getContext()));
|
ProgressBar pb = new ProgressBar(getContext());
|
rl_video.setFooter(pb);
|
int padding = DimenUtils.dipToPixels(8, getActivity());
|
lv_video.setPadding(padding, 0, padding, padding);
|
lv_video.setAdapter(mGridVideoAdapter);
|
rl_video.setRefreshing(true);
|
lv_video.postDelayed(new Runnable() {
|
|
@Override
|
public void run() {
|
|
if (AdUtil.getAdType(getContext(), AdPositionEnum.other) != null) {
|
loadAD();
|
} else {
|
getVideoList();
|
}
|
}
|
}, 200);
|
|
return view;
|
}
|
|
private void getVideoList() {
|
if (getActivity() == null) {
|
return;
|
}
|
SharedPreferences preferences = getActivity().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
MGVideoAPI.getVideoList(getActivity(), uid, mStarId, mHomeType,
|
type.getId(), String.valueOf(mCurrentPage), category_two + "",
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
ll_videosfragment.setVisibility(View.VISIBLE);
|
iv_download_failure.setVisibility(View.GONE);
|
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());
|
if (mCurrentPage == 1) {
|
mVideoInfos.clear();
|
}
|
if (adInfo != null)
|
mVideoInfos.add(adInfo);
|
mVideoInfos.addAll(videoInfos);
|
mGridVideoAdapter.notifyDataSetChanged();
|
// 需要添加广点通原生广告的时候执行以下条件语句,否则取消
|
if (videoInfos != null && videoInfos.size() == 30
|
&& AdUtil.getAdType(getContext(), AdPositionEnum.other) != null) {
|
loadAD();
|
}
|
if ((videoInfos == null || videoInfos.size() == 0)
|
&& mCurrentPage > 1) {
|
Toast.makeText(getActivity(), "没有更多了",
|
Toast.LENGTH_SHORT).show();
|
mCurrentPage--;
|
}
|
} else {
|
ll_videosfragment.setVisibility(View.GONE);
|
iv_download_failure.setVisibility(View.VISIBLE);
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString,
|
throwable);
|
ll_videosfragment.setVisibility(View.GONE);
|
iv_download_failure.setVisibility(View.VISIBLE);
|
}
|
|
@Override
|
public void onFinish() {
|
rl_video.setLoading(false);
|
rl_video.setRefreshing(false);
|
}
|
});
|
}
|
|
int category_two = 1;
|
|
@Override
|
public void onCheckedChanged(RadioGroup group, int checkedId) {
|
switch (checkedId) {
|
case R.id.rb_most_new:
|
category_two = 1;
|
mCurrentPage = 1;
|
view.findViewById(R.id.v_1).setVisibility(View.VISIBLE);
|
view.findViewById(R.id.v_2).setVisibility(View.GONE);
|
if (AdUtil.getAdType(getContext(), AdPositionEnum.other) != null) {
|
loadAD();
|
} else {
|
getVideoList();
|
}
|
|
break;
|
case R.id.rb_most_hot:
|
category_two = 2;
|
mCurrentPage = 1;
|
view.findViewById(R.id.v_1).setVisibility(View.GONE);
|
view.findViewById(R.id.v_2).setVisibility(View.VISIBLE);
|
if (AdUtil.getAdType(getContext(), AdPositionEnum.other) != null) {
|
loadAD();
|
} else {
|
getVideoList();
|
}
|
break;
|
|
default:
|
break;
|
}
|
}
|
|
@Override
|
public void onClick(View v) {
|
|
switch (v.getId()) {
|
case R.id.iv_videosfragment_download_failure:
|
mCurrentPage = 1;
|
getVideoList();
|
break;
|
|
default:
|
break;
|
}
|
}
|
|
/**
|
* 广点通原生广告
|
*/
|
|
VideoInfo adInfo;
|
|
private void loadAD() {
|
NativeExpressAD nativeExpressAD = new NativeExpressAD(getContext(), new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
|
GDTConstant.GDT_APP_ID, GDTConstant.GDT_TEMPLATE_SEARCH_RESULT, new NativeExpressAD.NativeExpressADListener() {
|
@Override
|
public void onADLoaded(final List<NativeExpressADView> list) {
|
if (list != null && list.size() > 0) {
|
VideoInfo videoInfo = new VideoInfo();
|
videoInfo.setAdView(list.get(0));
|
adInfo = videoInfo;
|
} else
|
adInfo = null;
|
lv_video.post(getVideoRunnable);
|
}
|
|
@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) {
|
adInfo = null;
|
lv_video.post(getVideoRunnable);
|
}
|
}); // 传入Activity
|
// 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选)
|
nativeExpressAD.setVideoOption(new VideoOption.Builder()
|
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
|
.setAutoPlayMuted(true) // 自动播放时为静音
|
.build()); //
|
nativeExpressAD.loadAD(1);
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
lv_video.removeCallbacks(getVideoRunnable);
|
}
|
}
|