package com.tejia.lijin.app.ui.main;
|
|
import android.animation.Animator;
|
import android.animation.AnimatorListenerAdapter;
|
import android.animation.ObjectAnimator;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
import android.graphics.Color;
|
import android.graphics.Typeface;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.provider.Settings;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.alibaba.baichuan.trade.biz.login.AlibcLogin;
|
import com.alibaba.baichuan.trade.biz.login.AlibcLoginCallback;
|
import com.alibaba.fastjson.JSONArray;
|
import com.bumptech.glide.Glide;
|
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.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.ShoppingApplication;
|
import com.tejia.lijin.app.entity.EntityFather;
|
import com.tejia.lijin.app.entity.FirstCategory;
|
import com.tejia.lijin.app.entity.TrendsType;
|
import com.tejia.lijin.app.entity.UserInfo;
|
import com.tejia.lijin.app.entity.eventbus.UserProtocolEvent;
|
import com.tejia.lijin.app.entity.hongbao.LijinSendInfo;
|
import com.tejia.lijin.app.sqlite.HomeConfigSQHelper;
|
import com.tejia.lijin.app.ui.BrandRebate.BrandFragment;
|
import com.tejia.lijin.app.ui.category.CategoryTypeActivity;
|
import com.tejia.lijin.app.ui.dialog.RecommendHbDialog;
|
import com.tejia.lijin.app.ui.dialog.RedPacketHintDialog;
|
import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog;
|
import com.tejia.lijin.app.ui.dialog.UserGuideDialog;
|
import com.tejia.lijin.app.ui.dialog.UserProtocolDialog;
|
import com.tejia.lijin.app.ui.gmtemplate.GmTemplateContentFragment;
|
import com.tejia.lijin.app.ui.invite.ShareBrowserActivity;
|
import com.tejia.lijin.app.ui.mine.ShoppingTrolleyActivity;
|
import com.tejia.lijin.app.ui.recommend.RecommendCategoryFragment;
|
import com.tejia.lijin.app.ui.recommend.SearchActivity;
|
import com.tejia.lijin.app.ui.subview.HomeRecommendNavIndicator;
|
import com.tejia.lijin.app.updateApp.UpdateApp;
|
import com.tejia.lijin.app.util.GlideCircleTransform;
|
import com.tejia.lijin.app.util.JumpActivityUtil;
|
import com.tejia.lijin.app.util.SystemParamsUtil;
|
import com.tejia.lijin.app.util.ToolUtil;
|
import com.tejia.lijin.app.util.ui.HomeUIUtil;
|
import com.tejia.lijin.app.util.umengCustomEvent.CategoryCustomEvent;
|
import com.tejia.lijin.app.util.umengCustomEvent.MainCustomEvent;
|
import com.tejia.lijin.app.util.umengCustomEvent.SearchCustomEvent;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.umeng.analytics.MobclickAgent;
|
import com.wpc.library.RetainViewFragment;
|
import com.wpc.library.content.ConnectivityChangeHelper;
|
import com.wpc.library.okhttp.OkHttpUtils;
|
import com.wpc.library.util.NetUtils;
|
import com.wpc.library.util.SystemCommon;
|
import com.wpc.library.util.cache.DiskLruCache;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.wpc.library.util.common.StorageUtils;
|
import com.wpc.library.util.common.StringUtils;
|
import com.tejia.lijin.app.ui.recommend.RecommendFragment;
|
|
import net.lucode.hackware.magicindicator.MagicIndicator;
|
import net.lucode.hackware.magicindicator.ViewPagerHelper;
|
import net.lucode.hackware.magicindicator.buildins.UIUtil;
|
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.ClipPagerTitleView;
|
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.CommonPagerTitleView;
|
|
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.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
|
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 de.greenrobot.event.EventBus;
|
|
import static android.content.Context.MODE_PRIVATE;
|
|
/**
|
* Created by weikou2015 on 2017/12/7.
|
*/
|
|
public class RecommendTopFragment extends RetainViewFragment implements View.OnClickListener, MainActivity.MyTouchListener {
|
|
|
private LinearLayout ll_no_net, ll_no_data, ll_request_failture;
|
private ConnectivityChangeHelper mChangeHelper;
|
private FrameLayout fl_search_content;
|
private RelativeLayout ll_recommend_content;
|
|
private MagicIndicator magic_indicator;
|
|
//上次请求homeConfig的uid
|
private Long lastRquestHomeConfigUid = null;
|
|
/*
|
* viewpager定义
|
*/
|
CategoryTopAdapter adapter;
|
ViewPager pager;
|
ShapeLoadingDialog pd = null;
|
|
private DiskLruCache cache;
|
private boolean isCache = false;
|
private int clickState = 0;
|
//热门功能
|
private ImageView recommend_top_img;
|
|
|
//福利底部提醒
|
private FrameLayout fl_fuli;
|
private ImageView iv_fuli_portrait;
|
private TextView tv_fuli_title;
|
private TextView tv_fuli_sub_title;
|
private TextView tv_time_h, tv_time_m, tv_time_s;
|
|
|
String tag1 = "config/getHomeConfig";
|
String tag2 = "navbar/getHomeItems";
|
String tag3 = "navbar/changeSex";
|
String tag4 = "customer/getuserinfoNew";
|
String tag5 = "dynamic/getClass";
|
String tag6 = "dynamic/getList";
|
String tag7 = "brand/getClass";
|
String tag8 = "brand/getShopList";
|
String tag9 = "brand/getHistory";
|
String tag10 = "msg/getHomeMsgListNew";
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_recommend_top;
|
}
|
|
@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();
|
}
|
// Log.e("mResult", "首页onCreate");
|
}
|
|
@Override
|
public void onDestroyView() {
|
super.onDestroyView();
|
OkHttpUtils.getInstance().cancelTag(tag1);
|
OkHttpUtils.getInstance().cancelTag(tag2);
|
OkHttpUtils.getInstance().cancelTag(tag3);
|
OkHttpUtils.getInstance().cancelTag(tag4);
|
OkHttpUtils.getInstance().cancelTag(tag5);
|
OkHttpUtils.getInstance().cancelTag(tag6);
|
OkHttpUtils.getInstance().cancelTag(tag7);
|
OkHttpUtils.getInstance().cancelTag(tag8);
|
OkHttpUtils.getInstance().cancelTag(tag9);
|
OkHttpUtils.getInstance().cancelTag(tag10);
|
}
|
|
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;
|
}
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
@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) {
|
e.printStackTrace();
|
}
|
} else {
|
if (contentView.findViewById(R.id.v_status_bar) != null)
|
contentView.findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
}
|
|
contentView.findViewById(R.id.tv_course).setOnClickListener(this);
|
recommend_top_img = contentView.findViewById(R.id.recommend_top_img);//热门功能
|
fl_search_content = contentView.findViewById(R.id.fl_search_content);
|
fl_search_content.setOnClickListener(this);
|
recommend_top_img.setOnClickListener(this);
|
/**
|
* 热门活动长按删除
|
*/
|
recommend_top_img.setOnLongClickListener(new View.OnLongClickListener() {
|
@Override
|
public boolean onLongClick(View v) {
|
SharedPreferences.Editor editor = getContext().getSharedPreferences("guide", MODE_PRIVATE).edit();
|
// .getBoolean("longdelete", false)
|
editor.putBoolean("longdelete", true);//设置长按删除
|
editor.commit();
|
recommend_top_img.setVisibility(View.GONE);
|
Toast.makeText(ll_no_data.getContext(), "感谢使用,删除成功", Toast.LENGTH_LONG).show();
|
return false;
|
}
|
});
|
|
ll_recommend_content = contentView.findViewById(R.id.ll_recommend_content);
|
magic_indicator = contentView.findViewById(R.id.magic_indicator);
|
pager = contentView.findViewById(R.id.viewpager);
|
|
ll_no_net = contentView.findViewById(R.id.ll_no_net);
|
ll_no_data = contentView.findViewById(R.id.ll_no_data);
|
ll_request_failture = contentView.findViewById(R.id.ll_request_failture);
|
contentView.findViewById(R.id.tv_net_setting).setOnClickListener(this);
|
contentView.findViewById(R.id.tv_refresh).setOnClickListener(this);
|
mChangeHelper = new ConnectivityChangeHelper(ll_recommend_content.getContext(),
|
new ConnectivityChangeHelper.OnConnectivityChangeListener() {
|
|
@Override
|
public void onNetworkUnAvailable() {
|
if (mList.size() == 0)
|
requestState(3);
|
}
|
|
@Override
|
public void onNetworkAvailable() {
|
requestState(0);
|
if (mList.size() == 0 || isCache) {
|
getHomeNavbar();
|
}
|
}
|
});
|
|
ll_no_data.setOnClickListener(this);
|
|
initFuliFloat(contentView);
|
|
MainCustomEvent.mainHome(getContext());
|
loadCacheData();
|
getTrendsType();//缓存动态标题
|
getTab();//缓存品牌标题
|
getMessage();
|
|
//viewpager滑动监听
|
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
@Override
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
}
|
|
@Override
|
public void onPageSelected(int position) {
|
//首页精选+未长按删除+服务返回显示
|
if (position == 0 && !isTestingUser() && hotFucion && !hotFuctionLink.equals("")) {
|
if (recommend_top_img != null) {
|
recommend_top_img.setVisibility(View.VISIBLE);
|
}
|
} else {
|
if (recommend_top_img != null) {
|
recommend_top_img.setVisibility(View.GONE);
|
}
|
}
|
}
|
|
@Override
|
public void onPageScrollStateChanged(int state) {
|
}
|
});
|
|
|
/** 触摸事件的注册 */
|
((MainActivity) getActivity()).registerMyTouchListener(this);
|
|
|
//app更新检测
|
new UpdateApp(getActivity(), getResources().getString(R.string.update_key)).getUpdateInfo(new UpdateApp.UpdateJudgeCallback() {
|
|
@Override
|
public void onSuccess(boolean show) {
|
|
}
|
|
@Override
|
public void closeUpdate(boolean close) {
|
|
}
|
|
@Override
|
public void onFinish() {
|
getHomeConfig();
|
}
|
}, false);//强制检测更新-否.
|
|
//设置背景色
|
contentView.findViewById(R.id.apl_search).setBackground(HomeUIUtil.getHomeTopBg(getContext()));
|
magic_indicator.setBackground(HomeUIUtil.getHomeTopBg(getContext()));
|
|
}
|
|
CommonNavigator commonNavigator = null;
|
|
private void loadCacheData() {
|
if (cache != null) {
|
getActivity().setTheme(R.style.AppTabTheme1);
|
isCache = false;
|
requestState(0);
|
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getFirstCategory"));
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
final List<FirstCategory> list = gson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<FirstCategory>>() {
|
}.getType());
|
//获取性别
|
sex = ll_recommend_content.getContext().getSharedPreferences("user",
|
MODE_PRIVATE).getInt("sex", 0);
|
|
if (mList.size() > 0)
|
mList.clear();
|
FirstCategory category = new FirstCategory();
|
category.setName("精选");
|
mList.add(category);
|
mList.addAll(list);
|
loadHomeNavData();
|
requestState(0);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
|
}
|
|
private CommonNavigatorAdapter n1 = new CommonNavigatorAdapter() {
|
|
@Override
|
public int getCount() {
|
return mList == null ? 0 : mList.size();
|
}
|
|
@Override
|
public IPagerTitleView getTitleView(final Context context, final int index) {
|
CommonPagerTitleView commonPagerTitleView = new CommonPagerTitleView(getContext());
|
//设置自定义布局文件及view赋值
|
commonPagerTitleView.setContentView(R.layout.item_recommend_nav);
|
commonPagerTitleView.setHovered(false);
|
final TextView tvTitle = commonPagerTitleView.findViewById(R.id.tv_title);
|
tvTitle.setHighlightColor(context.getResources().getColor(android.R.color.transparent));
|
tvTitle.setText(mList.get(index).getName());
|
tvTitle.setBackground(null);
|
|
//tab切换监听
|
commonPagerTitleView.setOnPagerTitleChangeListener(new CommonPagerTitleView.OnPagerTitleChangeListener() {
|
@Override
|
public void onSelected(int index, int totalCount) {
|
tvTitle.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
|
}
|
|
@Override
|
public void onDeselected(int index, int totalCount) {
|
tvTitle.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
|
}
|
|
@Override
|
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
|
|
}
|
|
@Override
|
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
|
|
}
|
});
|
|
//tab单个item点击事件监听
|
commonPagerTitleView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
pager.setCurrentItem(index);
|
}
|
});
|
|
return commonPagerTitleView;
|
}
|
|
//此为tab指示器回调
|
@Override
|
public IPagerIndicator getIndicator(Context context) {
|
int height = magic_indicator.getLayoutParams().height; //UIUtil.dip2px(context, 40);
|
HomeRecommendNavIndicator indicator = new HomeRecommendNavIndicator(context);
|
float navigatorHeight = DimenUtils.sp2px(context, 25); //context.getResources().getDimension(R.dimen.dp_130);
|
float borderWidth = UIUtil.dip2px(context, 1);
|
float lineHeight = navigatorHeight - 2 * borderWidth;
|
indicator.setLineHeight(lineHeight);
|
indicator.setRoundRadius(lineHeight / 2);
|
indicator.setXOffset(UIUtil.dip2px(context, 5));
|
indicator.setYOffset((height - navigatorHeight) / 2);
|
indicator.setColors(Color.parseColor("#FFFFFF"));
|
return indicator;
|
}
|
};
|
|
|
private CommonNavigatorAdapter n2 = new CommonNavigatorAdapter() {
|
|
@Override
|
public int getCount() {
|
return mList == null ? 0 : mList.size();
|
}
|
|
@Override
|
public IPagerTitleView getTitleView(Context context, final int index) {
|
ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);
|
clipPagerTitleView.setText(mList.get(index).getName());
|
clipPagerTitleView.setTextColor(Color.parseColor("#FFFFFF"));
|
clipPagerTitleView.setClipColor(Color.WHITE);
|
clipPagerTitleView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
pager.setCurrentItem(index);
|
}
|
});
|
return clipPagerTitleView;
|
}
|
|
//此为tab指示器回调
|
@Override
|
public IPagerIndicator getIndicator(Context context) {
|
int height = magic_indicator.getLayoutParams().height; //UIUtil.dip2px(context, 40);
|
LinePagerIndicator indicator = new LinePagerIndicator(context);
|
float navigatorHeight = DimenUtils.sp2px(context, 25); //context.getResources().getDimension(R.dimen.dp_130);
|
float borderWidth = UIUtil.dip2px(context, 1);
|
float lineHeight = navigatorHeight - 2 * borderWidth;
|
indicator.setLineHeight(lineHeight);
|
indicator.setRoundRadius(lineHeight / 2);
|
indicator.setYOffset((height - navigatorHeight) / 2);
|
indicator.setColors(Color.parseColor("#bc2a2a"));
|
return indicator;
|
}
|
};
|
|
|
private void loadHomeNavData() {
|
if (adapter == null) {
|
adapter = new CategoryTopAdapter(
|
getChildFragmentManager());
|
pager.setAdapter(adapter);
|
pager.setOffscreenPageLimit(0);
|
pager.setCurrentItem(0);
|
} else {
|
adapter.notifyDataSetChanged();
|
}
|
|
|
if (commonNavigator == null) {
|
commonNavigator = new CommonNavigator(getContext());
|
commonNavigator.setAdapter(n1);
|
//设置给magicIndicator
|
magic_indicator.setNavigator(commonNavigator);
|
ViewPagerHelper.bind(magic_indicator, pager);
|
} else {
|
commonNavigator.notifyDataSetChanged();
|
}
|
|
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
MobclickAgent.onPageStart("精选");
|
mChangeHelper.registerReceiver();
|
SharedPreferences sp = ll_recommend_content.getContext()
|
.getSharedPreferences("user", MODE_PRIVATE);
|
|
isChange = false;
|
ll_no_data.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
if (mList.size() == 0) {
|
getHomeNavbar();
|
}
|
if (couponUrl.equals("")) {
|
}
|
}
|
}, 1000);
|
|
boolean isLogin = UserUtil.isLogin(getContext());
|
if (isLogin) {
|
getUserInfo(UserUtil.getUid(ShoppingApplication.application));
|
if (accountLogin && floatImgDetail != null) {//弹框需要登陆
|
accountLogin = false;
|
final String showTime = floatImgDetail.optString("showTime"); // everyday-每天显示 always-每次进来都显示
|
final String adid = floatImgDetail.optString("id"); // 唯一id
|
final boolean playSound = floatImgDetail.optBoolean("playSound");//是否播放音效
|
final HomeConfigSQHelper sqHelper = new HomeConfigSQHelper(ll_recommend_content.getContext());
|
//记录是everyday 每天打开 第一次打开时间
|
if (showTime.equalsIgnoreCase("everyday")) {
|
sqHelper.setShowTime(adid, System.currentTimeMillis() + "");//记录时间
|
}
|
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
final EntityFather info = gson.fromJson(floatImgDetail.toString(), new TypeToken<EntityFather>() {
|
}.getType());
|
if (clickState == 3) {
|
clickState = 0;
|
if (playSound)//播放声音
|
ToolUtil.getPlaySound(ll_recommend_content.getContext());
|
ToolUtil.setClickSpe(info, ll_recommend_content.getContext());
|
} else if (clickState == 4) {
|
clickState = 0;
|
//记录是everyday 每天打开 第一次打开时间
|
if (showTime.equalsIgnoreCase("everyday")) {
|
sqHelper.setShowTime(adid, System.currentTimeMillis() + "");//记录时间
|
}
|
if (playSound)//播放声音
|
ToolUtil.getPlaySound(ll_recommend_content.getContext());
|
ToolUtil.setClickSpe(info, ll_recommend_content.getContext());
|
}
|
}
|
}
|
|
if (isLogin && lastRquestHomeConfigUid == null) {
|
getHomeConfig();
|
}
|
|
getSendingHongbao();
|
}
|
|
/*
|
*刷新分类
|
*/
|
private void refreshCategory(SharedPreferences sp) {
|
//通过判断数据是否相等,决定是否刷新数据
|
JSONArray jsonArray = new JSONArray();
|
for (int i = 0; i < mList.size(); i++) {
|
if (!StringUtils.isEmpty(mList.get(i).getId()))
|
jsonArray.add(mList.get(i).getId());
|
}
|
String ids = jsonArray.toJSONString();
|
String changeIds = sp.getString("myCategory", "");
|
if (!ids.equalsIgnoreCase(changeIds)) {
|
getHomeNavbar();
|
isChange = false;
|
}
|
}
|
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
mChangeHelper.unregisterReceiver();
|
MobclickAgent.onPageEnd("精选");
|
// Log.e("mResult", "首页onPause");
|
}
|
|
boolean isChange = false;
|
|
@Override
|
public void onClick(View view) {
|
clickState = 0;
|
switch (view.getId()) {
|
|
case R.id.fl_search_content:
|
SearchCustomEvent.searchHome(getContext());
|
Intent intent = new Intent(ll_recommend_content.getContext(), SearchActivity.class);
|
startActivity(intent);
|
break;
|
//分类
|
case R.id.iv_category_top:
|
CategoryCustomEvent.classHomeRight(getContext());
|
startActivity(new Intent(ll_no_data.getContext(), CategoryTypeActivity.class));
|
break;
|
case R.id.ll_no_data:
|
getHomeNavbar();
|
break;
|
case R.id.tv_net_setting:
|
ll_recommend_content.getContext().startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
//热门功能
|
case R.id.recommend_top_img:
|
//没有显示状态
|
if (recommend_top_img.getVisibility() != View.VISIBLE) {
|
return;
|
}
|
if (!top_img) {//收入状态 点击弹出
|
top_img = true;
|
translateAnimation(imgwidth, false);
|
//第一次点击
|
if (getContext().getSharedPreferences("guide", MODE_PRIVATE).getInt("homeonclick", 0) == 0) {
|
Toast.makeText(ll_no_data.getContext(), "滑出后长按可删除", Toast.LENGTH_LONG).show();
|
SharedPreferences.Editor editor = getContext().getSharedPreferences("guide", MODE_PRIVATE).edit();
|
editor.putInt("homeonclick", 1);//设置 已经点击过
|
editor.apply();
|
}
|
} else {//伸出状态 点击跳转
|
if (hotFuctionLink != null && !hotFuctionLink.equals("")) {
|
Intent intent1 = new Intent(getContext(), ShareBrowserActivity.class);
|
intent1.putExtra("url", hotFuctionLink);
|
startActivity(intent1);
|
}
|
}
|
break;
|
case R.id.tv_course:
|
//教程
|
startActivity(new Intent(getContext(), ShareBrowserActivity.class).putExtra("url", SystemParamsUtil.getNewerCourse(getContext())));
|
break;
|
default:
|
break;
|
}
|
}
|
|
//热门功能 伸缩状态 false缩 ture伸
|
private boolean top_img = false;
|
//热门功能 图片宽度
|
private float imgwidth = 270;
|
|
/**
|
* 平移
|
* 热门功能 弹出状态
|
* android:translationY 属性值意思就是在水平方向移动
|
* ...values: 动画过渡值,过渡值可以有一个到N个,如果是一个值的话,就默认是这个动画过渡值的结束值,
|
* 如果有N个值,动画就在这N个值之间过渡,本例中有三个过渡值"0.0f, 350.0f, 0f",意思就是从当前位置向右滑到350的位置,再滑到位置0,即初始位置。
|
*/
|
private void translateAnimation(float Width, boolean isTesting) {
|
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(recommend_top_img, "translationX", -(Width - 75), -23);
|
objectAnimator.setDuration(190);
|
objectAnimator.setRepeatCount(0);//重复次数
|
// objectAnimator.setRepeatMode(Animation.RESTART);//重复模式
|
objectAnimator.start();
|
//做5秒延时 隐藏
|
if (isTesting) {
|
// Log.e("eee", "做5秒延时 隐藏: ");
|
objectAnimator.addListener(new AnimatorListenerAdapter() {
|
@Override
|
public void onAnimationEnd(Animator animation) {
|
super.onAnimationEnd(animation);
|
//滑动 完成
|
ll_no_data.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
//显示状态 隐藏
|
if (recommend_top_img != null && recommend_top_img.getVisibility() == View.VISIBLE) {
|
recommend_top_img.setVisibility(View.GONE);
|
}
|
// Log.e("eee", "做5秒延时 隐藏完成: ");
|
}
|
}, 5000);
|
}
|
});
|
}
|
}
|
|
/**
|
* 平移
|
* 热门功能 收入状态
|
*/
|
private void translateAnimation2(float Width, int duration) {
|
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(recommend_top_img, "translationX", -(Width - 75));
|
objectAnimator.setDuration(duration);
|
objectAnimator.setRepeatCount(0);//重复次数
|
objectAnimator.start();
|
}
|
|
//手指按下的点为(x1, y1)手指离开屏幕的点为(x2, y2)
|
private float x1 = 0;
|
private float x2 = 0;
|
private float y1 = 0;
|
private float y2 = 0;
|
|
/**
|
* fragment 的触摸事件
|
*
|
* @param event
|
*/
|
@Override
|
public void onTouchEvent(MotionEvent event) {
|
//继承了Activity的onTouchEvent方法,直接监听点击事件
|
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
//当手指按下的时候
|
x1 = event.getX();
|
y1 = event.getY();
|
}
|
//手指滑动状态
|
if (event.getAction() == MotionEvent.ACTION_MOVE) {
|
//当手指滑动的时候
|
x2 = event.getX();
|
y2 = event.getY();
|
if (y1 - y2 > 50) { //向上滑
|
if (top_img) {//收入状态 点击弹出
|
top_img = false;
|
if (recommend_top_img != null && recommend_top_img.getVisibility() == View.VISIBLE) {
|
translateAnimation2(imgwidth, 85);
|
}
|
}
|
} else if (y2 - y1 > 50) {//向下滑
|
if (top_img) {//收入状态 点击弹出
|
top_img = false;
|
if (recommend_top_img != null && recommend_top_img.getVisibility() == View.VISIBLE) {
|
translateAnimation2(imgwidth, 85);
|
}
|
}
|
}
|
}
|
if (event.getAction() == MotionEvent.ACTION_UP) {
|
//当手指离开的时候
|
}
|
}
|
|
|
boolean accountLogin = false;
|
String couponUrl = "";
|
JSONObject floatImgDetail;
|
|
org.json.JSONArray adArray = null;
|
|
/**
|
* 显示用户协议与弹窗
|
*/
|
private void showUserProtocolAndGuide(String protocol,
|
final UserGuideDialog.FinishCallback callback) {
|
|
boolean agreeProtocol = UserUtil.isAgreeUserProtocol(getContext());
|
final boolean shownUserGuide = UserUtil.isShownUserGuide(getContext());
|
if (agreeProtocol) {//已经同意用户协议
|
if (shownUserGuide) {//用户引导已经显示
|
callback.onFinish();
|
} else {//需要显示用户引导
|
new UserGuideDialog.Builder(getActivity()).setFinishCallback(new UserGuideDialog.FinishCallback() {
|
@Override
|
public void onFinish() {
|
callback.onFinish();
|
}
|
}).create().show();
|
}
|
} else {
|
final UserProtocolDialog.Builder dialogBuilder = new UserProtocolDialog.Builder(getActivity()).setData(protocol).setNegativeButton(null, new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
getActivity().finish();
|
}
|
}).setPositiveButton(null, new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
UserUtil.agreeUserProtocol(getContext());
|
dialog.dismiss();
|
if (shownUserGuide) {//用户引导已经显示
|
callback.onFinish();
|
} else {//需要显示用户引导
|
new UserGuideDialog.Builder(getActivity()).setFinishCallback(new UserGuideDialog.FinishCallback() {
|
@Override
|
public void onFinish() {
|
callback.onFinish();
|
}
|
}).create().show();
|
}
|
}
|
});
|
dialogBuilder.create().show();
|
}
|
}
|
|
|
private void getHomeConfig() {
|
Long uid = UserUtil.getUid(ShoppingApplication.application);
|
if (uid != null)
|
lastRquestHomeConfigUid = uid;
|
ShoppingApi.getHomeConfig(ll_recommend_content.getContext(), uid, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optInt("code") == 0) {
|
JSONObject data = jsonObject.optJSONObject("data");
|
String protocol = data.optString("protocol");
|
adArray = data.optJSONArray("listAD");
|
if (!UserUtil.isAgreeUserProtocol(getContext()) || !UserUtil.isShownUserGuide(getContext())) {
|
showUserProtocolAndGuide(protocol, new UserGuideDialog.FinishCallback() {
|
@Override
|
public void onFinish() {
|
EventBus.getDefault().post(new UserProtocolEvent(true));
|
showAdDialog(adArray);
|
}
|
});
|
} else {
|
showAdDialog(adArray);
|
}
|
|
|
// SharedPreferences sp = ll_recommend_content.getContext().getSharedPreferences("user", Context.MODE_PRIVATE);
|
|
/***************** 热门功能 滑动展示*****/
|
//热门功能用户未长按删除 判断新老用户
|
if (!isTestingUser()) {
|
//0-新人 1-老人 新人显示热门功能
|
if (jsonObject.optJSONObject("data").getInt("userTimeType") == 0) {
|
recommend_top_img.setVisibility(View.VISIBLE);
|
//收入 热门弹窗
|
translateAnimation2(imgwidth, 0);
|
hotFucion = true;
|
} else {
|
//老人隐藏 (检测版本更新后 显示5秒)
|
//检测老用户是否更新版本
|
if (isTestingCode()) {//更新版本了
|
recommend_top_img.setVisibility(View.VISIBLE);
|
translateAnimation(imgwidth, true);//弹出 热门活动5秒后隐藏
|
} else {//隐藏热门活动
|
recommend_top_img.setVisibility(View.GONE);
|
}
|
hotFucion = false;
|
}
|
//当链接为空则 隐藏
|
if (jsonObject.optJSONObject("data").optString("hotFuctionLink") == null || jsonObject.optJSONObject("data").optString("hotFuctionLink").equals("")) {
|
//隐藏热门活动
|
recommend_top_img.setVisibility(View.GONE);
|
} else {
|
hotFuctionLink = jsonObject.optJSONObject("data").optString("hotFuctionLink");//热门功能链接
|
}
|
} else {//长按删除后 就一直隐藏
|
recommend_top_img.setVisibility(View.GONE);
|
hotFucion = false;
|
}
|
}
|
}
|
});
|
}
|
|
/**
|
* 显示广告弹窗
|
*
|
* @param array
|
*/
|
private void showAdDialog(org.json.JSONArray array) {
|
|
if (array != null) {
|
for (int i = 0; i < array.length(); i++) {
|
try {
|
floatImgDetail = (JSONObject) array.get(i);//传入 json数据
|
accountLogin = floatImgDetail.optBoolean("accountLogin");// 是否登录
|
String imgUrl = floatImgDetail.optString("img");// 悬浮图链接
|
JSONObject jumpDetail = floatImgDetail.optJSONObject("jumpDetail");
|
RedPacketHintDialog.Builder builder = new RedPacketHintDialog.Builder(getActivity());
|
builder.imgUrl(imgUrl);
|
if (jumpDetail == null) {
|
builder.setPositiveButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).setNegativeButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
} else {
|
final String showTime = floatImgDetail.optString("showTime"); // everyday-每天显示 always-每次进来都显示
|
final String adid = floatImgDetail.optString("id"); // 唯一id
|
final boolean playSound = floatImgDetail.optBoolean("playSound");//是否播放音效
|
final HomeConfigSQHelper sqHelper = new HomeConfigSQHelper(ll_recommend_content.getContext());
|
//查询上次打开时间
|
String localtime = sqHelper.getShowTime(adid);
|
//设置每天打开 并且 今天打开过
|
// if (showTime.equalsIgnoreCase("everyday") && isSameDay(new Date(System.currentTimeMillis()), new Date(sp.getLong("redPacketHint", 0l)))) {
|
if (showTime.equalsIgnoreCase("everyday") && isSameDay(new Date(System.currentTimeMillis()),
|
new Date(StringUtils.isEmpty(localtime) ? 0l : Long.valueOf(localtime)))) {
|
continue;
|
}
|
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
final EntityFather info = gson.fromJson(floatImgDetail.toString(), new TypeToken<EntityFather>() {
|
}.getType());
|
//百川打开方式
|
if (jumpDetail.optString("type").equalsIgnoreCase("baichuan")) {
|
builder.setPositiveButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
final boolean isLogin = UserUtil.isLogin(getContext());
|
if (accountLogin && !isLogin) {
|
clickState = 3;
|
UserUtil.jumpLogin(getContext());
|
dialog.dismiss();
|
} else {
|
//记录是everyday 每天打开 第一次打开时间
|
if (showTime.equalsIgnoreCase("everyday")) {
|
sqHelper.setShowTime(adid, System.currentTimeMillis() + "");//记录时间
|
}
|
if (playSound)//播放声音
|
ToolUtil.getPlaySound(ll_recommend_content.getContext());
|
clickState = 0;
|
ToolUtil.setClickSpe(info, ll_recommend_content.getContext());
|
dialog.dismiss();
|
}
|
}
|
}).imgUrl(imgUrl).setNegativeButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
//记录是everyday 每天打开 第一次打开时间
|
if (showTime.equalsIgnoreCase("everyday")) {
|
sqHelper.setShowTime(adid, System.currentTimeMillis() + "");//记录时间
|
}
|
accountLogin = false;
|
dialog.dismiss();
|
}
|
}).create();
|
} else {//直接展示
|
showHintDialog(builder, info, showTime, sqHelper, adid, playSound);
|
}
|
break;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
private String hotFuctionLink = "";//热门功能点击 跳转页面
|
private boolean hotFucion = false;//热门功能是否显示
|
|
/**
|
* 检测用户是否 长按删除热门活动
|
*
|
* @return true(长按删除) false(未删除)
|
*/
|
private boolean isTestingUser() {
|
//引导页 记录
|
if (getContext().getSharedPreferences("guide", MODE_PRIVATE).getBoolean("longdelete", false))
|
return true; //已经删除
|
else
|
return false;//未删除
|
}
|
|
/**
|
* 检测老用户 是否更新版本
|
*/
|
private boolean isTestingCode() {
|
//当前版本号
|
int versionCode = SystemCommon.getVersonCode(getContext());
|
//未更新版本
|
if (versionCode == getContext().getSharedPreferences("user", MODE_PRIVATE).getInt("versionCode", 0)) {
|
return false;
|
} else {//更新版本
|
SharedPreferences.Editor editor = getContext().getSharedPreferences("user", MODE_PRIVATE).edit();
|
editor.putInt("versionCode", versionCode);
|
editor.commit();
|
return true;
|
}
|
|
}
|
|
/**
|
* @param date 当前时间
|
* @param sameDate 上次打开时间
|
* @return
|
*/
|
private boolean isSameDay(Date date, Date sameDate) {
|
if (null == date || null == sameDate) {
|
return false;
|
}
|
|
Calendar nowCalendar = Calendar.getInstance();
|
nowCalendar.setTime(sameDate);
|
|
Calendar dateCalendar = Calendar.getInstance();
|
dateCalendar.setTime(date);
|
return nowCalendar.get(Calendar.YEAR) == dateCalendar.get(Calendar.YEAR)//四位年份
|
&& nowCalendar.get(Calendar.MONTH) == dateCalendar.get(Calendar.MONTH)//月份
|
&& nowCalendar.get(Calendar.DATE) == dateCalendar.get(Calendar.DATE);//一个月的日期
|
}
|
|
/**
|
* 展示提示Dialog
|
*
|
* @param builder
|
* @param info 图片信息
|
* @param showTime 显示时间 everyday always
|
* @param sqHelper 数据库查询
|
* @param adid ad唯一ID
|
* @param playSound 是否播放声音
|
*/
|
private void showHintDialog(RedPacketHintDialog.Builder builder, final EntityFather info,
|
final String showTime,
|
final HomeConfigSQHelper sqHelper, final String adid, final boolean playSound) {
|
|
builder.setPositiveButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
final boolean isLogin = UserUtil.isLogin(getContext());
|
if (accountLogin && !isLogin) {
|
clickState = 4;
|
UserUtil.jumpLogin(getContext());
|
dialog.dismiss();
|
} else {
|
// openActivity();
|
//记录是everyday 每天打开 第一次打开时间
|
if (showTime.equalsIgnoreCase("everyday")) {
|
sqHelper.setShowTime(adid, System.currentTimeMillis() + "");//记录时间
|
}
|
if (playSound)//播放声音
|
ToolUtil.getPlaySound(ll_recommend_content.getContext());
|
// ToolUtil.setClickSpe(info, ll_recommend_content.getContext());
|
|
JumpActivityUtil.jumpPage(getActivity(), info.getJumpDetail(), info.getParams());
|
dialog.dismiss();
|
}
|
|
}
|
}).setNegativeButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
//记录是everyday 每天打开 第一次打开时间
|
if (showTime.equalsIgnoreCase("everyday")) {
|
sqHelper.setShowTime(adid, System.currentTimeMillis() + "");//记录时间
|
}
|
accountLogin = false;
|
dialog.dismiss();
|
}
|
}).create();
|
}
|
|
List<FirstCategory> mList = new ArrayList<>();
|
|
/**
|
* 首页分类
|
*/
|
private void getHomeNavbar() {
|
if (pd == null) {
|
pd = new ShapeLoadingDialog.Builder(getContext()).build();
|
}
|
if (mList.size() == 0)
|
pd.show();
|
|
ShoppingApi.getHomeNavbar(ll_recommend_content.getContext(), UserUtil.getUid(ShoppingApplication.application),
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
getActivity().setTheme(R.style.AppTabTheme1);
|
isCache = false;
|
ll_recommend_content.setVisibility(View.VISIBLE);
|
ll_no_net.setVisibility(View.GONE);
|
ll_no_data.setVisibility(View.GONE);
|
|
sex = jsonObject.optJSONObject("data").optInt("sex");
|
|
ll_recommend_content.getContext().getSharedPreferences("user",
|
MODE_PRIVATE).edit().putInt("sex", sex).commit();
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
final List<FirstCategory> list = gson.fromJson(
|
jsonObject.optJSONObject("data")
|
.optJSONArray("listNavbar").toString(),
|
new TypeToken<List<FirstCategory>>() {
|
}.getType());
|
if (mList.size() > 0)
|
mList.clear();
|
FirstCategory category = new FirstCategory();
|
category.setName("精选");
|
mList.add(category);
|
mList.addAll(list);
|
|
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getFirstCategory"));
|
editor.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("listNavbar").toString());
|
editor.commit();
|
loadHomeNavData();
|
requestState(mList.size() == 0 ? 1 : 0);
|
} else {
|
requestState(2);
|
if (jsonObject != null && getContext() != null)
|
Toast.makeText(getContext(), jsonObject.optString("msg"), Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
if (cache != null) {
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getFirstCategory"));
|
} catch (Exception e) {
|
|
}
|
if (snapshot == null && mList.size() == 0) {
|
if (NetUtils.getNetworkState(getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
requestState(3);
|
Toast.makeText(getContext(), "网络未连接,请检测网络设置", Toast.LENGTH_SHORT).show();
|
} else {
|
requestState(2);
|
Toast.makeText(getContext(), "网络连接异常,请检测网络设置", Toast.LENGTH_SHORT).show();
|
}
|
} else {
|
if (NetUtils.getNetworkState(getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
Toast.makeText(getContext(), "网络未连接,请检测网络设置", Toast.LENGTH_SHORT).show();
|
} else {
|
Toast.makeText(getContext(), "网络连接异常,请检测网络设置", Toast.LENGTH_SHORT).show();
|
}
|
}
|
} else {
|
if (NetUtils.getNetworkState(getContext()).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
requestState(3);
|
Toast.makeText(getContext(), "网络未连接,请检测网络设置", Toast.LENGTH_SHORT).show();
|
} else {
|
requestState(2);
|
Toast.makeText(getContext(), "网络连接异常,请检测网络设置", Toast.LENGTH_SHORT).show();
|
}
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
if (pd.isShowing())
|
pd.dismiss();
|
}
|
});
|
}
|
|
/**
|
* 性别改变
|
*/
|
int sex = -2;
|
//男女切换 标识
|
private boolean isSexChange = true;
|
|
|
private void tbLogin() {
|
final AlibcLogin alibcLogin = AlibcLogin.getInstance();
|
if (!alibcLogin.isLogin()) {
|
// Log.e("mResult", "RecommendTopFragment调用淘宝登录");
|
alibcLogin.showLogin(new AlibcLoginCallback() {
|
|
@Override
|
public void onSuccess(int i, String s, String s1) {
|
SharedPreferences.Editor editor = getContext()
|
.getSharedPreferences("user", MODE_PRIVATE).edit();
|
editor.putString("TrolleyTransformationLink", "");
|
editor.commit();
|
bindInfo();
|
}
|
|
@Override
|
public void onFailure(int code, String msg) {
|
Toast.makeText(ll_no_data.getContext(), "登录失败,请稍候再试",
|
Toast.LENGTH_LONG).show();
|
clickState = 0;
|
MobclickAgent.reportError(ll_no_data.getContext(), "MineFragment---sscode:" + code + "---msg:" + msg);
|
}
|
});
|
} else {
|
bindInfo();
|
}
|
}
|
|
|
class CategoryTopAdapter extends FragmentStatePagerAdapter {
|
|
|
public CategoryTopAdapter(FragmentManager fm) {
|
super(fm);
|
}
|
|
@Override
|
public int getItemPosition(Object object) {
|
return POSITION_NONE;
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
if (position == 0 || (!StringUtils.isEmpty(mList.get(position).getType()) && mList.get(position).getType().equals("weex"))) {
|
CategoryCustomEvent.classHomeList(getContext(), "");
|
return RecommendFragment.newInstance(mList.get(position));
|
}
|
CategoryCustomEvent.classHomeList(getContext(), mList.get(position).getName());
|
if (!StringUtils.isEmpty(mList.get(position).getType()) && mList.get(position).getType().equals("commonTemplate")) {//跳转通用模版
|
//新建一个Fragment来展示ViewPager item的内容,并传递参数
|
GmTemplateContentFragment fragment = new GmTemplateContentFragment();
|
Bundle args = new Bundle();
|
args.putString("key", mList.get(position).getParams().getString("key"));
|
args.putString("type", mList.get(position).getParams().getInteger("type") + "");
|
fragment.setArguments(args);
|
return fragment;
|
} else {
|
return RecommendCategoryFragment.newInstance(mList.get(position), position);
|
}
|
}
|
|
@Override
|
public CharSequence getPageTitle(int position) {
|
// if (position == 1) {
|
// mList.get(position).setName("");
|
// }
|
return mList.get(position % mList.size()).getName();
|
}
|
|
@Override
|
public int getCount() {
|
return mList.size();
|
}
|
|
}
|
|
private void bindInfo() {
|
if (clickState == 1) {
|
clickState = 0;
|
startActivity(new Intent(ll_no_data.getContext(), ShoppingTrolleyActivity.class));
|
}
|
}
|
|
String openid;
|
|
private void getUserInfo(final Long uid) {
|
ShoppingApi.getUserInfo2(ll_no_data.getContext(), uid, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
JSONObject data = jsonObject.optJSONObject("data");
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
UserInfo info = gson.fromJson(data.optJSONObject("user").toString(), new TypeToken<UserInfo>() {
|
}.getType());
|
openid = info.getOpenid();
|
String inviteCode = data.optString("invitCode");
|
UserUtil.setInviteCode(getContext(), inviteCode);
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
SharedPreferences sp = ll_no_data.getContext().getSharedPreferences("user", MODE_PRIVATE);
|
AlibcLogin alibcLogin = AlibcLogin.getInstance();
|
if (clickState == 1) {
|
if (alibcLogin.isLogin()) {
|
clickState = 0;
|
startActivity(new Intent(ll_no_data.getContext(), ShoppingTrolleyActivity.class));
|
} else {
|
tbLogin();
|
}
|
}
|
}
|
});
|
}
|
|
/**
|
* 请求状态 0 数据正常展示;1 返回数据为空;2 网络请求失败;3 没有连接网络
|
*
|
* @param state
|
*/
|
private void requestState(int state) {
|
ll_recommend_content.setVisibility(state == 0 ? View.VISIBLE : View.GONE);
|
ll_no_data.setVisibility(state == 1 ? View.VISIBLE : View.GONE);
|
ll_request_failture.setVisibility(state == 2 ? View.VISIBLE : View.GONE);
|
ll_no_net.setVisibility(state == 3 ? View.VISIBLE : View.GONE);
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
/** 触摸事件的注销 */
|
((MainActivity) this.getActivity()).unRegisterMyTouchListener();
|
}
|
|
/**
|
* 动态页面数据添加分类缓存
|
*/
|
private void getTrendsType() {
|
ShoppingApi.getTrendsClass(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());
|
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getTrendsType"));
|
editor.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("list").toString());
|
editor.commit();
|
|
getTrendsList(types.get(0).getId() + "", types.get(0).getListSub().get(0).getId() + "");
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取动态首屏内容
|
*
|
* @param cId
|
* @param subId
|
*/
|
private void getTrendsList(String cId, String subId) {
|
ShoppingApi.getRecommendActivity(ll_recommend_content.getContext(), 1 + "", cId + "",
|
subId, new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getTrendsList"));
|
editor.set(0, jsonObject.optJSONObject("data").optJSONArray("list").toString());
|
editor.commit();
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 获取 品牌标题栏数据
|
*/
|
private void getTab() {
|
ShoppingApi.getClass(ll_recommend_content.getContext(), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
BrandFragment.navBgPicture = jsonObject.optJSONObject("data").optString("bgPicture");
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getBrandType"));
|
editor.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("list").toString());
|
editor.commit();
|
getShopList(0 + "");
|
getCateGorySecond(0 + "");
|
}
|
}
|
|
});
|
}
|
|
/**
|
* 获取品牌首屏内容
|
*/
|
private void getShopList(String id) {
|
//精选
|
SharedPreferences sp = getActivity().getSharedPreferences("user", MODE_PRIVATE);
|
ShoppingApi.getShopList(ll_recommend_content.getContext(), 1 + "", id, UserUtil.getUid(ShoppingApplication.application), new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getShopList"));
|
editor.set(0, jsonObject.optJSONObject("data").toString());
|
editor.commit();
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 获取店铺足迹/上方店铺 九宫格数据
|
*/
|
private void getCateGorySecond(String id) {
|
//精选
|
if (id.equals("0")) {
|
SharedPreferences sp = getActivity().getSharedPreferences("user", MODE_PRIVATE);
|
ShoppingApi.getHistory(ll_recommend_content.getContext(), "1", UserUtil.getUid(ShoppingApplication.application), "1", new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getJingxuanHistory"));
|
editor.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("list").toString());
|
editor.commit();
|
}
|
}
|
});
|
}
|
}
|
|
/**
|
* 获取消息列表并缓存
|
*/
|
private void getMessage() {
|
SharedPreferences sp = ll_recommend_content.getContext().getSharedPreferences("user", MODE_PRIVATE);
|
ShoppingApi.getHomeMsgList(ll_recommend_content.getContext(), UserUtil.getUid(ShoppingApplication.application), 1 + "", new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getHomeMsgList"));
|
editor.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("list").toString());
|
editor.commit();
|
|
if (jsonObject.optJSONObject("data")
|
.optJSONArray("systemMsg") != null) {
|
DiskLruCache.Editor editor1 = cache
|
.edit(getKey("systemMsg"));
|
editor1.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("systemMsg").toString());
|
editor1.commit();
|
}
|
|
if (jsonObject.optJSONObject("data")
|
.optJSONArray("commonList") != null) {
|
DiskLruCache.Editor editor2 = cache
|
.edit(getKey("commonList"));
|
editor2.set(0, jsonObject.optJSONObject("data")
|
.optJSONArray("commonList").toString());
|
editor2.commit();
|
}
|
|
}
|
});
|
}
|
|
|
private void initFuliFloat(View contentView) {
|
fl_fuli = contentView.findViewById(R.id.fl_fuli);
|
iv_fuli_portrait = contentView.findViewById(R.id.iv_portrait);
|
tv_fuli_title = contentView.findViewById(R.id.tv_title);
|
tv_fuli_sub_title = contentView.findViewById(R.id.tv_sub_title);
|
tv_time_h = contentView.findViewById(R.id.tv_time_h);
|
tv_time_m = contentView.findViewById(R.id.tv_time_m);
|
tv_time_s = contentView.findViewById(R.id.tv_time_s);
|
fl_fuli.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
showLijinHongBaoDialog();
|
}
|
});
|
}
|
|
private Runnable lijinHongBaoRunnable = new Runnable() {
|
@Override
|
public void run() {
|
if (lijinSendInfo == null) {
|
if (fl_fuli != null)
|
fl_fuli.setVisibility(View.GONE);
|
return;
|
}
|
|
//倒计时设置
|
int leftTime = (int) ((lijinSendInfo.getExpireTime() - System.currentTimeMillis()) / 1000);
|
if (leftTime <= 0) {
|
if (fl_fuli != null)
|
fl_fuli.setVisibility(View.GONE);
|
//移除SharePreference
|
SharedPreferences.Editor editor = getContext().getSharedPreferences("lijinHongBao", MODE_PRIVATE).edit();
|
editor.remove(lijinSendInfo.getMd5());
|
editor.commit();
|
return;
|
}
|
//设置时间
|
int h = leftTime / (60 * 60);
|
int m = (leftTime - h * 60 * 60) / 60;
|
int s = leftTime % 60;
|
if (tv_time_h != null)
|
tv_time_h.setText(h < 10 ? ("0" + h) : (h + ""));
|
if (tv_time_m != null)
|
tv_time_m.setText(m < 10 ? ("0" + m) : (m + ""));
|
if (tv_time_s != null)
|
tv_time_s.setText(s < 10 ? ("0" + s) : (s + ""));
|
if (fl_fuli != null) {
|
fl_fuli.postDelayed(lijinHongBaoRunnable, 1000);
|
}
|
}
|
};
|
|
LijinSendInfo lijinSendInfo;
|
|
/**
|
* 设置福利数据
|
*/
|
private void setFuliData() {
|
//移除监听
|
fl_fuli.removeCallbacks(lijinHongBaoRunnable);
|
if (lijinSendInfo == null) {
|
fl_fuli.setVisibility(View.GONE);
|
} else {
|
fl_fuli.setVisibility(View.VISIBLE);
|
tv_fuli_title.setText(lijinSendInfo.getNotifyTitle());
|
tv_fuli_sub_title.setText(lijinSendInfo.getNotifySubtitle());
|
if (lijinHongBaoRunnable != null)
|
lijinHongBaoRunnable.run();
|
if (lijinSendInfo.getUser() != null) {
|
Glide.with(this).load(lijinSendInfo.getUser().getPortrait()).transform(new GlideCircleTransform(getContext())).into(iv_fuli_portrait);
|
} else
|
Glide.with(this).load(R.drawable.ic_default_portrait_light).transform(new GlideCircleTransform(getContext())).into(iv_fuli_portrait);
|
}
|
}
|
|
|
//显示礼金红包
|
private void showLijinHongBaoDialog() {
|
final SharedPreferences sharedPreferences = getContext().getSharedPreferences("lijinHongBao", MODE_PRIVATE);
|
//显示
|
new RecommendHbDialog.Builder(getContext()).setHBInfo(lijinSendInfo).setActionListener(new RecommendHbDialog.Builder.ILijinHongBaoAction() {
|
@Override
|
public void onClose() {
|
if (lijinSendInfo != null && !StringUtils.isNullOrEmpty(lijinSendInfo.getMd5())) {
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
editor.putString(lijinSendInfo.getMd5(), new Gson().toJson(lijinSendInfo));
|
editor.commit();
|
}
|
|
setFuliData();
|
}
|
|
@Override
|
public void onRecieveSuccess() {
|
//领取成功
|
//移除sharePrefer
|
|
//移除当前的md5
|
if (lijinSendInfo != null) {
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
editor.remove(lijinSendInfo.getMd5());
|
editor.commit();
|
lijinSendInfo = null;
|
}
|
setFuliData();
|
}
|
}).create().show();
|
|
}
|
|
/**
|
* 获取发送中的红包
|
*/
|
private synchronized void getSendingHongbao() {
|
|
ShoppingApi.getSendingHongBao(getContext(), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
super.onSuccessPerfect(statusCode, headers, jsonObject);
|
if (jsonObject.optInt("code") == 0) {
|
JSONObject data = jsonObject.optJSONObject("data");
|
final LijinSendInfo sendInfo = new Gson().fromJson(data.toString(), LijinSendInfo.class);
|
lijinSendInfo = sendInfo;
|
final SharedPreferences sharedPreferences = getContext().getSharedPreferences("lijinHongBao", MODE_PRIVATE);
|
if (StringUtils.isNullOrEmpty(sharedPreferences.getString(sendInfo.getMd5(), "")))
|
showLijinHongBaoDialog();
|
else {
|
setFuliData();
|
}
|
|
} else {
|
lijinSendInfo = null;
|
setFuliData();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
}
|
});
|
}
|
|
|
}
|