package com.weikou.beibeivideo.ui.main;
|
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.SharedPreferences;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.os.Bundle;
|
import android.support.annotation.Nullable;
|
import android.support.v4.app.Fragment;
|
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentPagerAdapter;
|
import android.support.v4.app.FragmentStatePagerAdapter;
|
import android.support.v4.view.ViewPager;
|
import android.util.Log;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
|
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.cache.DiskLruCache;
|
import com.lcjian.library.util.common.StorageUtils;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.viewpagerindicator.MTabPageIndicator;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.entity.VideoType;
|
import com.weikou.beibeivideo.ui.dialog.UserProtocolDialog;
|
import com.weikou.beibeivideo.ui.recommend.RecommendFragment;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.util.UserUtil;
|
import com.yeshi.buwanshequ.R;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import de.greenrobot.event.EventBus;
|
|
/**
|
* Created by weikou2015 on 2017/9/14.
|
*/
|
|
public class RecommendCategoryFragment extends RetainViewFragment {
|
/*
|
* viewpager定义
|
*/
|
GoogleMusicAdapter adapter;
|
ViewPager pager;
|
MTabPageIndicator indicator;
|
|
FrameLayout fl_indicator;
|
|
private DiskLruCache cache;
|
|
|
@Override
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
try {
|
cache = DiskLruCache.open(
|
new File(StorageUtils.getCacheDirectory(getContext())
|
.toString(), "http"), getVersionNum(getContext()),
|
1, 1024 * 1024);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
showProtocol();
|
}
|
|
|
private void showProtocol() {
|
String data = "感谢您对布丸影视大全一直以来的信任!<br>";
|
data += "我们依照新的监管要求条例更新了";
|
data += String.format("<a href='%s'>《隐私政策》</a>和", BeibeiConstant.PRIVACY_POLICY);
|
data += String.format("<a href='%s'>《用户协议》</a>", BeibeiConstant.USER_AGREEMENT);
|
data += "为采取相应安全保护措施,尽力保护您的个人信息安全可控,特向你说明如下:<br>" +
|
"1、您在使用布丸影视大全各项产品或服务时,将会提供与具体功能相关的个人信息(可能涉及帐号、位置、存储等信息)。<br>" +
|
"2、您可以随时查询、更正、删除您的个人信息,我们也提供账户注销的渠道。<br>" +
|
"3、未经您的再次同意,我们不会将上述信息用于您未授权的其他用途或目的。<br>" +
|
"4、未经监护人同意,我们不会收集使用14周岁以下(含14周岁)未成年人个人信息,且不会利用其信息推送新闻、时政信息、广告等定向推送活动。";
|
|
if (!UserUtil.isAgreeUserProtocol(getContext())) {
|
new UserProtocolDialog.Builder(getActivity()).setNegativeButton("不同意", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
getActivity().finish();
|
}
|
}).setPositiveButton("同意", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
UserUtil.agreeUserProtocol(getContext());
|
}
|
}).setData(data).create().show();
|
}
|
}
|
|
public static int getVersionNum(Context context) {
|
try {
|
PackageInfo pi = context.getPackageManager().getPackageInfo(
|
context.getPackageName(), 0);
|
return pi.versionCode;
|
} catch (PackageManager.NameNotFoundException e) {
|
e.printStackTrace();
|
return 1;
|
}
|
}
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_recommend_category;
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
pager = contentView.findViewById(R.id.pager_recomend_category);
|
fl_indicator = contentView.findViewById(R.id.fl_indicator);
|
pager = contentView.findViewById(R.id.pager_recomend_category);
|
if (fl_indicator.getChildCount() > 0) {
|
fl_indicator.removeAllViews();
|
}
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
if (cache != null) {
|
snapshot = cache.get(getKey("getCategories"));
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE).create();
|
List<VideoType> list = gson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<VideoType>>() {
|
}.getType());
|
// categories.addAll(list);
|
}
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
|
adapter = new GoogleMusicAdapter(
|
getChildFragmentManager(), categories);
|
pager.setAdapter(adapter);
|
indicator = new MTabPageIndicator(
|
pager.getContext());
|
indicator.setViewPager(pager, 0);
|
fl_indicator.addView(indicator);
|
|
getCategories();
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
EventBus.getDefault().register(this);
|
}
|
|
@Override
|
public void onSaveInstanceState(Bundle outState) {
|
outState.putString("flash back", "show");
|
super.onSaveInstanceState(outState);
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
EventBus.getDefault().unregister(this);
|
}
|
|
public void onEventMainThread(VideoType type) {
|
getCategories();
|
}
|
|
List<VideoType> categories = new ArrayList<>();
|
|
|
int count = 1;
|
|
private void getCategories() {
|
SharedPreferences preferences = pager.getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getChoiceClass(pager.getContext(), uid,
|
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();
|
categories.clear();
|
|
List list = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<VideoType>>() {
|
}.getType());
|
|
list=list.subList(0,1);
|
categories.addAll(list);
|
adapter.notifyDataSetChanged();
|
indicator.notifyDataSetChanged();
|
|
count++;
|
try {
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getCategories"));
|
editor.set(0, gson.toJson(categories));
|
editor.commit();
|
} catch (IOException e) {
|
}
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
}
|
});
|
}
|
|
class GoogleMusicAdapter extends FragmentStatePagerAdapter {
|
|
private List<VideoType> mlist;
|
|
FragmentManager fm;
|
|
public GoogleMusicAdapter(FragmentManager fm, List<VideoType> list) {
|
super(fm);
|
this.mlist = list;
|
this.fm = fm;
|
}
|
|
@Override
|
public int getItemPosition(Object object) {
|
return POSITION_NONE;
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
return RecommendFragment.newInstance(mlist.get(position), position + "");
|
}
|
|
@Override
|
public CharSequence getPageTitle(int position) {
|
return mlist.get(position).getName();
|
}
|
|
@Override
|
public int getCount() {
|
return mlist.size();
|
}
|
|
@Override
|
public void finishUpdate(ViewGroup container) {
|
try {
|
super.finishUpdate(container);
|
} catch (NullPointerException nullPointerException) {
|
Log.d("NullPointerException", "Catch the NullPointerException in FragmentPagerAdapter.finishUpdate");
|
}
|
}
|
}
|
}
|