From 6ccc3e5cc65dee860d570d2928142f4e12f6c02e Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Mon, 14 Nov 2016 19:01:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A6=96=E9=A1=B5=E8=BD=AE?= =?UTF-8?q?=E6=92=AD=E5=9B=BE=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/gamecenter/MainActivity.java | 44 ++++ .../gamecenter/adapter/ImagePagerAdapter.java | 68 +++++- .../viewholder/GameViewPagerViewHolder.java | 29 +++ .../com/gh/gamecenter/game/Game1Fragment.java | 21 +- .../gamecenter/game/Game1FragmentAdapter.java | 218 ++++++++---------- .../gamecenter/game/Game2FragmentAdapter.java | 4 +- ..._game_head_item.xml => game_head_item.xml} | 0 ...ame_image_item.xml => game_image_item.xml} | 0 ...viewholder.xml => game_viewpager_item.xml} | 1 + 9 files changed, 237 insertions(+), 148 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewPagerViewHolder.java rename app/src/main/res/layout/{home_game_head_item.xml => game_head_item.xml} (100%) rename app/src/main/res/layout/{home_game_image_item.xml => game_image_item.xml} (100%) rename app/src/main/res/layout/{plugin1_autoscrollviewpager_viewholder.xml => game_viewpager_item.xml} (99%) diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 9897167c9b..c3d6af69cf 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -28,6 +28,7 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; +import com.android.volley.Request; import com.android.volley.Request.Method; import com.android.volley.Response; import com.android.volley.VolleyError; @@ -59,6 +60,7 @@ import com.gh.gamecenter.entity.AppEntity; import com.gh.gamecenter.entity.GameDigestEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.entity.SlideEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBShowDialog; @@ -265,6 +267,48 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene map.put("installed", downloadEntity.getInstalled()); map.put("network", NetworkUtils.getConnectedType(MainActivity.this)); DataCollectionManager.onEvent(MainActivity.this, "download", map); + + if (downloadEntity.getEntrance().matches("^" + "\\(游戏\\-插件:滚动图\\[.+\\]\\)" + "$")) { + // 首页轮播图数据统计 + statLunbotuData(downloadEntity.getEntrance()); + } + } + + // 首页轮播图数据统计 + private void statLunbotuData(String entrance) { + int start = entrance.indexOf("["); + int end = entrance.indexOf("]"); + if (start != -1 && end != -1) { + entrance = entrance.substring(start + 1, end); + String[] values = entrance.split("="); + if (values.length == 3) { + Map map = new HashMap<>(); + map.put("location", values[2]); + map.put("type", values[1]); + map.put("title", values[0]); + map.put("form", "download"); + + String version = PackageUtils.getVersion(this); + String user = DeviceUtils.getDeviceID(this); + String channel = (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID"); + map.put("version", version); + map.put("user", user); + map.put("device_id", TokenUtils.getDeviceId(this)); + map.put("channel", channel); + String url = Config.DATA_HOST + "api/v1d0/log"; + Map params = new HashMap<>(); + params.put("topic", "lunbotu"); + params.put("source", "GH-ASSIST-Client"); + params.put("time", String.valueOf(Utils.getTime(this))); + params.put("content", new JSONObject(map).toString()); + StringExtendedRequest request = new StringExtendedRequest(Request.Method.POST, url, null, null); + request.setParams(params); + request.setShouldCache(false); + AppController.addToRequestQueue(request); + } + + } + } private void processHijack(DownloadEntity downloadEntity) { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index 574e71c596..c5ceafee45 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -10,15 +10,26 @@ import android.content.Intent; import android.view.View; import android.view.ViewGroup; +import com.android.volley.Request; import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.base.AppController; +import com.gh.common.constant.Config; import com.gh.common.util.DataUtils; +import com.gh.common.util.DeviceUtils; import com.gh.common.util.GameUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; +import com.gh.common.util.PackageUtils; +import com.gh.common.util.TokenUtils; +import com.gh.common.util.Utils; +import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.entity.SlideEntity; +import com.gh.gamecenter.volley.extended.StringExtendedRequest; + +import org.json.JSONObject; import java.util.HashMap; import java.util.List; @@ -70,22 +81,17 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { @Override public View getView(final int position, View view, ViewGroup container) { - ViewHolder holder; if (view == null) { - holder = new ViewHolder(); - view = holder.imageView = new SimpleDraweeView(context); - view.setTag(holder); - } else { - holder = (ViewHolder) view.getTag(); + view = new SimpleDraweeView(context); } final SlideEntity slideEntity = slideList.get(getPosition(position)); - ImageUtils.getInstance().display(context.getResources(), holder.imageView, + ImageUtils.getInstance().display(context.getResources(), (SimpleDraweeView) view, slideEntity.getImage(), R.drawable.preload); // indicator.setPosition(slideList.size(), getPosition(position)); - holder.imageView.setOnClickListener(new View.OnClickListener() { + view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -94,15 +100,27 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { kv.put("位置", getPosition(position) + 1); DataUtils.onEvent(context, "点击", "游戏-插件-滚动图", kv); + // 首页轮播图数据统计 + statLunbotuData(getPosition(position)); + if ("game".equals(slideEntity.getType())) { - GameUtils.startGameDetailActivity(context, slideEntity.getLink(), "(游戏-插件:滚动图)"); + String entrance = "(游戏-插件:滚动图[" + + slideEntity.getName() + + "=" + slideEntity.getType() + + "=" + (getPosition(position) + 1) + + "])"; + GameUtils.startGameDetailActivity(context, slideEntity.getLink(), entrance); } else if ("news".equals(slideEntity.getType())) { // 统计阅读量 NewsUtils.statNewsViews(slideEntity.getLink()); Intent intent = new Intent(context, NewsDetailActivity.class); intent.putExtra("newsId", slideEntity.getLink()); - intent.putExtra("entrance", "(游戏-插件:滚动图)"); + intent.putExtra("entrance", "(游戏-插件:滚动图[" + + slideEntity.getName() + + "=" + slideEntity.getType() + + "=" + (getPosition(position) + 1) + + "])"); context.startActivity(intent); } else if ("column".equals(slideEntity.getType())) { Intent intent = new Intent(context, SubjectActivity.class); @@ -117,8 +135,33 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { return view; } - private static class ViewHolder { - SimpleDraweeView imageView; + // 首页轮播图数据统计 + public void statLunbotuData(int position) { + SlideEntity slideEntity = slideList.get(position); + + Map map = new HashMap<>(); + map.put("location", String.valueOf(position + 1)); + map.put("type", slideEntity.getType()); + map.put("title", slideEntity.getName()); + map.put("form", "click"); + + String version = PackageUtils.getVersion(context); + String user = DeviceUtils.getDeviceID(context); + String channel = (String) PackageUtils.getMetaData(context, context.getPackageName(), "TD_CHANNEL_ID"); + map.put("version", version); + map.put("user", user); + map.put("device_id", TokenUtils.getDeviceId(context)); + map.put("channel", channel); + String url = Config.DATA_HOST + "api/v1d0/log"; + Map params = new HashMap<>(); + params.put("topic", "lunbotu"); + params.put("source", "GH-ASSIST-Client"); + params.put("time", String.valueOf(Utils.getTime(context))); + params.put("content", new JSONObject(map).toString()); + StringExtendedRequest request = new StringExtendedRequest(Request.Method.POST, url, null, null); + request.setParams(params); + request.setShouldCache(false); + AppController.addToRequestQueue(request); } /** @@ -136,4 +179,5 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { this.isInfiniteLoop = isInfiniteLoop; return this; } + } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewPagerViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewPagerViewHolder.java new file mode 100644 index 0000000000..839e966a38 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewPagerViewHolder.java @@ -0,0 +1,29 @@ +package com.gh.gamecenter.adapter.viewholder; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.gh.common.view.AutoScrollViewPager; +import com.gh.gamecenter.R; + +/** + * Created by LGT on 2016/11/14. + * viewHolder + */ +public class GameViewPagerViewHolder extends RecyclerView.ViewHolder { + + public AutoScrollViewPager viewPager; + public LinearLayout viewpager_ll_hint; + public TextView viewpager_tv_failure; + + public GameViewPagerViewHolder(View itemView) { + super(itemView); + + viewPager = (AutoScrollViewPager) itemView.findViewById(R.id.view_pager); + viewpager_ll_hint = (LinearLayout) itemView.findViewById(R.id.viewpager_ll_hint); + viewpager_tv_failure = (TextView) itemView.findViewById(R.id.viewpager_tv_failure); + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java index 542b027fb3..db694c8c46 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java @@ -32,6 +32,7 @@ import java.util.List; /** * Created by khy on 2016/6/27. + * 游戏-插件界面 */ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener { @@ -45,10 +46,6 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On private int currentItem; - private boolean isEverpause; - - private Handler handler = new Handler(); - private DataWatcher dataWatcher = new DataWatcher() { @Override public void onDataChanged(DownloadEntity downloadEntity) { @@ -76,8 +73,6 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On currentItem = 0; - isEverpause = false; - reuse_no_connection.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -94,7 +89,7 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On fm_game_rv_list.setHasFixedSize(true); fm_game_rv_list.setLayoutManager(new LinearLayoutManager(getActivity())); - adapter = new Game1FragmentAdapter(Game1Fragment.this, fm_game_swipe_refresh, false); + adapter = new Game1FragmentAdapter(Game1Fragment.this, fm_game_swipe_refresh); fm_game_rv_list.setAdapter(adapter); fm_game_rv_list.setOnScrollListener(new RecyclerView.OnScrollListener() { @@ -260,7 +255,6 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override public void onResume() { - super.onResume(); if (isEverpause) { for (SubjectEntity subjectEntity : adapter.getSubjectList()) { for (GameEntity entity :subjectEntity.getData()) { @@ -272,7 +266,7 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On } adapter.notifyDataSetChanged(); } - isEverpause = false; + super.onResume(); DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); if (currentItem == 0) { adapter.startAutoScroll(); @@ -282,22 +276,18 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override public void onPause() { super.onPause(); - isEverpause = true; DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); if (currentItem == 0) { adapter.stopAutoScroll(); } } - public boolean isEverpause() { - return isEverpause; - } - Runnable runnable = new Runnable() { @Override public void run() { - adapter = new Game1FragmentAdapter(Game1Fragment.this, fm_game_swipe_refresh, true); + adapter = new Game1FragmentAdapter(Game1Fragment.this, fm_game_swipe_refresh); fm_game_rv_list.setAdapter(adapter); + adapter.initSlide(true); } }; @@ -311,4 +301,5 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On super.onDestroy(); AppController.canclePendingRequests(TAG); } + } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java index f2c9cbb595..98e7246465 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -14,7 +14,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.TextView; import android.widget.Toast; import com.android.volley.NoConnectionError; @@ -45,6 +44,7 @@ import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder; import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; +import com.gh.gamecenter.adapter.viewholder.GameViewPagerViewHolder; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; @@ -65,10 +65,12 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; /** * Created by LGT on 2016/7/1. + * 游戏-插件-数据适配器 */ public class Game1FragmentAdapter extends RecyclerView.Adapter { @@ -91,12 +93,12 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter> getLocationMap() { @@ -243,7 +242,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 0) { - int currentItem = 0; - if (viewHolder.viewPager.getAdapter() != null) { - currentItem = viewHolder.viewPager.getCurrentItem(); - } - viewHolder.viewpager_ll_hint.removeAllViews(); - for (int i = 0, size = slideList.size(); i < size; i++) { - ImageView imageView = new ImageView(context); - LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams( - DisplayUtils.dip2px(context, 6), - DisplayUtils.dip2px(context, 6)); - lparams.bottomMargin = DisplayUtils.dip2px(context, 6); - if (i == currentItem) { - imageView.setImageResource(R.drawable.oval_hint_up); - } else { - imageView.setImageResource(R.drawable.oval_hint_dn); - } - if (i != 0) { - lparams.leftMargin = DisplayUtils.dip2px(context, 6); - } - imageView.setLayoutParams(lparams); - viewHolder.viewpager_ll_hint.addView(imageView); - } - viewHolder.viewPager.setAdapter(new ImagePagerAdapter(context, slideList, true)); - viewHolder.viewPager.setCurrentItem(currentItem); - viewHolder.viewPager.setInterval(3000); - viewHolder.viewPager.startAutoScroll(); - } + if (holder instanceof GameViewPagerViewHolder) { + initGameViewPagerViewHolder((GameViewPagerViewHolder) holder); } else if (holder instanceof GameHeadViewHolder) { initGameHeadViewHolder((GameHeadViewHolder) holder, position); } else if (holder instanceof GameImageViewHolder) { @@ -551,6 +514,82 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter getPluginList() { diff --git a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java index 576495c8b2..43f3b370ba 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java @@ -239,11 +239,11 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter +