package com.hanju.video.app.ui.main;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.os.Build;
|
import android.os.Bundle;
|
|
import androidx.annotation.Nullable;
|
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentStatePagerAdapter;
|
import androidx.viewpager.widget.ViewPager;
|
|
import android.view.View;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.androidquery.AQuery;
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.hanju.video.app.entity.ad.AdPositionEnum;
|
import com.hanju.video.app.entity.video.HomeNav;
|
import com.hanju.video.app.ui.mine.DownloadActivity;
|
import com.hanju.lib.library.util.cache.DiskLruCache;
|
import com.hanju.lib.library.util.common.StorageUtils;
|
import com.hanju.lib.library.util.common.StringUtils;
|
import com.hanju.video.app.util.JsonUtil;
|
import com.hanju.video.app.util.ad.AdUtil;
|
import com.hanju.video.app.util.ad.CSJADConstant;
|
import com.hanju.video.app.util.ad.GDTADConstant;
|
import com.hanju.video.app.util.ad.IntertitialAdUtil;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.video.youth.util.YouthUtil;
|
import com.viewpagerindicator.MainTabPageIndicator;
|
import com.hanju.video.app.util.http.BasicTextHttpResponseHandler;
|
import com.hanju.video.app.util.http.HttpApiUtil;
|
import com.hanju.video.app.entity.user.NewComment;
|
import com.hanju.video.app.entity.video.VideoType;
|
import com.hanju.video.app.ui.MyRetainViewFragment;
|
import com.hanju.video.app.ui.login.LoginActivity;
|
import com.hanju.video.app.ui.login.PersonInfoActivity;
|
import com.hanju.video.app.ui.mine.BrowserActivity;
|
import com.hanju.video.app.ui.mine.SystemMessageActivity;
|
import com.hanju.video.app.ui.mine.WatchHistoryActivity;
|
import com.hanju.video.app.ui.recommend.RecommendFragment;
|
import com.hanju.video.app.ui.recommend.SearchActivity;
|
import com.hanju.video.app.R;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Random;
|
|
import de.greenrobot.event.EventBus;
|
|
/**
|
* Created by weikou2015 on 2017/9/14.
|
*/
|
|
public class HomeFragment extends MyRetainViewFragment implements View.OnClickListener {
|
/*
|
* viewpager定义
|
*/
|
HomePageAdapter adapter;
|
ViewPager pager;
|
MainTabPageIndicator indicator;
|
TextView tv_search;
|
ImageView iv_msg_dot;
|
|
FrameLayout fl_indicator;
|
|
|
private DiskLruCache cache;
|
|
private boolean isLogin = false;
|
|
SharedPreferences preferences;//
|
|
private AQuery mAquery;
|
|
public HomeFragment() {
|
super(HomeFragment.class.getClass().getName());
|
}
|
|
|
@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();
|
}
|
|
preferences = getContext().getSharedPreferences("user",
|
Context.MODE_PRIVATE);
|
}
|
|
|
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;
|
}
|
|
|
private void initView(View view) {
|
view.findViewById(R.id.iv_activity_main_download).setOnClickListener(this);
|
view.findViewById(R.id.ll_activity_main_search).setOnClickListener(this);
|
view.findViewById(R.id.iv_recommend_watch_history).setOnClickListener(this);
|
view.findViewById(R.id.ll_activity_login).setOnClickListener(this);
|
view.findViewById(R.id.iv_recommend_download).setOnClickListener(this);
|
|
|
tv_search = view.findViewById(R.id.tv_activity_main_search);
|
iv_msg_dot = view.findViewById(R.id.iv_msg_dot);
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
getActivity().setTheme(R.style.AppTabThemeMain);
|
mAquery = new AQuery(contentView);
|
initView(contentView);
|
pager = contentView.findViewById(R.id.pager_recomend_category);
|
fl_indicator = contentView.findViewById(R.id.fl_indicator);
|
if (fl_indicator.getChildCount() > 0) {
|
fl_indicator.removeAllViews();
|
}
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
if (cache != null) {
|
snapshot = cache.get(getKey("getCategories"));
|
if (snapshot != null) {
|
List<HomeNav> list = JsonUtil.videoGson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<HomeNav>>() {
|
}.getType());
|
categories.addAll(list);
|
}
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
|
adapter = new HomePageAdapter(
|
getChildFragmentManager(), categories);
|
pager.setAdapter(adapter);
|
indicator = new MainTabPageIndicator(
|
pager.getContext());
|
indicator.setViewPager(pager, 0);
|
fl_indicator.addView(indicator);
|
if (categories.size() > 1) {
|
fl_indicator.setVisibility(View.VISIBLE);
|
} else {
|
fl_indicator.setVisibility(View.GONE);
|
}
|
getHotSearch();
|
getCategories();
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
isLogin = !StringUtils.isEmpty(preferences.getString("LoginUid", ""));
|
EventBus.getDefault().register(this);
|
|
if (YouthUtil.isOpenYouthMode(getContext())) {
|
mAquery.id(R.id.ll_top).visibility(View.GONE);
|
} else {
|
mAquery.id(R.id.ll_top).visibility(View.VISIBLE);
|
}
|
}
|
|
@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<HomeNav> categories = new ArrayList<>();
|
|
|
int count = 1;
|
|
private void getCategories() {
|
SharedPreferences preferences = pager.getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
HttpApiUtil.getChoiceClass(pager.getContext(), uid,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
|
categories.clear();
|
|
List<HomeNav> list = JsonUtil.videoGson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<HomeNav>>() {
|
}.getType());
|
|
categories.addAll(list);
|
|
if (categories.size() > 1) {
|
fl_indicator.setVisibility(View.VISIBLE);
|
} else {
|
fl_indicator.setVisibility(View.GONE);
|
}
|
|
adapter.notifyDataSetChanged();
|
indicator.notifyDataSetChanged();
|
|
pager.setCurrentItem(0);
|
|
|
count++;
|
try {
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getCategories"));
|
editor.set(0, JsonUtil.videoGson.toJson(categories));
|
editor.commit();
|
} catch (IOException e) {
|
}
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
AdUtil.AD_TYPE adType = AdUtil.getAdType(getContext(), AdPositionEnum.homeInterstitial);
|
if (adType != null) {
|
//Android 5.0
|
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH) {
|
adType = AdUtil.AD_TYPE.gdt;
|
}
|
|
if (adType == AdUtil.AD_TYPE.csj) {
|
IntertitialAdUtil.showAd(getActivity(), adType, CSJADConstant.HOME_INTERSTITIALAD);
|
} else {
|
IntertitialAdUtil.showAd(getActivity(), adType, GDTADConstant.HOME_INTERSTITIALAD);
|
}
|
}
|
|
}
|
});
|
}
|
|
class HomePageAdapter extends FragmentStatePagerAdapter {
|
private FragmentManager fm;
|
|
private List<HomeNav> mlist;
|
|
private Map<Integer, Fragment> fragments = new HashMap<>();
|
|
public HomePageAdapter(FragmentManager fm, List<HomeNav> list) {
|
super(fm);
|
this.fm = fm;
|
this.mlist = list;
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
Fragment fragment = RecommendFragment.newInstance(mlist.get(position), position + "");
|
return fragment;
|
}
|
|
@Override
|
public int getCount() {
|
return mlist.size();
|
}
|
|
// @Override
|
// public Object instantiateItem(ViewGroup container, int position) {
|
// Fragment fragment = (Fragment) super.instantiateItem(container, position);
|
// fm.beginTransaction().show(fragment).commit();
|
// return fragment;
|
// }
|
//
|
// @Override
|
// public void destroyItem(ViewGroup container, int position, Object object) {
|
// Fragment fragment = fragments.get(position);
|
// try {
|
// fm.beginTransaction().hide(fragment).commit();
|
// } catch (Exception e) {
|
//
|
// }
|
// }
|
|
@Nullable
|
@Override
|
public CharSequence getPageTitle(int position) {
|
return mlist.get(position).getName();
|
}
|
}
|
|
@Override
|
public void onClick(View view) {
|
switch (view.getId()) {
|
case R.id.iv_recommend_watch_history: {
|
startActivity(new Intent(getContext(),
|
WatchHistoryActivity.class));
|
}
|
break;
|
case R.id.iv_activity_main_download: {
|
Toast.makeText(getContext(), "暂时不支持下载!", Toast.LENGTH_LONG).show();
|
}
|
break;
|
case R.id.ll_activity_main_search: {
|
Intent intent = new Intent(getContext(), SearchActivity.class);
|
intent.putExtra("key", tv_search.getText().toString());
|
startActivity(intent);
|
}
|
break;
|
case R.id.nat:
|
openMyselfSpread();
|
break;
|
|
case R.id.iv_recommend_download:
|
startActivity(new Intent(getContext(), DownloadActivity.class));
|
break;
|
case R.id.mine_rl_head:
|
Intent intent = new Intent();
|
if (isLogin) {// 登录后 逻辑
|
intent.setClass(getContext(), PersonInfoActivity.class);
|
} else {// 登录前
|
intent.setClass(getContext(), LoginActivity.class);
|
}
|
startActivity(intent);
|
break;
|
// case R.id.rl_mine_message:
|
// openMsg();
|
// break;
|
|
|
}
|
}
|
|
/**
|
* 打开顶部自我推广
|
*/
|
private void openMyselfSpread() {
|
SharedPreferences preferences = getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
SharedPreferences.Editor editor = preferences.edit();
|
editor.putLong("latestAdtime", System.currentTimeMillis());
|
editor.commit();
|
Intent intent = new Intent(getContext(), BrowserActivity.class);
|
intent.putExtra("url", preferences.getString("tuiguang_add", ""));
|
startActivity(intent);
|
}
|
|
/**
|
* 打开消息页面
|
*/
|
private void openMsg() {
|
EventBus.getDefault().post(new NewComment(true));
|
SharedPreferences preferences = getContext().getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
SharedPreferences.Editor editor = preferences.edit();
|
editor.putBoolean("isCheckedCom", false);
|
|
editor.commit();
|
startActivity(new Intent(getContext(),
|
SystemMessageActivity.class));
|
}
|
|
private void getHotSearch() {
|
SharedPreferences preferences = getContext().getSharedPreferences("user",
|
Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
HttpApiUtil.getHotSearch(getContext(), uid,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder()
|
.create();
|
List<String> hotSearchs = gson.fromJson(jsonObject
|
.getJSONObject("Data").getJSONArray("data")
|
.toString(), new TypeToken<List<String>>() {
|
}.getType());
|
if (hotSearchs != null && hotSearchs.size() > 0) {
|
Random random = new Random();
|
int p = random.nextInt(hotSearchs.size());
|
tv_search.setText(hotSearchs.get(p));
|
}
|
}
|
}
|
});
|
}
|
|
private String getDay(long time) {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
String date = format.format(new Date(time));
|
return date;
|
}
|
|
|
}
|