package com.tejia.lijin.app.ui.main;
|
|
import android.content.Context;
|
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.Nullable;
|
import com.google.android.material.appbar.AppBarLayout;
|
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentStatePagerAdapter;
|
import androidx.viewpager.widget.ViewPager;
|
import android.view.Gravity;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.FrameLayout;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.viewpagerindicator.TabPageIndicatorTrendsMainType;
|
import com.wpc.library.RetainViewFragment;
|
import com.wpc.library.okhttp.OkHttpUtils;
|
import com.wpc.library.util.cache.DiskLruCache;
|
import com.wpc.library.util.common.StorageUtils;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.entity.TrendsType;
|
import com.tejia.lijin.app.ui.trends.CollegeFragmet;
|
import com.tejia.lijin.app.ui.trends.SendCircleMiddleFragment;
|
import com.tejia.lijin.app.ui.trends.TrendsDoingsFragment;
|
import com.tejia.lijin.app.util.ToolUtil;
|
import com.tejia.lijin.app.util.umengCustomEvent.MainCustomEvent;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/7.
|
*/
|
|
public class TrendsTopFragment extends RetainViewFragment {
|
|
private FrameLayout fl_indicator;
|
private DiskLruCache cache;
|
/*
|
* viewpager定义
|
*/
|
// TrendsTypeAdapter adapter;
|
private ViewPager pager;
|
|
private String tag = "dynamic/getClass";
|
|
private AppBarLayout appbarlayout;
|
|
private Integer tabIndex = null;
|
|
@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();
|
}
|
}
|
|
/**
|
* 设置选择哪个导航栏
|
*
|
* @param index
|
*/
|
public void setTabIndex(Integer index) {
|
this.tabIndex = index;
|
}
|
|
private void changeTab() {
|
if (tabIndex != null && pager != null && pager.getAdapter() != null && tab_indicator != null && mList != null && mList.size() > 0) {
|
if (tabIndex > -1 && tabIndex < mList.size()) {
|
pager.setCurrentItem(tabIndex);
|
tabIndex = null;
|
}
|
}
|
}
|
|
private 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_trends_top;
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = getActivity().getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(Color.TRANSPARENT);
|
int result = 0;
|
int resourceId = getActivity().getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = getActivity().getResources().getDimensionPixelSize(resourceId);
|
}
|
//设置状态栏文字颜色及图标为深色
|
getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
contentView.findViewById(R.id.v_status_bar).setLayoutParams(params);
|
try {
|
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
|
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
|
field.setAccessible(true);
|
field.setInt(getActivity().getWindow().getDecorView(), Color.TRANSPARENT); //改为透明
|
} catch (Exception e) {
|
}
|
} else {
|
contentView.findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
}
|
getActivity().setTheme(R.style.AppTabDynamicMainNavTheme);
|
fl_indicator = contentView.findViewById(R.id.fl_indicator);
|
pager = contentView.findViewById(R.id.viewpager);
|
appbarlayout = contentView.findViewById(R.id.appbarlayout);
|
// getTrendsType();
|
MainCustomEvent.mainHome(fl_indicator.getContext());
|
getCache();
|
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
@Override
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
}
|
|
@Override
|
public void onPageSelected(final int position) {/**根据热销和活动开启滑动 否则关闭滑动*/
|
appbarlayout.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
if (mList != null && mList.size() > position) {
|
if (mList.get(position).getListSub() == null || mList.get(position).getListSub().size() == 0) {
|
ToolUtil.setAppBarScroll(false, appbarlayout);//关闭联动
|
appbarlayout.setFocusableInTouchMode(true);
|
appbarlayout.setFocusable(true);
|
} else {
|
ToolUtil.setAppBarScroll(true, appbarlayout);//开启联动
|
}
|
}
|
}
|
}, 100);
|
|
}
|
|
@Override
|
public void onPageScrollStateChanged(int state) {
|
}
|
});
|
if (mList != null && mList.size() > 0) {
|
if (mList.get(0).getListSub() == null || mList.get(0).getListSub().size() == 0) {
|
ToolUtil.setAppBarScroll(false, appbarlayout);//关闭联动
|
appbarlayout.setFocusableInTouchMode(true);
|
appbarlayout.setFocusable(true);
|
} else {
|
ToolUtil.setAppBarScroll(true, appbarlayout);//开启联动
|
}
|
} else
|
ToolUtil.setAppBarScroll(true, appbarlayout);//初始化开启滑动
|
}
|
|
private void getCache() {
|
if (cache != null) {
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getTrendsType"));
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<TrendsType> list = gson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<TrendsType>>() {
|
}.getType());
|
mList = list;
|
if (adapter == null) {
|
adapter = new TrendsTypeAdapter(
|
getChildFragmentManager());
|
pager.setAdapter(adapter);
|
} else {
|
adapter.notifyDataSetChanged();
|
}
|
|
if (tab_indicator == null) {
|
tab_indicator = new TabPageIndicatorTrendsMainType(fl_indicator.getContext());
|
tab_indicator.setScaleRate(1.25f);
|
}
|
|
tab_indicator.setViewPager(pager);
|
|
if (fl_indicator.getChildCount() > 0)
|
fl_indicator.removeAllViews();
|
if (mList.size() > 3)
|
fl_indicator.addView(tab_indicator);
|
else {
|
TextView textView = new TextView(getContext());
|
textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
textView.setText("发现");
|
textView.setTextSize(20);
|
textView.setGravity(Gravity.CENTER);
|
textView.setTextColor(Color.parseColor("#333333"));
|
fl_indicator.addView(textView);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
getTrendsType();
|
}
|
|
List<TrendsType> mList = new ArrayList<>();
|
TrendsTypeAdapter adapter;
|
TabPageIndicatorTrendsMainType tab_indicator;
|
|
private void getTrendsType() {
|
ShoppingApi.getTrendsClass(fl_indicator.getContext(), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optInt("code") == 0) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<TrendsType> types = gson.fromJson(jsonObject.optJSONObject("data")
|
.optJSONArray("list").toString(),
|
new TypeToken<List<TrendsType>>() {
|
}.getType());
|
mList = types;
|
if (adapter == null) {
|
adapter = new TrendsTypeAdapter(
|
getChildFragmentManager());
|
pager.setAdapter(adapter);
|
} else {
|
adapter.notifyDataSetChanged();
|
}
|
|
if (tab_indicator == null) {
|
tab_indicator = new TabPageIndicatorTrendsMainType(fl_indicator.getContext());
|
tab_indicator.setScaleRate(1.25f);
|
}
|
|
tab_indicator.setViewPager(pager);
|
|
if (fl_indicator.getChildCount() > 0)
|
fl_indicator.removeAllViews();
|
if (mList.size() > 3)
|
fl_indicator.addView(tab_indicator);
|
else {
|
TextView textView = new TextView(getContext());
|
textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
textView.setText("发圈");
|
textView.setTextSize(22);
|
textView.getPaint().setFakeBoldText(true);
|
textView.setTextColor(getResources().getColor(R.color.theme));
|
textView.setGravity(Gravity.CENTER);
|
fl_indicator.addView(textView);
|
}
|
//外部选择
|
changeTab();
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getTrendsType"));
|
editor.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("list").toString());
|
editor.commit();
|
}
|
}
|
});
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
class TrendsTypeAdapter extends FragmentStatePagerAdapter {
|
|
public TrendsTypeAdapter(FragmentManager fm) {
|
super(fm);
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
if (position == 0 && mList.get(position) != null && mList.get(position).getListSub() != null
|
&& mList.get(position).getListSub().size() > 0) {//热销
|
return SendCircleMiddleFragment.newInstance(mList.get(position));
|
} else if (mList.get(position) != null && mList.get(position).getId() == 5) {//活动
|
return TrendsDoingsFragment.newInstance(mList.get(position));
|
} else if (mList.get(position) != null && mList.get(position).getId() == 6) {//学院
|
return CollegeFragmet.newInstance(mList.get(position).getId());
|
} else {
|
return SendCircleMiddleFragment.newInstance(mList.get(position));
|
}
|
}
|
|
@Override
|
public CharSequence getPageTitle(int position) {
|
return mList.get(position % mList.size()).getName();
|
}
|
|
@Override
|
public int getCount() {
|
return mList.size();
|
}
|
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
OkHttpUtils.getInstance().cancelTag(tag);
|
}
|
}
|