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.graphics.Color;
|
import android.os.Build;
|
import android.os.Bundle;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
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.android.material.appbar.AppBarLayout;
|
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.hanju.video.app.util.ui.StatusBarUtil;
|
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 net.lucode.hackware.magicindicator.MagicIndicator;
|
import net.lucode.hackware.magicindicator.ViewPagerHelper;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView;
|
|
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;
|
SharedPreferences preferences;
|
private AQuery mAquery;
|
private MagicIndicator mMagicIndicator;
|
private DYNewsFragment mDYNewsFragment;
|
private NovelFragment mNovelFragment;
|
private AppBarLayout mAppBarLayout;
|
CoordinatorLayout mCoordinatorLayout;
|
private DiskLruCache cache;
|
|
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) {
|
mAquery = new AQuery(view);
|
mMagicIndicator = view.findViewById(R.id.magic_indicator);
|
pager = view.findViewById(R.id.pager_recomend_category);
|
mAquery.id(R.id.v_status_bar).height(StatusBarUtil.getStatusBarHeight(getActivity()), false);
|
mAppBarLayout = view.findViewById(R.id.abl_recommend);
|
mCoordinatorLayout = view.findViewById(R.id.cl_recommend);
|
}
|
|
private void init() {
|
adapter = new HomePageAdapter(
|
getChildFragmentManager());
|
pager.setAdapter(adapter);
|
pager.setOffscreenPageLimit(2);
|
CommonNavigator commonNavigator = new CommonNavigator(getActivity());
|
commonNavigator.setAdapter(navigatorAdapter);
|
commonNavigator.setAdjustMode(true);
|
mMagicIndicator.setNavigator(commonNavigator);
|
ViewPagerHelper.bind(mMagicIndicator, pager);
|
if (adapter.getCount() <= 1) {
|
mMagicIndicator.setVisibility(View.GONE);
|
} else {
|
pager.setCurrentItem(1);
|
}
|
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
@Override
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
}
|
|
@Override
|
public void onPageSelected(int position) {
|
mAppBarLayout.setExpanded(true);
|
}
|
|
@Override
|
public void onPageScrollStateChanged(int state) {
|
|
}
|
});
|
// getCategories();
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
initView(contentView);
|
init();
|
|
}
|
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
// 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);
|
}
|
|
class HomePageAdapter extends FragmentStatePagerAdapter {
|
private FragmentManager fm;
|
|
|
private List<Fragment> fragments = new ArrayList();
|
|
public HomePageAdapter(FragmentManager fm) {
|
super(fm);
|
this.fm = fm;
|
if (AdUtil.isCanInitCSJ()) {
|
mDYNewsFragment = new DYNewsFragment();
|
mNovelFragment = new NovelFragment(fm);
|
fragments.add(mNovelFragment);
|
fragments.add(mDYNewsFragment);
|
}
|
HomeNav homeNav = new HomeNav();
|
homeNav.setName("推荐");
|
homeNav.setDataKey("recommend");
|
homeNav.setDataType("recommend");
|
fragments.add(fragments.size() > 0 ? 1 : 0, RecommendFragment.newInstance(homeNav, 0 + ""));
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
return fragments.get(position);
|
}
|
|
@Override
|
public int getCount() {
|
return fragments.size();
|
}
|
|
|
@Nullable
|
@Override
|
public CharSequence getPageTitle(int position) {
|
if (fragments.size() > 1) {
|
switch (position) {
|
case 0:
|
return "小说";
|
case 1:
|
return "推荐";
|
case 2:
|
return "话题";
|
default:
|
return "";
|
}
|
} else {
|
return "推荐";
|
}
|
}
|
}
|
|
@Override
|
public void onClick(View view) {
|
switch (view.getId()) {
|
case R.id.iv_recommend_watch_history: {
|
startActivity(new Intent(getContext(),
|
WatchHistoryActivity.class));
|
}
|
break;
|
}
|
}
|
public void onEventMainThread(VideoType type) {
|
getCategories();
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
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")) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
categories.clear();
|
|
List<HomeNav> list = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<HomeNav>>() {
|
}.getType());
|
|
categories.addAll(list);
|
|
adapter.notifyDataSetChanged();
|
|
pager.setCurrentItem(0);
|
|
|
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();
|
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);
|
}
|
}
|
|
}
|
});
|
}
|
|
|
private CommonNavigatorAdapter navigatorAdapter = new CommonNavigatorAdapter() {
|
|
@Override
|
public int getCount() {
|
return adapter.getCount();
|
}
|
|
|
@Override
|
public IPagerTitleView getTitleView(final Context context, final int index) {
|
ColorTransitionPagerTitleView colorTransitionPagerTitleView = new ColorTransitionPagerTitleView(context) {
|
@Override
|
public void onSelected(int index, int totalCount) {
|
super.onSelected(index, totalCount);
|
|
setTextSize(20);
|
getPaint().setFakeBoldText(true);
|
}
|
|
@Override
|
public void onDeselected(int index, int totalCount) {
|
super.onDeselected(index, totalCount);
|
setTextSize(14);
|
getPaint().setFakeBoldText(false);
|
}
|
};
|
colorTransitionPagerTitleView.setNormalColor(Color.parseColor("#80FFFFFF"));
|
colorTransitionPagerTitleView.setSelectedColor(Color.WHITE);
|
colorTransitionPagerTitleView.setText(adapter.getPageTitle(index));
|
colorTransitionPagerTitleView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
pager.setCurrentItem(index);
|
}
|
});
|
colorTransitionPagerTitleView.setTextSize(14);
|
|
|
return colorTransitionPagerTitleView;
|
}
|
|
//此为tab指示器回调
|
@Override
|
public IPagerIndicator getIndicator(Context context) {
|
LinePagerIndicator indicator = new LinePagerIndicator(context);
|
indicator.setLineHeight(0);
|
indicator.setColors(Color.WHITE);
|
indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
|
indicator.setRoundRadius(5);
|
return indicator;
|
}
|
};
|
|
}
|