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 = "感谢您对布丸影视大全一直以来的信任!
"; data += "我们依照新的监管要求条例更新了"; data += String.format("《隐私政策》和", BeibeiConstant.PRIVACY_POLICY); data += String.format("《用户协议》", BeibeiConstant.USER_AGREEMENT); data += "为采取相应安全保护措施,尽力保护您的个人信息安全可控,特向你说明如下:
" + "1、您在使用布丸影视大全各项产品或服务时,将会提供与具体功能相关的个人信息(可能涉及帐号、位置、存储等信息)。
" + "2、您可以随时查询、更正、删除您的个人信息,我们也提供账户注销的渠道。
" + "3、未经您的再次同意,我们不会将上述信息用于您未授权的其他用途或目的。
" + "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 list = gson.fromJson( snapshot.getString(0), new TypeToken>() { }.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 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>() { }.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 mlist; FragmentManager fm; public GoogleMusicAdapter(FragmentManager fm, List 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"); } } } }