diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 64c1b0ee1d..2d55430bc7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -147,9 +147,6 @@
-
diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.java b/app/src/main/java/com/gh/common/util/ImageUtils.java
index 2ee2a2d936..479ff6430b 100644
--- a/app/src/main/java/com/gh/common/util/ImageUtils.java
+++ b/app/src/main/java/com/gh/common/util/ImageUtils.java
@@ -9,6 +9,7 @@ import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
+import android.widget.RelativeLayout;
import com.gh.common.view.CircleImageView;
import com.gh.gamecenter.R;
@@ -27,11 +28,9 @@ import java.util.concurrent.Executors;
import de.greenrobot.event.EventBus;
public class ImageUtils {
-
private static ImageUtils singleton;
private static ImageLoader imageLoader;
private static DisplayImageOptions options;
-
private ArrayMap> imageCache = new ArrayMap>();
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
@@ -80,14 +79,16 @@ public class ImageUtils {
}
@Override
- public void onLoadingComplete(String arg0, View view, Bitmap arg2) {
+ public void onLoadingComplete(String arg0, View view,
+ Bitmap arg2) {
AlphaAnimation animation = new AlphaAnimation(0f, 1f);
animation.setDuration(500);
view.startAnimation(animation);
}
@Override
- public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
+ public void onLoadingFailed(String arg0, View arg1,
+ FailReason arg2) {
}
@@ -99,20 +100,25 @@ public class ImageUtils {
});
}
//增加一个上下文环境,图片宽度设最大,高度自适应
- public void display(String url, ImageView imageView, int drawable, Context context) {
- display(url, imageView, drawable, ScaleType.FIT_XY, null, context);
+ public void display(String url, ImageView imageView, int drawable,Context context) {
+ display(url, imageView, drawable, ScaleType.FIT_XY, null ,context);
+ }
+ // 主页大图布局用到的
+ public void display(String url, ImageView imageView, int drawable,Context context,RelativeLayout rlImage,int position) {
+ display(url, imageView, drawable, ScaleType.FIT_XY, null ,context, rlImage,position);
}
-
public void display(String url, ImageView imageView, int drawable) {
display(url, imageView, drawable, ScaleType.FIT_XY, null);
}
- public void display(final String url, final ImageView imageView, final int drawable,
- final ScaleType scaleType, final OnLoadingCompleteListener listener) {
+ public void display(final String url, final ImageView imageView,
+ final int drawable, final ScaleType scaleType,
+ final OnLoadingCompleteListener listener) {
imageLoader.displayImage(url, imageView, options,
new ImageLoadingListener() {
@Override
- public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
+ public void onLoadingComplete(String imageUri, View view,
+ Bitmap loadedImage) {
if (imageView instanceof CircleImageView) {
imageView.setScaleType(ScaleType.CENTER_CROP);
} else {
@@ -137,24 +143,36 @@ public class ImageUtils {
}
@Override
- public void onLoadingFailed(String imageUri, View view, FailReason reason) {
+ public void onLoadingFailed(String imageUri, View view,
+ FailReason reason) {
}
});
}
- public void display(final String url, final ImageView imageView, final int drawable,
- final ScaleType scaleType, final OnLoadingCompleteListener listener, final Context context) {
+ public void display(final String url, final ImageView imageView,
+ final int drawable, final ScaleType scaleType,
+ final OnLoadingCompleteListener listener,final Context context,final RelativeLayout rlImage, final int position) {
imageLoader.displayImage(url, imageView, options,
new ImageLoadingListener() {
@Override
- public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
+ public void onLoadingComplete(String imageUri, View view,
+ Bitmap loadedImage) {
int width = loadedImage.getWidth();
int height = loadedImage.getHeight();
int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
- widthPixels = widthPixels - DisplayUtils.dip2px(context, 10);
- float scale = (float) height / (float) width;
- int newHeight = (int)(scale * widthPixels);
+ widthPixels = widthPixels - DisplayUtils.dip2px(context,10);
+ float index = (float) height / (float) width;
+ int newHeight = (int)(index * widthPixels);
+
+ if (rlImage!= null){
+ ViewGroup.LayoutParams layoutParams = rlImage.getLayoutParams();
+ if (position != 0){
+ layoutParams.height = newHeight + DisplayUtils.dip2px(context,8);
+ }else {
+ layoutParams.height = newHeight;
+ }
+ }
ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
if (layoutParams!=null){
@@ -189,14 +207,71 @@ public class ImageUtils {
}
@Override
- public void onLoadingFailed(String imageUri, View view, FailReason reason) {
+ public void onLoadingFailed(String imageUri, View view,
+ FailReason reason) {
}
});
}
- public void display(final String url, final ImageView imageView, final int drawable,
- final ScaleType scaleType, final OnLoadingCompleteListener listener, final int i) {
+ public void display(final String url, final ImageView imageView,
+ final int drawable, final ScaleType scaleType,
+ final OnLoadingCompleteListener listener,final Context context) {
+ imageLoader.displayImage(url, imageView, options,
+ new ImageLoadingListener() {
+ @Override
+ public void onLoadingComplete(String imageUri, View view,
+ Bitmap loadedImage) {
+ int width = loadedImage.getWidth();
+ int height = loadedImage.getHeight();
+ int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
+ widthPixels = widthPixels - DisplayUtils.dip2px(context,10);
+ float index = (float) height / (float) width;
+ int newHeight = (int)(index * widthPixels);
+
+ ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
+ if (layoutParams!=null){
+ layoutParams.height = newHeight;
+ layoutParams.width = widthPixels;
+ imageView.setLayoutParams(layoutParams);
+ }
+
+ EventBus.getDefault().post(new EBImage(imageUri, newHeight));
+
+ if (imageView instanceof CircleImageView) {
+ imageView.setScaleType(ScaleType.CENTER_CROP);
+ } else {
+ imageView.setScaleType(scaleType);
+ }
+ if (listener != null) {
+ listener.onLoadingComplete();
+ }
+ }
+
+ @Override
+ public void onLoadingStarted(String imageUri, View view) {
+ imageView.setScaleType(ScaleType.CENTER);
+ if (drawable != -1) {
+ imageView.setImageResource(drawable);
+ }
+ }
+
+ @Override
+ public void onLoadingCancelled(String imageUri, View view) {
+
+ }
+
+ @Override
+ public void onLoadingFailed(String imageUri, View view,
+ FailReason reason) {
+
+ }
+ });
+ }
+
+ public void display(final String url, final ImageView imageView,
+ final int drawable, final ScaleType scaleType,
+ final OnLoadingCompleteListener listener, final int i) {
imageLoader.displayImage(url, imageView, options,
new ImageLoadingListener() {
@Override
diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java
index 7cecf26956..f65157fc77 100644
--- a/app/src/main/java/com/gh/common/view/DownloadDialog.java
+++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java
@@ -135,6 +135,7 @@ public class DownloadDialog {
private TextView download_percentage;
private LinearLayout linearLayout;
private ViewPager viewPager;
+ private LinearLayout llCollection;
private int row;
private int column;
@@ -198,8 +199,22 @@ public class DownloadDialog {
TextView textView = (TextView) contentView.findViewById(R.id.dialog_title);
textView.setText(gameName);
+ int size = game.getApk().size();
+ int vpHeight = 0;
+ if (size<=3){
+ vpHeight = 72;
+ }else if (size<=6){
+ vpHeight = 136;
+ }else {
+ vpHeight = 200;
+ }
+
linearLayout = (LinearLayout) contentView.findViewById(R.id.dialog_ll_hint);
viewPager = (ViewPager) contentView.findViewById(R.id.dialog_viewPager);
+ llCollection = (LinearLayout) contentView.findViewById(R.id.dialog_collection);
+ ViewGroup.LayoutParams layoutParams = viewPager.getLayoutParams();
+ layoutParams.height = DisplayUtils.dip2px(context,vpHeight);
+ viewPager.setLayoutParams(layoutParams);
isLoadPlatform = false;
@@ -571,6 +586,7 @@ public class DownloadDialog {
viewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
+ llCollection.setVisibility(View.VISIBLE);
if (viewHolder.download_item_tv_status.getVisibility() == View.GONE) {
//下载游戏
addDownloadEntry(apkEntity, viewHolder.download_item_tv_status);
diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
index 9e7cd9ae04..04b632830b 100644
--- a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
@@ -1,974 +1,981 @@
package com.gh.gamecenter;
+import android.app.Dialog;
+import android.content.Context;
import android.content.Intent;
-import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
+import android.os.Message;
import android.support.v4.util.ArrayMap;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.Html;
+import android.text.Spanned;
import android.text.TextUtils;
-import android.util.DisplayMetrics;
+import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup.LayoutParams;
+import android.view.ViewGroup;
+import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import android.widget.Toast;
import com.android.volley.NoConnectionError;
import com.android.volley.Response;
import com.android.volley.TimeoutError;
import com.android.volley.VolleyError;
import com.gh.base.AppController;
-import com.gh.base.BaseFragmentActivity;
+import com.gh.base.BaseActivity;
import com.gh.common.constant.Config;
import com.gh.common.constant.Constants;
+import com.gh.common.util.ConcernUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DialogUtils;
-import com.gh.common.util.DisplayUtils;
import com.gh.common.util.FileUtils;
import com.gh.common.util.ImageUtils;
import com.gh.common.util.MD5Utils;
import com.gh.common.util.NetworkUtils;
import com.gh.common.util.PackageUtils;
import com.gh.common.util.PlatformUtils;
-import com.gh.common.util.TimestampUtils;
import com.gh.common.util.Utils;
import com.gh.common.view.DownloadDialog;
+import com.gh.common.view.HorizontalItemDecoration;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntry;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.DismissEntity;
+import com.gh.gamecenter.entity.GameDetailsEntity;
import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.eventbus.EBDownloadDelete;
-import com.gh.gamecenter.eventbus.EBMoveTop;
-import com.gh.gamecenter.eventbus.EBNetworkState;
+import com.gh.gamecenter.entity.NewsEntity;
+import com.gh.gamecenter.eventbus.EBNewsType;
import com.gh.gamecenter.eventbus.EBPWDismiss;
-import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.eventbus.EBPutUrl;
import com.gh.gamecenter.eventbus.EBRedDot;
-import com.gh.gamecenter.eventbus.EBSlide;
-import com.gh.gamecenter.gamedetails.GameDetailsFragment;
-import com.gh.gamecenter.gamedetails.GameInformationFragment;
-import com.gh.gamecenter.gamedetails.GameStrategyFragment;
import com.gh.gamecenter.manager.ConcernManager;
import com.gh.gamecenter.manager.DataCollectionManager;
import com.gh.gamecenter.manager.PackageManager;
-import com.gh.gamecenter.personal.PersonalFragmentAdapter;
+import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import org.json.JSONArray;
+import org.json.JSONException;
import org.json.JSONObject;
-import java.util.Calendar;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
-import java.util.Map.Entry;
import de.greenrobot.event.EventBus;
/**
- * 游戏详情页面 如果要启动该页面,需要传 GameEntity 对象进来 对应key game
- *
- * @author 黄壮华
- *
+ * Created by khy on 2016/8/12.
*/
-public class GameDetailsActivity extends BaseFragmentActivity implements
- OnClickListener, OnPageChangeListener {
-
- private TextView gamedetails_tv_details, gamedetails_tv_information,
- gamedetails_tv_strategy, gamedetails_tv_download, top_tv_name,
- top_tv_info, top_tv_attention, titlebar_tv_details,
- titlebar_tv_information, titlebar_tv_strategy, gamedetails_tv_per,
- actionbar_tv_title;
- private ImageView top_iv_icon, gamedetails_iv_share;
- private View gamedetails_slide_line, titlebar_slide_line;
- private LinearLayout gamedetails_ll_top, gamedetails_ll_topbar,
- gamedetails_ll_bottom, gamedetails_ll_loading, reuse_no_connection;
- private ViewPager gamedetails_vp_show;
- private ProgressBar gamedetails_progressbar;
- private LinearLayout.LayoutParams lparams;
- private RelativeLayout.LayoutParams rparams;
-
- private ConcernManager concernManager;
- private DownloadEntry downloadEntry;
- private GameEntity entity;
-
- private int currentItem = -1;
- private int previous = 0;
- private int width;
- private boolean isDestory;
- private String gameId;
- private String entrance;
-
- private DismissEntity dismissEntity;
-
- private long start = 0L;
- private boolean isSentReport = false;
-
- private ArrayMap statusMap;
-
- private Handler handler = new Handler();
-
- private DataWatcher dataWatcher = new DataWatcher() {
- @Override
- public void onDataChanged(
- HashMap downloadingEntries) {
- if (entity != null && entity.getApk().size() == 1) {
- String url = entity.getApk().get(0).getUrl();
- for (Entry entry : downloadingEntries
- .entrySet()) {
- if (url.equals(entry.getValue().getUrl())) {
- if (!"pause".equals(statusMap.get(entry.getValue()
- .getUrl()))) {
- downloadEntry = entry.getValue();
- invalidate();
- }
- break;
- }
- }
- }
- }
- };
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- Utils.log(this.getClass().getSimpleName() + " onSaveInstanceState");
- outState.putInt("CurrentItem", gamedetails_vp_show.getCurrentItem());
- AppController.put("GameEntity", entity);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
-
- isDestory = false;
-
- View contentView = View.inflate(this, R.layout.activity_gamedetails, null);
-
- gameId = getIntent().getStringExtra("gameId");
- entrance = getIntent().getStringExtra("entrance");
- if (savedInstanceState != null) {
- currentItem = savedInstanceState.getInt("CurrentItem");
- }
-
- init(contentView);
-
- dismissEntity = new DismissEntity(false);
-
- if (gameId != null) {
- reuse_no_connection.setOnClickListener(this);
- } else {
- entity = (GameEntity) AppController.get("GameEntity", true);
- }
-
- statusMap = new ArrayMap();
-
- concernManager = new ConcernManager(getApplicationContext());
-
- gamedetails_ll_bottom.setOnClickListener(this);
- if (Config.isShow) {
- gamedetails_ll_bottom.setVisibility(View.VISIBLE);
- } else {
- gamedetails_ll_bottom.setVisibility(View.GONE);
- }
-
- gamedetails_tv_download.setOnClickListener(this);
- gamedetails_progressbar.setOnClickListener(this);
- gamedetails_tv_per.setOnClickListener(this);
- gamedetails_iv_share.setOnClickListener(this);
-
- gamedetails_tv_details.setOnClickListener(this);
- gamedetails_tv_information.setOnClickListener(this);
- gamedetails_tv_strategy.setOnClickListener(this);
-
- titlebar_tv_details.setOnClickListener(this);
- titlebar_tv_information.setOnClickListener(this);
- titlebar_tv_strategy.setOnClickListener(this);
-
- titlebar_tv_details.setClickable(false);
- titlebar_tv_information.setClickable(true);
- titlebar_tv_strategy.setClickable(true);
-
- gamedetails_tv_details.setClickable(false);
- gamedetails_tv_information.setClickable(true);
- gamedetails_tv_strategy.setClickable(true);
-
- top_tv_attention.setOnClickListener(this);
-
- DisplayMetrics outMetrics = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
- width = outMetrics.widthPixels / 3;
- lparams = new LinearLayout.LayoutParams(width / 2, DisplayUtils.dip2px(
- getApplicationContext(), 2));
- lparams.leftMargin = outMetrics.widthPixels / 12;
- gamedetails_slide_line.setLayoutParams(lparams);
- titlebar_slide_line.setLayoutParams(lparams);
-
- rparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.WRAP_CONTENT);
-
- start = Calendar.getInstance().getTimeInMillis();
-
- if (entity != null) {
- init();
- } else {
- gamedetails_ll_loading.setVisibility(View.VISIBLE);
- gamedetails_vp_show.setVisibility(View.GONE);
- gamedetails_ll_top.setVisibility(View.GONE);
- gamedetails_ll_bottom.setVisibility(View.GONE);
- getGameDetails();
- }
- }
-
- private void getGameDetails() {
- JsonObjectExtendedRequest objectRequest = new JsonObjectExtendedRequest(
- TimestampUtils.addTimestamp(Config.HOST + "v1d45/game/"
- + gameId + "/digest", Constants.GAME_CD),
- new Response.Listener() {
-
- @Override
- public void onResponse(JSONObject response) {
- if (!isDestory) {
- Gson gson = new Gson();
- entity = gson.fromJson(response.toString(),
- GameEntity.class);
- gamedetails_ll_loading.setVisibility(View.GONE);
- gamedetails_vp_show.setVisibility(View.VISIBLE);
- gamedetails_ll_top.setVisibility(View.VISIBLE);
- if (Config.isShow) {
- gamedetails_ll_bottom.setVisibility(View.VISIBLE);
- } else {
- gamedetails_ll_bottom.setVisibility(View.GONE);
- }
- init();
- }
- }
- }, new Response.ErrorListener() {
-
- @Override
- public void onErrorResponse(VolleyError error) {
- if (!isDestory) {
- // 无网络连接和访问超时
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- toast("网络错误");
- reuse_no_connection.setVisibility(View.VISIBLE);
- gamedetails_ll_loading.setVisibility(View.GONE);
- }
- }
- }
- });
- AppController.addToRequestQueue(objectRequest,
- PersonalFragmentAdapter.class);
- }
-
- private void init() {
-
- actionbar_tv_title.setText(entity.getName());
-
- top_tv_name.setText(entity.getName());
-
- for (int i = 0, size = entity.getApk().size(); i < size; i++) {
- ApkEntity apkEntity = entity.getApk().get(i);
- if ("9u".equals(apkEntity.getPlatform())) {
- top_tv_info.setText("V" + apkEntity.getVersion() + " | "
- + apkEntity.getSize());
- break;
- }
- if (i == size - 1) {
- top_tv_info.setText("V" + apkEntity.getVersion() + " | "
- + apkEntity.getSize());
- }
- }
-
- if (entity.getApk() == null || entity.getApk().isEmpty()) {
- gamedetails_tv_download.setText("暂无下载");
- gamedetails_tv_download
- .setBackgroundResource(R.drawable.textview_gray_style);
- gamedetails_tv_download.setTextColor(getResources().getColor(R.color.btn_gray));
- gamedetails_tv_download.setClickable(false);
- } else {
- boolean isInstalled = false;
- if (entity.getApk() != null
- && entity.getApk().size() == 1
- && PackageManager.isInstalled(entity.getApk().get(0)
- .getPackageName())) {
- isInstalled = true;
- }
- gamedetails_tv_download.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setVisibility(View.GONE);
- gamedetails_tv_per.setVisibility(View.GONE);
- if (isInstalled) {
- if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
- gamedetails_tv_download.setText("启动《" + entity.getName()
- + "》");
- } else {
- gamedetails_tv_download.setText("启动《" + entity.getName()
- + "》" + entity.getDownloadAddWord());
- }
- } else {
- if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
- gamedetails_tv_download.setText("下载《" + entity.getName()
- + "》");
- } else {
- gamedetails_tv_download.setText("下载《" + entity.getName()
- + "》" + entity.getDownloadAddWord());
- }
- }
- }
-
- if (concernManager.isConcern(entity.getId())) {
- top_tv_attention.setText("取消关注");
- top_tv_attention.setBackgroundResource(R.drawable.border_red_bg);
- top_tv_attention.setTextColor(0xffbc2132);
- } else {
- top_tv_attention.setText("关注");
- top_tv_attention
- .setBackgroundResource(R.drawable.textview_red_style);
- top_tv_attention.setTextColor(Color.WHITE);
- }
-
- ImageUtils.getInstance(this).display(entity.getIcon(), top_iv_icon);
-
- gamedetails_vp_show.setAdapter(new FragmentAdapter(
- getSupportFragmentManager()));
- gamedetails_vp_show.setOffscreenPageLimit(3);
- gamedetails_vp_show.addOnPageChangeListener(this);
-
- if (currentItem != -1) {
- lparams.leftMargin = width * currentItem + width / 4;
- gamedetails_slide_line.setLayoutParams(lparams);
- titlebar_slide_line.setLayoutParams(lparams);
- } else {
- int current = getIntent().getIntExtra("current", -1);
- if (current != -1) {
- gamedetails_vp_show.setCurrentItem(current);
- lparams.leftMargin = width * current + width / 4;
- gamedetails_slide_line.setLayoutParams(lparams);
- titlebar_slide_line.setLayoutParams(lparams);
- }
- }
- }
-
- @Override
- public void onClick(final View v) {
- switch (v.getId()) {
- case R.id.actionbar_rl_back:
- finish();
- break;
- case R.id.gamedetails_tv_details:
- case R.id.titlebar_tv_details:
- gamedetails_vp_show.setCurrentItem(0);
- break;
- case R.id.gamedetails_tv_information:
- case R.id.titlebar_tv_information:
- gamedetails_vp_show.setCurrentItem(1);
- break;
- case R.id.gamedetails_tv_strategy:
- case R.id.titlebar_tv_strategy:
- gamedetails_vp_show.setCurrentItem(2);
- break;
- case R.id.top_tv_attention:
- if ("关注".equals(top_tv_attention.getText().toString())) {
-
- Map kv = new HashMap();
- kv.put("状态", "关注");
- DataUtils.onEvent(GameDetailsActivity.this, "游戏关注",
- entity.getName(), kv);
-
- Map kv2 = new HashMap();
- kv2.put("点击", "关注");
- DataUtils.onEvent(GameDetailsActivity.this, "插件数据",
- entity.getName(), kv2);
-
- Map map = new HashMap();
- map.put("game", entity.getName());
- map.put("type", "关注");
- map.put("createdOn", System.currentTimeMillis() / 1000);
- DataCollectionManager.onEvent(GameDetailsActivity.this,
- "concern", map);
-
- concernManager.addByEntity(entity);
- top_tv_attention.setText("取消关注");
- top_tv_attention
- .setBackgroundResource(R.drawable.border_red_bg);
- top_tv_attention.setTextColor(0xffbc2132);
-
- DialogUtils.showSuccessDialog(this);
- } else {
- Map kv2 = new HashMap();
- kv2.put("点击", "取消关注");
- DataUtils.onEvent(GameDetailsActivity.this, "插件数据", entity.getName(), kv2);
-
- DialogUtils.showCancelDialog(this, new DialogUtils.ConfiremListener() {
- @Override
- public void onConfirem() {
- Map kv = new HashMap();
- kv.put("状态", "取消关注");
- DataUtils.onEvent(GameDetailsActivity.this, "游戏关注", entity.getName(), kv);
-
- Map map = new HashMap();
- map.put("game", entity.getName());
- map.put("type", "关注");
- map.put("createdOn", System.currentTimeMillis() / 1000);
- DataCollectionManager.onEvent(GameDetailsActivity.this, "concern", map);
-
- concernManager.deleteConcern(entity.getId());
-
- top_tv_attention.setText("关注");
- top_tv_attention.setBackgroundResource(R.drawable.textview_red_style);
- top_tv_attention.setTextColor(Color.WHITE);
- }
- });
- }
- break;
- case R.id.gamedetails_tv_download:
- Map kv0 = new HashMap();
- kv0.put("点击", "下载");
- DataUtils.onEvent(GameDetailsActivity.this, "插件数据", entity.getName(),
- kv0);
- if (entity.getApk() != null && !entity.getApk().isEmpty()) {
- if (NetworkUtils.isWifiConnected(this)) {
- download(v);
- } else {
- DialogUtils.showWarningDialog(this, new DialogUtils.ConfiremListener() {
- @Override
- public void onConfirem() {
- download(v);
- }
- });
- }
- } else {
- toast("稍等片刻~!游戏正在上传中...");
- }
- break;
- case R.id.gamedetails_iv_share:
- // http://news.ghzhushou.com
- Map kv = new HashMap();
- kv.put("点击", "分享");
- DataUtils.onEvent(this, "插件数据", entity.getName(), kv);
-
- Map map = new HashMap();
- map.put("location", "分享");
- map.put("createOn", System.currentTimeMillis() / 1000);
- map.put("news", entity.getName());
- map.put("page", "游戏详情");
- DataCollectionManager.onEvent(this, "click-item", map);
-
- String url = "http://112.124.59.31/game_center/static/game_"
- + entity.getId() + ".html";
- showShare(url, entity.getName(), entity.getIcon(), entrance, "游戏");
- break;
- case R.id.gamedetails_progressbar:
- case R.id.gamedetails_tv_per:
- String str = gamedetails_tv_per.getText().toString();
- if ("下载中".equals(str)) {
- startActivity(new Intent(this, DownloadManagerActivity.class));
- } else if ("安装".equals(str)) {
- final String path = downloadEntry.getPath();
- PackageManager manager = new PackageManager(
- getApplicationContext());
- if (manager.launchSetup(path)) {
- startActivity(PackageUtils.getInstallIntent(path));
- } else {
- DialogUtils.showPluginDialog(this, new DialogUtils.ConfiremListener() {
- @Override
- public void onConfirem() {
- MainActivity.uninstallMap.put(
- PackageUtils.getPackageNameByPath(GameDetailsActivity.this, path), path);
- startActivity(PackageUtils.getUninstallIntent(GameDetailsActivity.this,
- path));
- }
- }, null);
- }
- }
- break;
- case R.id.reuse_no_connection:
- gamedetails_ll_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- handler.postDelayed(runnable, 1000);
- break;
- default:
- break;
- }
- }
-
- private void download(View v) {
- if (entity.getApk().size() == 1) {
- if (gamedetails_tv_download.getText().toString()
- .contains("启动")) {
-
- Map kv = new HashMap();
- kv.put("版本", entity.getApk().get(0).getPlatform());
- DataUtils.onEvent(GameDetailsActivity.this, "游戏启动",
- entity.getName(), kv);
-
- PackageUtils.launchApplicationByPackageName(
- getApplicationContext(), entity.getApk()
- .get(0).getPackageName());
- } else {
- ApkEntity apkEntity = entity.getApk().get(0);
- String msg = FileUtils.isCanDownload(apkEntity
- .getSize());
- if (TextUtils.isEmpty(msg)) {
- Map kv = new HashMap();
- kv.put("版本", apkEntity.getPlatform());
- kv.put("状态", "下载开始");
- DataUtils.onEvent(GameDetailsActivity.this,
- "游戏下载", entity.getName(), kv);
-
- Map kv2 = new HashMap();
- kv2.put("版本", apkEntity.getPlatform());
- kv2.put("状态", "下载开始");
- kv2.put("位置", entrance + "-游戏详情-开始");
- DataUtils.onEvent(GameDetailsActivity.this,
- "游戏下载位置", entity.getName(), kv2);
-
- Map kv3 = new HashMap();
- kv3.put(entrance, "下载数");
- kv3.put(entrance, "下载开始");
- DataUtils.onEvent(GameDetailsActivity.this,
- "应用数据", entity.getName(), kv3);
-
- Map map = new HashMap();
- map.put("game", entity.getName());
- map.put("method", "正常");
- map.put("platform",
- PlatformUtils.getInstance(
- getApplicationContext())
- .getPlatformName(
- entity.getApk().get(0)
- .getPlatform()));
- map.put("status", "开始");
- map.put("location", "游戏详情:" + entity.getName());
- map.put("from", entrance);
- map.put("network",
- NetworkUtils.getConnectedType(this));
- map.put("createdOn",
- System.currentTimeMillis() / 1000);
- DataCollectionManager.onEvent(this, "download", map);
-
- DownloadEntry entry = new DownloadEntry();
-
- entry.setUrl(apkEntity.getUrl());
- entry.setName(entity.getName());
- entry.setPath(FileUtils.getDownloadPath(
- GameDetailsActivity.this,
- MD5Utils.getContentMD5(entity.getName()
- + "_"
- + System.currentTimeMillis())
- + ".apk"));
- HashMap meta = new HashMap();
- meta.put("ETag", apkEntity.getEtag());
- meta.put("icon", entity.getIcon());
- meta.put("platform", apkEntity.getPlatform());
- meta.put("gameId", entity.getId());
- meta.put("entrance", entrance + "-游戏详情");
- meta.put("location", "游戏详情:" + entity.getName());
- entry.setMeta(meta);
-
- DownloadManager.getInstance(
- getApplicationContext()).add(entry);
-
- EventBus.getDefault().post(new EBRedDot(1));
-
- gamedetails_tv_download
- .setVisibility(View.GONE);
- gamedetails_progressbar
- .setVisibility(View.VISIBLE);
- gamedetails_tv_per.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setProgress(0);
- gamedetails_tv_per.setText("0.0%");
-
- statusMap.put(entry.getUrl(), "downloading");
-
- } else {
- toast(msg);
- }
- }
- } else {
- if (!dismissEntity.isShow()) {
- dismissEntity.setShow(true);
- DownloadDialog
- .getInstance(GameDetailsActivity.this)
- .showPopupWindow(v, entity,
- entrance + "-游戏详情", statusMap,
- "游戏详情:" + entity.getName());
- }
- }
- }
-
- @Override
- public void onPageSelected(int position) {
- switch (position) {
- case 0:
- if (gamedetails_ll_topbar.getVisibility() == View.VISIBLE) {
- EventBus.getDefault().post(new EBSlide(0, previous, true));
- }
- previous = 0;
-
- titlebar_tv_details.setClickable(false);
- titlebar_tv_information.setClickable(true);
- titlebar_tv_strategy.setClickable(true);
-
- gamedetails_tv_details.setClickable(false);
- gamedetails_tv_information.setClickable(true);
- gamedetails_tv_strategy.setClickable(true);
-
- titlebar_tv_details.setTextColor(getResources().getColor(R.color.theme));
- titlebar_tv_information.setTextColor(getResources().getColor(R.color.title));
- titlebar_tv_strategy.setTextColor(getResources().getColor(R.color.title));
-
- gamedetails_tv_details.setTextColor(getResources().getColor(R.color.theme));
- gamedetails_tv_information.setTextColor(getResources().getColor(R.color.title));
- gamedetails_tv_strategy.setTextColor(getResources().getColor(R.color.title));
- break;
- case 1:
- if (gamedetails_ll_topbar.getVisibility() == View.VISIBLE) {
- EventBus.getDefault().post(new EBSlide(0, previous, true));
- }
- previous = 1;
-
- titlebar_tv_details.setClickable(true);
- titlebar_tv_information.setClickable(false);
- titlebar_tv_strategy.setClickable(true);
-
- gamedetails_tv_details.setClickable(true);
- gamedetails_tv_information.setClickable(false);
- gamedetails_tv_strategy.setClickable(true);
-
- titlebar_tv_details.setTextColor(getResources().getColor(R.color.title));
- titlebar_tv_information.setTextColor(getResources().getColor(R.color.theme));
- titlebar_tv_strategy.setTextColor(getResources().getColor(R.color.title));
-
- gamedetails_tv_details.setTextColor(getResources().getColor(R.color.title));
- gamedetails_tv_information.setTextColor(getResources().getColor(R.color.theme));
- gamedetails_tv_strategy.setTextColor(getResources().getColor(R.color.title));
- break;
- case 2:
- if (gamedetails_ll_topbar.getVisibility() == View.VISIBLE) {
- EventBus.getDefault().post(new EBSlide(0, previous, true));
- }
- previous = 2;
-
- titlebar_tv_details.setClickable(true);
- titlebar_tv_information.setClickable(true);
- titlebar_tv_strategy.setClickable(false);
-
- gamedetails_tv_details.setClickable(true);
- gamedetails_tv_information.setClickable(true);
- gamedetails_tv_strategy.setClickable(false);
-
- titlebar_tv_details.setTextColor(getResources().getColor(R.color.title));
- titlebar_tv_information.setTextColor(getResources().getColor(R.color.title));
- titlebar_tv_strategy.setTextColor(getResources().getColor(R.color.theme));
-
- gamedetails_tv_details.setTextColor(getResources().getColor(R.color.title));
- gamedetails_tv_information.setTextColor(getResources().getColor(R.color.title));
- gamedetails_tv_strategy.setTextColor(getResources().getColor(R.color.theme));
- break;
- }
- }
-
- @Override
- public void onPageScrolled(int position, float positionOffset,
- int positionOffsetPixels) {
- if (positionOffset != 0) {
- lparams.leftMargin = (int) (width * (positionOffset + position)) + width / 4;
- gamedetails_slide_line.setLayoutParams(lparams);
- titlebar_slide_line.setLayoutParams(lparams);
- }
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
-
- }
-
- private class FragmentAdapter extends FragmentPagerAdapter {
-
- public FragmentAdapter(FragmentManager fm) {
- super(fm);
- }
-
- @Override
- public Fragment getItem(int position) {
- Fragment fragment;
- if (position == 0) {
- GameDetailsFragment gameDetailsFragment = new GameDetailsFragment();
- gameDetailsFragment.setParams(entity.getId(),
- entity.getName(), entrance);
- fragment = gameDetailsFragment;
- } else if (position == 1) {
- GameInformationFragment gameInformationFragment = new GameInformationFragment();
- gameInformationFragment.setParams(entity.getId(),
- entity.getName(), entrance);
- fragment = gameInformationFragment;
- } else {
- GameStrategyFragment gameStrategyFragment = new GameStrategyFragment();
- gameStrategyFragment.setParams(entity.getId(),
- entity.getName(), entrance);
- fragment = gameStrategyFragment;;
- }
- return fragment;
- }
-
- @Override
- public int getCount() {
- return 3;
- }
-
- }
-
- private void invalidate() {
- gamedetails_progressbar
- .setProgress((int) (downloadEntry.getPercent() * 10));
- switch (downloadEntry.getStatus()) {
- case downloading:
- case pause:
- case timeout:
- case neterror:
- case waiting:
- gamedetails_tv_per.setText("下载中");
- break;
- case done:
- EventBus.getDefault().post(
- new EBPutUrl(entity.getApk().get(0).getPackageName(),
- downloadEntry.getUrl()));
- gamedetails_tv_per.setText("安装");
- break;
- case cancel:
- case hijack:
- gamedetails_tv_download.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setVisibility(View.GONE);
- gamedetails_tv_per.setVisibility(View.GONE);
- if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
- gamedetails_tv_download.setText("下载《" + entity.getName() + "》");
- } else {
- gamedetails_tv_download.setText("下载《" + entity.getName() + "》"
- + entity.getDownloadAddWord());
- }
- break;
- default:
- break;
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- if (entity != null && entity.getApk().size() == 1) {
- if (PackageManager.isInstalled(entity.getApk().get(0)
- .getPackageName())) {
- gamedetails_tv_download.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setVisibility(View.GONE);
- gamedetails_tv_per.setVisibility(View.GONE);
- gamedetails_tv_download.setText("启动《" + entity.getName() + "》");
- if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
- gamedetails_tv_download.setText("启动《" + entity.getName()
- + "》");
- } else {
- gamedetails_tv_download.setText("启动《" + entity.getName()
- + "》" + entity.getDownloadAddWord());
- }
- } else {
- String url = entity.getApk().get(0).getUrl();
- for (DownloadEntry entry : DownloadManager.getInstance(
- getApplicationContext()).getAll()) {
- if (url.equals(entry.getUrl())) {
- downloadEntry = entry;
- gamedetails_tv_download.setVisibility(View.GONE);
- gamedetails_progressbar.setVisibility(View.VISIBLE);
- gamedetails_tv_per.setVisibility(View.VISIBLE);
- invalidate();
- break;
- }
- }
- }
- }
- DownloadManager.getInstance(getApplicationContext()).addObserver(
- dataWatcher);
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- statusMap.clear();
- DownloadManager.getInstance(getApplicationContext()).removeObserver(dataWatcher);
- if (!isSentReport) {
- long end = Calendar.getInstance().getTimeInMillis();
-
- int seconds = (int) ((end - start) / 1000);
-
- String cost = "";
- if (seconds < 5) {
- cost = "小于5秒";
- } else if (seconds < 30) {
- cost = "5秒-30秒";
- } else if (seconds < 60) {
- cost = "30秒-60秒";
- } else {
- cost = "大于60秒";
- }
-
- if (entity != null && !TextUtils.isEmpty(entity.getName())) {
- Map kv = new HashMap();
- kv.put("停留时长", cost);
- DataUtils.onEvent(this, "插件数据", entity.getName(), kv);
-
- if ("主页-最新插件".equals(entrance)) {
- Map kv2 = new HashMap();
- kv2.put(entity.getName(), "阅读时长:" + cost);
- DataUtils.onEvent(this, "主页数据", "最新插件", kv2);
- } else if ("主页-热门卡牌".equals(entrance)) {
- Map kv2 = new HashMap();
- kv2.put(entity.getName(), "阅读时长:" + cost);
- DataUtils.onEvent(this, "主页数据", "热门卡牌", kv2);
- } else if ("主页-新测卡牌".equals(entrance)) {
- Map kv2 = new HashMap();
- kv2.put(entity.getName(), "阅读时长:" + cost);
- DataUtils.onEvent(this, "主页数据", "新测卡牌", kv2);
- }
-
- if (seconds > 0) {
- Map map = new HashMap();
- map.put("game", entity.getName());
- map.put("time", seconds);
- map.put("from", entrance);
- map.put("createdOn", System.currentTimeMillis() / 1000);
- DataCollectionManager.onEvent(this, "game", map);
- }
-
- isSentReport = true;
- }
- }
- }
-
- //接收下载被删除消息
- public void onEvent(EBDownloadDelete delete) {
- if (entity != null && entity.getApk().size() == 1) {
- String url = entity.getApk().get(0).getUrl();
- if (url.equals(delete.getUrl())) {
- gamedetails_tv_download.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setVisibility(View.GONE);
- gamedetails_tv_per.setVisibility(View.GONE);
- if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
- gamedetails_tv_download.setText("下载《" + entity.getName() + "》");
- } else {
- gamedetails_tv_download.setText("下载《" + entity.getName() + "》" + entity.getDownloadAddWord());
- }
- }
- }
- }
-
- public void onEventMainThread(EBPWDismiss dismiss) {
- if (dismissEntity != null) {
- dismissEntity.setShow(false);
- }
- }
-
- public void onEventMainThread(EBPackage busFour) {
- if (entity.getApk().size() == 1) {
- String packageName = entity.getApk().get(0).getPackageName();
- if (packageName.equals(busFour.getPackageName())) {
- if ("安装".equals(busFour.getType())) {
- gamedetails_tv_download.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setVisibility(View.GONE);
- gamedetails_tv_per.setVisibility(View.GONE);
- gamedetails_tv_download.setText("启动《" + entity.getName()
- + "》");
- } else if ("卸载".equals(busFour.getType())) {
- gamedetails_tv_download.setVisibility(View.VISIBLE);
- gamedetails_progressbar.setVisibility(View.GONE);
- gamedetails_tv_per.setVisibility(View.GONE);
- gamedetails_tv_download.setText("下载《" + entity.getName()
- + "》");
- }
- }
- }
- }
-
- public void onEventMainThread(EBNetworkState busNetworkState) {
- if (gameId != null && busNetworkState.isNetworkConnected()
- && reuse_no_connection.getVisibility() == View.VISIBLE) {
- gamedetails_ll_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- handler.postDelayed(runnable, 1000);
- }
- }
-
- public void onEventMainThread(EBMoveTop moveTop) {
- if (moveTop.getType().equals("top")) {
- if (moveTop.getVisibility() == View.VISIBLE) {
- gamedetails_ll_topbar.setVisibility(View.VISIBLE);
- } else if (moveTop.getVisibility() == View.GONE) {
- gamedetails_ll_topbar.setVisibility( View.GONE);
- } else if (moveTop.getVisibility() == View.INVISIBLE) {
- gamedetails_ll_topbar.setVisibility(View.INVISIBLE);
- }
- if (rparams.topMargin != moveTop.getTopMargin()) {
- rparams.topMargin = moveTop.getTopMargin();
- gamedetails_ll_top.setLayoutParams(rparams);
- }
- } else if (moveTop.getType().equals("topbar")) {
- gamedetails_vp_show.setCurrentItem(2);
- }
- }
-
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- getGameDetails();
- }
- };
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- isDestory = true;
- gamedetails_tv_details = null;
- gamedetails_tv_information = null;
- gamedetails_tv_strategy = null;
- gamedetails_tv_download = null;
- top_tv_name = null;
- top_tv_info = null;
- top_tv_attention = null;
- titlebar_tv_details = null;
- titlebar_tv_information = null;
- titlebar_tv_strategy = null;
- gamedetails_tv_per = null;
- actionbar_tv_title = null;
- top_iv_icon = null;
- gamedetails_iv_share = null;
- gamedetails_slide_line = null;
- titlebar_slide_line = null;
- gamedetails_ll_top = null;
- gamedetails_ll_topbar = null;
- gamedetails_ll_bottom = null;
- gamedetails_ll_loading = null;
- reuse_no_connection = null;
- gamedetails_vp_show = null;
- gamedetails_progressbar = null;
- lparams = null;
- rparams = null;
- concernManager = null;
- downloadEntry = null;
- entity = null;
- gameId = null;
- entrance = null;
- dismissEntity = null;
- statusMap = null;
- handler = null;
- dataWatcher = null;
- }
+public class GameDetailsActivity extends BaseActivity implements View.OnClickListener{
+
+ private Context context = this;
+
+ private String gameId ;
+ private String entrance;
+ private GameDetailsAdapter detailsAdapter;
+ private RecyclerView detailsRecyclerView;
+ private LinearLayout llLoading;
+ private LinearLayout noConnection;
+ private GameDetailsEntity entity = new GameDetailsEntity();
+ private GameEntity gameEntity;
+ private TextView tvDowload,tvPer;
+ private ImageView iv_share;
+ private ProgressBar progressBar;
+ private ArrayMap statusMap;
+ private DismissEntity dismissEntity;
+ private DownloadEntry downloadEntry;
+ private ConcernManager concernManager;
+
+ private boolean isConcern = false;
+ private int concernCode = 0;//0关注不做操作,1添加关注,2删除关注
+ private Handler handler = new Handler();
+
+ private DataWatcher dataWatcher = new DataWatcher() {
+ @Override
+ public void onDataChanged(
+ HashMap downloadingEntries) {
+ if (gameEntity != null && gameEntity.getApk().size() == 1) {
+ String url = gameEntity.getApk().get(0).getUrl();
+ for (Map.Entry entry : downloadingEntries
+ .entrySet()) {
+ if (url.equals(entry.getValue().getUrl())) {
+ if (!"pause".equals(statusMap.get(entry.getValue()
+ .getUrl()))) {
+ downloadEntry = entry.getValue();
+ invalidate();
+ }
+ break;
+ }
+ }
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ View contentView = View.inflate(this, R.layout.activity_new_gamedetails, null);
+ RelativeLayout reuse_actionbar = (RelativeLayout) contentView.findViewById(R.id.reuse_actionbar);
+ iv_share = new ImageView(this);
+ iv_share.setImageResource(R.drawable.share_icon);
+ float dp = getResources().getDisplayMetrics().density;
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)(dp*20),(int)(dp*20));
+ params.addRule( RelativeLayout.CENTER_VERTICAL);
+ params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT );
+ params.setMargins(0,0,(int)(dp*10),0);
+ reuse_actionbar.addView(iv_share,params);
+ gameId = getIntent().getStringExtra("gameId");
+ entrance = getIntent().getStringExtra("entrance");
+ if (gameId != null) {
+
+ } else {
+ gameEntity = (GameEntity) AppController.get("GameEntity", true);
+ gameId = gameEntity.getId();
+ }
+
+ init(contentView,gameEntity.getName());
+ dismissEntity = new DismissEntity(false);
+ statusMap = new ArrayMap<>();
+
+ //初始化关注
+ concernManager = new ConcernManager(getApplicationContext());
+ for (int i = 0; i < concernManager.getAllConcern().size(); i++) {
+ if (concernManager.getAllConcern().get(i).getId().equals(gameId)){
+ isConcern = true;
+ }
+ }
+
+ tvDowload = (TextView) findViewById(R.id.gamedetails_tv_download);
+ progressBar = (ProgressBar) findViewById(R.id.gamedetails_progressbar);
+ llLoading = (LinearLayout) findViewById(R.id.gamedetails_ll_loading);
+ tvPer = (TextView) findViewById(R.id.gamedetails_tv_per);
+ noConnection = (LinearLayout) findViewById(R.id.reuse_no_connection);
+ detailsRecyclerView = (RecyclerView) findViewById(R.id.gamedetails_rv);
+ detailsAdapter = new GameDetailsAdapter(context);
+ detailsRecyclerView.setLayoutManager(new LinearLayoutManager(context));
+ detailsRecyclerView.setAdapter(detailsAdapter);
+ if (entity != null) {
+ initDowload();
+ } else {
+
+ }
+ tvDowload.setOnClickListener(this);
+ tvPer.setOnClickListener(this);
+ noConnection.setOnClickListener(this);
+ iv_share.setOnClickListener(this);
+
+ }
+ @Override
+ public void onClick(final View v) {
+ switch (v.getId()){
+ case R.id.gamedetails_tv_download:
+ Map kv0 = new HashMap();
+ kv0.put("点击", "下载");
+ DataUtils.onEvent(GameDetailsActivity.this, "插件数据", gameEntity.getName(),
+ kv0);
+ if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
+ if (NetworkUtils.isWifiConnected(this)) {
+ download(v);
+ } else {
+ DialogUtils.showWarningDialog(this, new DialogUtils.ConfiremListener() {
+ @Override
+ public void onConfirem() {
+ download(v);
+ }
+ });
+ }
+ } else {
+ toast("稍等片刻~!游戏正在上传中...");
+ }
+ break;
+ case R.id.gamedetails_tv_per:
+ String str = tvPer.getText().toString();
+ if ("继续".equals(str)) {
+ statusMap.put(downloadEntry.getUrl(), "downloading");
+ tvPer.setText(downloadEntry.getPercent() + "%");
+ Message msg = Message.obtain();
+ msg.what = Constants.CONTINUE_DOWNLOAD_TASK;
+ msg.obj = downloadEntry.getUrl();
+ DownloadManager.getInstance(context).put(downloadEntry.getUrl(),
+ System.currentTimeMillis());
+ DownloadManager.getInstance(context).sendMessageDelayed(msg, 1000);
+ } else if ("安装".equals(str)) {
+ final String path = downloadEntry.getPath();
+ PackageManager manager = new PackageManager(
+ context);
+ if (manager.launchSetup(path)) {
+ startActivity(PackageUtils.getInstallIntent(path));
+ } else {
+ DialogUtils.showPluginDialog(this, new DialogUtils.ConfiremListener() {
+ @Override
+ public void onConfirem() {
+ MainActivity.uninstallMap.put(
+ PackageUtils.getPackageNameByPath(GameDetailsActivity.this, path), path);
+ startActivity(PackageUtils.getUninstallIntent(GameDetailsActivity.this,
+ path));
+ }
+ }, null);
+ }
+ } else if("等待".equals(str)){
+
+ } else {
+ statusMap.put(downloadEntry.getUrl(), "pause");
+ tvPer.setText("继续");
+ Message msg = Message.obtain();
+ msg.what = Constants.PAUSE_DOWNLOAD_TASK;
+ msg.obj = downloadEntry.getUrl();
+ DownloadManager.getInstance(context).put(downloadEntry.getUrl(),
+ System.currentTimeMillis());
+ DownloadManager.getInstance(context).sendMessageDelayed(msg, 1000);
+ }
+ break;
+ case R.id.reuse_no_connection:
+ noConnection.setVisibility(View.GONE);
+ llLoading.setVisibility(View.VISIBLE);
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ getGameNews();
+ getGameDetail();
+ }
+ },1000);
+ break;
+ }
+ if (v == iv_share){
+ Map kv = new HashMap();
+ kv.put("点击", "分享");
+ DataUtils.onEvent(this, "插件数据", gameEntity.getName(), kv);
+
+ Map map = new HashMap();
+ map.put("location", "分享");
+ map.put("createOn", System.currentTimeMillis() / 1000);
+ map.put("news", gameEntity.getName());
+ map.put("page", "游戏详情");
+ DataCollectionManager.onEvent(this, "click-item", map);
+
+ String url = "http://112.124.59.31/game_center/static/game_"
+ + gameEntity.getId() + ".html";
+ showShare(url, gameEntity.getName(), gameEntity.getIcon(), entrance, "游戏");
+ }
+ }
+ private void invalidate() {
+ progressBar.setProgress((int) (downloadEntry.getPercent() * 10));
+ switch (downloadEntry.getStatus()) {
+ case downloading:
+ tvPer.setText(downloadEntry.getPercent() + "%");
+ break;
+ case pause:
+ case timeout:
+ case neterror:
+ tvPer.setText("继续");
+ break;
+ case waiting:
+ tvPer.setText("等待");
+ break;
+ case done:
+ EventBus.getDefault().post(
+ new EBPutUrl(gameEntity.getApk().get(0).getPackageName(),
+ downloadEntry.getUrl()));
+ tvPer.setText("安装");
+ break;
+ case cancel:
+ case hijack:
+ tvDowload.setVisibility(View.VISIBLE);
+ progressBar.setVisibility(View.GONE);
+ tvPer.setVisibility(View.GONE);
+ if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
+ tvDowload.setText("下载《" + gameEntity.getName() + "》");
+ } else {
+ tvDowload.setText("下载《" + gameEntity.getName() + "》"
+ + entity.getDownloadAddWord());
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void initDowload() {
+ if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
+ tvDowload.setText("暂无下载");
+ tvDowload
+ .setBackgroundResource(R.drawable.textview_gray_style);
+ tvDowload.setTextColor(0xFF999999);
+ tvDowload.setClickable(false);
+ } else {
+ boolean isInstalled = false;
+ if (gameEntity.getApk() != null
+ && gameEntity.getApk().size() == 1
+ && PackageManager.isInstalled(gameEntity.getApk().get(0)
+ .getPackageName())) {
+ isInstalled = true;
+ }
+ tvDowload.setVisibility(View.VISIBLE);
+ progressBar.setVisibility(View.GONE);
+ tvPer.setVisibility(View.GONE);
+ if (isInstalled) {
+ if (TextUtils.isEmpty(gameEntity.getDownloadAddWord())) {
+ tvDowload.setText("启动《" + gameEntity.getName()
+ + "》");
+ } else {
+ tvDowload.setText("启动《" + gameEntity.getName()
+ + "》" + gameEntity.getDownloadAddWord());
+ }
+ } else {
+ if (TextUtils.isEmpty(gameEntity.getDownloadAddWord())) {
+ tvDowload.setText("下载《" + gameEntity.getName()
+ + "》");
+ } else {
+ tvDowload.setText("下载《" + gameEntity.getName()
+ + "》" + gameEntity.getDownloadAddWord());
+ }
+ }
+ }
+ }
+ private void download(View v) {
+ if (gameEntity.getApk().size() == 1) {
+ if (tvDowload.getText().toString()
+ .contains("启动")) {
+
+ Map kv = new HashMap();
+ kv.put("版本", gameEntity.getApk().get(0).getPlatform());
+ DataUtils.onEvent(GameDetailsActivity.this, "游戏启动",
+ gameEntity.getName(), kv);
+
+ PackageUtils.launchApplicationByPackageName(
+ context, gameEntity.getApk()
+ .get(0).getPackageName());
+ } else {
+ ApkEntity apkEntity = gameEntity.getApk().get(0);
+ String msg = FileUtils.isCanDownload(apkEntity
+ .getSize());
+ if (TextUtils.isEmpty(msg)) {
+ Map kv = new HashMap();
+ kv.put("版本", apkEntity.getPlatform());
+ kv.put("状态", "下载开始");
+ DataUtils.onEvent(GameDetailsActivity.this,
+ "游戏下载", gameEntity.getName(), kv);
+
+ Map kv2 = new HashMap();
+ kv2.put("版本", apkEntity.getPlatform());
+ kv2.put("状态", "下载开始");
+ kv2.put("位置", entrance + "-游戏详情-开始");
+ DataUtils.onEvent(GameDetailsActivity.this,
+ "游戏下载位置", gameEntity.getName(), kv2);
+
+ Map kv3 = new HashMap();
+ kv3.put(entrance, "下载数");
+ kv3.put(entrance, "下载开始");
+ DataUtils.onEvent(GameDetailsActivity.this,
+ "应用数据", gameEntity.getName(), kv3);
+
+ Map map = new HashMap();
+ map.put("game", gameEntity.getName());
+ map.put("method", "正常");
+ map.put("platform",
+ PlatformUtils.getInstance(
+ context)
+ .getPlatformName(
+ gameEntity.getApk().get(0)
+ .getPlatform()));
+ map.put("status", "开始");
+ map.put("location", "游戏详情:" + gameEntity.getName());
+ map.put("from", entrance);
+ map.put("network",
+ NetworkUtils.getConnectedType(this));
+ map.put("createdOn",
+ System.currentTimeMillis() / 1000);
+ DataCollectionManager.onEvent(this, "download", map);
+
+ DownloadEntry entry = new DownloadEntry();
+
+ entry.setUrl(apkEntity.getUrl());
+ entry.setName(gameEntity.getName());
+ entry.setPath(FileUtils.getDownloadPath(
+ GameDetailsActivity.this,
+ MD5Utils.getContentMD5(gameEntity.getName()
+ + "_"
+ + System.currentTimeMillis())
+ + ".apk"));
+ HashMap meta = new HashMap();
+ meta.put("ETag", apkEntity.getEtag());
+ meta.put("icon", gameEntity.getIcon());
+ meta.put("platform", apkEntity.getPlatform());
+ meta.put("gameId", gameEntity.getId());
+ meta.put("entrance", entrance + "-游戏详情");
+ meta.put("location", "游戏详情:" + gameEntity.getName());
+ entry.setMeta(meta);
+
+ DownloadManager.getInstance(
+ context).add(entry);
+
+ EventBus.getDefault().post(new EBRedDot(1));
+
+ tvDowload.setVisibility(View.GONE);
+ progressBar.setVisibility(View.VISIBLE);
+ tvPer.setVisibility(View.VISIBLE);
+ progressBar.setProgress(0);
+ tvPer.setText("0.0%");
+
+ statusMap.put(entry.getUrl(), "downloading");
+
+ } else {
+ toast(msg);
+ }
+ }
+ } else {
+ if (!dismissEntity.isShow()) {
+ dismissEntity.setShow(true);
+ DownloadDialog
+ .getInstance(GameDetailsActivity.this)
+ .showPopupWindow(v, gameEntity,
+ entrance + "-游戏详情", statusMap,
+ "游戏详情:" + gameEntity.getName());
+ }
+ }
+ }
+
+ private void getGameNews() {
+ String url = Config.HOST + "v1d45/game/" + gameId + "/news?limit=3";
+ JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url,
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONArray response) {
+ Utils.log(response.toString());
+ Gson gson = new Gson();
+ ArrayList news = gson.fromJson(
+ response.toString(),
+ new TypeToken>() {
+ }.getType());
+ if (entity!= null && news!= null){
+ entity.setNews(news);
+ }
+ llLoading.setVisibility(View.GONE);
+ detailsAdapter.notifyDataSetChanged();
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ // 无网络连接和访问超时
+ if (error.getClass().equals(NoConnectionError.class)
+ || error.getClass().equals(TimeoutError.class)) {
+ llLoading.setVisibility(View.GONE);
+ }
+ }
+ });
+ AppController.addToRequestQueue(request, GameDetailsActivity.class);
+ }
+
+ private void getGameDetail() {
+ String url = Config.HOST + "v2d0/game/" + gameId + "/detail";
+ JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(url,
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONObject response) {
+
+ Utils.log(response.toString());
+ Gson gson = new Gson();
+ GameDetailsEntity gameDetailsEntity = gson
+ .fromJson(response.toString(),
+ GameDetailsEntity.class);
+ if (entity.getNews() != null) {
+ gameDetailsEntity.setNews(entity.getNews());
+ }
+ entity = gameDetailsEntity;
+ HashMap> map = new HashMap>();
+ if (!response.isNull("news_type")) {
+ try {
+ JSONArray newsType = response
+ .getJSONArray("news_type");
+ for (int i = 0, size = newsType.length(); i < size; i++) {
+ JSONObject jsonObject = newsType
+ .getJSONObject(i);
+ JSONArray subType = jsonObject
+ .getJSONArray("sub_type");
+ ArrayList list = new ArrayList();
+ for (int j = 0; j < subType.length(); j++) {
+ list.add(subType.getString(j));
+ }
+ map.put(jsonObject.getString("type"),
+ list);
+ }
+ } catch (JSONException e) {
+
+ e.printStackTrace();
+ }
+ }
+ for (String type : map.keySet()) {
+ EventBus.getDefault().post(
+ new EBNewsType(type, map.get(type)));
+ }
+ llLoading.setVisibility(View.GONE);
+ noConnection.setVisibility(View.GONE);
+ detailsAdapter.notifyDataSetChanged();
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ noConnection.setVisibility(View.VISIBLE);
+ // 无网络连接和访问超时
+ }
+ });
+ AppController.addToRequestQueue(request, GameDetailsActivity.class);
+ }
+ public void onEventMainThread(EBPWDismiss dismiss) {
+ if (dismissEntity != null) {
+ dismissEntity.setShow(false);
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (gameEntity != null && gameEntity.getApk().size() == 1) {
+ if (PackageManager.isInstalled(gameEntity.getApk().get(0)
+ .getPackageName())) {
+ tvDowload.setVisibility(View.VISIBLE);
+ progressBar.setVisibility(View.GONE);
+ tvPer.setVisibility(View.GONE);
+ tvDowload.setText("启动《" + gameEntity.getName() + "》");
+ if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
+ tvDowload.setText("启动《" + gameEntity.getName()
+ + "》");
+ } else {
+ tvDowload.setText("启动《" + gameEntity.getName()
+ + "》" + gameEntity.getDownloadAddWord());
+ }
+ } else {
+ String url = gameEntity.getApk().get(0).getUrl();
+ for (DownloadEntry entry : DownloadManager.getInstance(
+ context).getAll()) {
+ if (url.equals(entry.getUrl())) {
+ downloadEntry = entry;
+ tvDowload.setVisibility(View.GONE);
+ progressBar.setVisibility(View.VISIBLE);
+ tvPer.setVisibility(View.VISIBLE);
+ invalidate();
+ break;
+ }
+ }
+ }
+ }
+ DownloadManager.getInstance(context).addObserver(
+ dataWatcher);
+ }
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ String uuid = ConcernUtils.UUID(this);
+ if (isConcern == true&&concernCode ==2){
+ //取消关注
+ ConcernUtils.DeleteConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern/" + gameId, new ConcernUtils.DownJsonListener() {
+ @Override
+ public void downSucced(String str) {
+ Utils.log("删除提交成功==游戏详情");
+ }
+
+ @Override
+ public void downFailed() {
+ Utils.log("删除提交失败==游戏详情");
+ }
+ });
+
+ }else if (isConcern == false&& concernCode == 1){
+ //添加关注
+ ConcernUtils.PostConcernGameId("[" + gameId + "]", Config.HOST + "v2d0/device/" + uuid + "/concern", new ConcernUtils.DownJsonListener() {
+ @Override
+ public void downSucced(String str) {
+ Utils.log("关注提交成功==游戏详情");
+ }
+
+ @Override
+ public void downFailed() {
+ Utils.log("关注提交失败==游戏详情");
+ }
+ });
+ }else {
+ Utils.log("无关注操作==游戏详情");
+ }
+ gameId = null;
+ entrance = null;
+ detailsAdapter = null;
+ context = null;
+ detailsRecyclerView = null;
+ llLoading = null;
+ noConnection = null;
+ entity = null;
+ gameEntity = null;
+ tvDowload = null;
+ tvPer = null;
+ progressBar = null;
+ statusMap = null;
+ dismissEntity = null;
+ downloadEntry = null;
+ concernManager = null;
+ handler = null;
+ }
+
+
+ public class GameDetailsAdapter extends RecyclerView.Adapter{
+ private Context context;
+
+ public GameDetailsAdapter(Context context) {
+ this.context = context;
+ getGameDetail();
+ getGameNews();
+ }
+ @Override
+ public int getItemViewType(int position){
+ if (position == 0){
+
+ return 0;
+ }
+ else if (entity.getTag()!=null && entity.getTag().size()>0&&position == 1){
+ return 1;
+ }else if (entity.getNews()!=null && entity.getNews().size()>0&&(position == 1||entity.getTag()!=null&&entity.getTag().size()>0&&position == 2)){
+ return 2;
+ }else if (entity.getGallery()!=null && entity.getGallery().size()>0){
+ return 3;
+ }
+ else {
+ return super.getItemViewType(position);
+ }
+
+ }
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view ;
+ switch (viewType){
+ case 0:
+ view = LayoutInflater.from(context).inflate(R.layout.gamedetails_rv_item_top,parent,false);
+ return new TopViewHolder(view);
+ case 1:
+ view = LayoutInflater.from(context).inflate(R.layout.gamedetails_rv_item_plugin,parent,false);
+ return new PluginViewHolder(view);
+ case 2:
+ view = LayoutInflater.from(context).inflate(R.layout.gamedetails_rv_item_zixun,parent,false);
+ return new ZiXunViewHolder(view);
+ case 3:
+ view = LayoutInflater.from(context).inflate(R.layout.gamedetails_rv_item_game,parent,false);
+ return new GameViewHolder(view);
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ if (holder instanceof TopViewHolder){
+ TopViewHolder topViewHolder = (TopViewHolder) holder;
+ initTopViewHolder(topViewHolder);
+ } else if (holder instanceof PluginViewHolder){
+ PluginViewHolder pluginViewHolder = (PluginViewHolder) holder;
+ initPluginViewHolder(pluginViewHolder);
+ } else if (holder instanceof ZiXunViewHolder){
+ ZiXunViewHolder ziXunViewHolder = (ZiXunViewHolder) holder;
+ initZiXunViewHolder(ziXunViewHolder);
+ } else if (holder instanceof GameViewHolder){
+ GameViewHolder gameViewHolder = (GameViewHolder) holder;
+ initGameViewHolder(gameViewHolder);
+ }
+ }
+
+ private void initGameViewHolder(GameViewHolder gameViewHolder) {
+ gameViewHolder.gamepic_rv.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
+ gameViewHolder.gamepic_rv.setAdapter(new GamePicAdapter());
+ gameViewHolder.gamepic_rv.addItemDecoration(new HorizontalItemDecoration(
+ context, 1, entity.getGallery().size()));
+ gameViewHolder.game_content.setText(entity.getDes());
+
+ }
+
+ private void initZiXunViewHolder(ZiXunViewHolder ziXunViewHolder) {
+ LinearLayout llContainer = ziXunViewHolder.llContainer;
+ int childCount = llContainer.getChildCount();
+ if (entity.getNews().size()<3){
+ ziXunViewHolder.llMore.setVisibility(View.GONE);
+ }else if (entity.getNews().size()==0){
+ ziXunViewHolder.view.setVisibility(View.GONE);
+ }
+ if ( childCount == 0){
+ for (int i =0;i kv = new HashMap();
+ kv.put("状态", "关注");
+ DataUtils.onEvent(GameDetailsActivity.this, "游戏关注", gameEntity.getName(), kv);
+
+ Map kv2 = new HashMap();
+ kv2.put("点击", "关注");
+ DataUtils.onEvent(GameDetailsActivity.this, "插件数据", gameEntity.getName(), kv2);
+
+ Map map = new HashMap();
+ map.put("game", gameEntity.getName());
+ map.put("type", "关注");
+ map.put("createdOn", System.currentTimeMillis() / 1000);
+ DataCollectionManager.onEvent(GameDetailsActivity.this, "concern", map);
+ concernCode = 1;
+ concernManager.addByEntity(gameEntity);
+ topViewHolder.tv_concern.setText("取消关注");
+ topViewHolder.tv_concern.setBackgroundResource(R.drawable.border_red_bg);
+ topViewHolder.tv_concern.setTextColor(0xffbc2132);
+ Toast.makeText(context,"关注成功",Toast.LENGTH_SHORT).show();
+ } else {
+ Map kv2 = new HashMap();
+ kv2.put("点击", "取消关注");
+ DataUtils.onEvent(GameDetailsActivity.this, "插件数据", gameEntity.getName(), kv2);
+
+ showCancelDialog(topViewHolder.tv_concern);
+ }
+ }
+ });
+
+ }
+ private void showCancelDialog(final TextView attention) {
+ final Dialog dialog = new Dialog(context);
+ View view = View.inflate(context, R.layout.common_alertdialog,
+ null);
+ TextView title = (TextView) view.findViewById(R.id.alertdialog_title);
+ title.setText("取消关注");
+ TextView cancel = (TextView) view.findViewById(R.id.alertdialog_cannel);
+ cancel.setText("暂不取消");
+ TextView confirm = (TextView) view.findViewById(R.id.alertdialog_confirm);
+ confirm.setText("确定取消");
+ cancel.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ TextView message = (TextView) view.findViewById(R.id.alertdialog_content);
+
+ Spanned content = Html
+ .fromHtml("取消关注游戏后,您将无法及时收到游戏的攻略、资讯等最新动态提醒,您确定取消吗?");
+ message.setText(content);
+
+ view.findViewById(R.id.alertdialog_confirm).setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ Map kv = new HashMap();
+ kv.put("状态", "取消关注");
+ DataUtils.onEvent(GameDetailsActivity.this, "游戏关注",
+ gameEntity.getName(), kv);
+
+ Map map = new HashMap();
+ map.put("game", gameEntity.getName());
+ map.put("type", "关注");
+ map.put("createdOn", System.currentTimeMillis() / 1000);
+ DataCollectionManager.onEvent(GameDetailsActivity.this,
+ "concern", map);
+
+ concernCode = 2;
+ concernManager.deleteConcern(gameEntity.getId());
+ dialog.dismiss();
+ attention.setText("关注");
+ attention
+ .setBackgroundResource(R.drawable.textview_red_style);
+ attention.setTextColor(0xffffffff);
+ }
+ });
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(view);
+ dialog.show();
+ }
+
+ @Override
+ public int getItemCount() {
+ int index = 1 ;
+ if (entity.getTag()!=null && entity.getTag().size()>0){
+ index++;
+ }
+ if (entity.getNews()!=null && entity.getNews().size()>0){
+ index++;
+ }
+ if (entity.getGallery()!=null && entity.getGallery().size()>0){
+ index++;
+ }
+ return index;
+ }
+ public class TopViewHolder extends ViewHolder{
+ View view;
+ TextView tv_name,tv_info,tv_concern;
+ ImageView iv_game;
+ public TopViewHolder(View itemView) {
+ super(itemView);
+ view = itemView;
+ tv_name = (TextView) view.findViewById(R.id.gamedetails_game_name);
+ tv_concern = (TextView) view.findViewById(R.id.gamedetails_concern_btn);
+ tv_info = (TextView) view.findViewById(R.id.gamedetails_top_tv_info);
+ iv_game = (ImageView) view.findViewById(R.id.gamedetails_game_thumb);
+ if (isConcern) {
+ tv_concern.setText("取消关注");
+ tv_concern.setBackgroundResource(R.drawable.border_red_bg);
+ tv_concern.setTextColor(0xffbc2132);
+ } else {
+ tv_concern.setText("关注");
+ tv_concern.setBackgroundResource(R.drawable.textview_red_style);
+ tv_concern.setTextColor(0xffffffff);
+ }
+ }
+ }
+ public class PluginViewHolder extends ViewHolder{
+ View view;
+ LinearLayout llContainer;
+ public PluginViewHolder(View itemView) {
+ super(itemView);
+ view = itemView;
+ llContainer = (LinearLayout) view.findViewById(R.id.gamedetails_rv_item_plugin_ll);
+ }
+ }
+ public class ZiXunViewHolder extends ViewHolder{
+ View view;
+ LinearLayout llContainer;
+ LinearLayout llMore;
+ public ZiXunViewHolder(View itemView) {
+ super(itemView);
+ view = itemView;
+ llContainer = (LinearLayout) view.findViewById(R.id.gamedetails_rv_item_zixun_ll);
+ llMore = (LinearLayout) view.findViewById(R.id.gamedetails_rv_item_zixun_more);
+ }
+ }
+ public class GameViewHolder extends ViewHolder{
+ View view;
+ RecyclerView gamepic_rv;
+ TextView game_content;
+
+ public GameViewHolder(View itemView) {
+ super(itemView);
+ view = itemView;
+ gamepic_rv = (RecyclerView) view.findViewById(R.id.gamedetails_rv_item_game_rv);
+ game_content = (TextView) view.findViewById(R.id.gamedetails_rv_item_game_content);
+ }
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder{
+ public ViewHolder(View itemView) {
+ super(itemView);
+ }
+ }
+ }
+ public class GamePicAdapter extends RecyclerView.Adapter{
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View inflate = LayoutInflater.from(context).inflate(R.layout.gamedetails_screenshot_item, parent, false);
+ return new ViewHolder(inflate);
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder holder, final int position) {
+ holder.gamepic_iv.setImageResource(R.drawable.me_icon);
+ holder.gamepic_iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
+ ImageUtils.getInstance(context).display(entity.getGallery().get(position),holder.gamepic_iv);
+ holder.view.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(GameDetailsActivity.this,ViewImageActivity.class);
+ intent.putExtra("urls",entity.getGallery());
+ intent.putExtra("currentItem",position);
+ startActivity(intent);
+ }
+ });
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return 5;
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+ View view;
+ ImageView gamepic_iv;
+ public ViewHolder(View itemView) {
+ super(itemView);
+ view = itemView;
+ gamepic_iv = (ImageView) view.findViewById(R.id.screenshot_item_iv);
+ gamepic_iv.setPadding((int)(context.getResources().getDisplayMetrics().density*2),0,(int)(context.getResources().getDisplayMetrics().density*2),0);
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java
index d90e9352ac..972337a7ac 100644
--- a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java
@@ -4,8 +4,11 @@ import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
import com.gh.base.BaseActivity;
import com.gh.common.util.DisplayUtils;
@@ -17,15 +20,20 @@ import java.util.ArrayList;
/**
* Created by LGT on 2016/8/29.
*/
-public class GameNewsActivity extends BaseActivity {
+public class GameNewsActivity extends BaseActivity implements View.OnClickListener{
+
+ private static GameNewsAdapter adapter;
+ private static GameNewsTypeListAdapter typeListAdapter;
private RecyclerView game_news_list;
- private GameNewsAdapter adapter;
- private LinearLayoutManager layoutManager;
private RecyclerView game_news_top_type_list;
+ private LinearLayoutManager layoutManager;
+ private ImageView ivSearch;
private boolean isDestroy;
+ public static int selectedPosition = 0; //新闻类型选中位置
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -34,10 +42,23 @@ public class GameNewsActivity extends BaseActivity {
View contentView = View.inflate(this, R.layout.activity_game_news, null);
+ ivSearch = new ImageView(this);
+ ivSearch.setImageResource(R.drawable.search_icon);
+
+ RelativeLayout.LayoutParams ivSearchParams = new RelativeLayout.LayoutParams(
+ DisplayUtils.dip2px(this, 20), DisplayUtils.dip2px(this, 20));
+ ivSearchParams.addRule( RelativeLayout.CENTER_VERTICAL);
+ ivSearchParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ ivSearchParams.setMargins(0, 0, DisplayUtils.dip2px(this, 10), 0);
+
+ RelativeLayout reuse_actionbar = (RelativeLayout) contentView.findViewById(R.id.reuse_actionbar);
+ reuse_actionbar.addView(ivSearch,ivSearchParams);
+ ivSearch.setOnClickListener(this);
+
String gameName = getIntent().getStringExtra("gameName");
init(contentView, gameName);
- ArrayList typeList = getIntent().getStringArrayListExtra("articleTypes");
+ final ArrayList typeList = getIntent().getStringArrayListExtra("articleTypes");
typeList.add(0, "全部");
String gameId = getIntent().getStringExtra("gameId");
@@ -45,17 +66,18 @@ public class GameNewsActivity extends BaseActivity {
game_news_list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
game_news_list.setLayoutManager(layoutManager);
- adapter = new GameNewsAdapter(this, typeList, gameId);
+ adapter = new GameNewsAdapter(this, typeList, gameId, game_news_top_type_list,game_news_list);
game_news_list.setAdapter(adapter);
game_news_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
-
if (layoutManager.findFirstVisibleItemPosition() >= 1) {
game_news_top_type_list.setVisibility(View.VISIBLE);
+ ivSearch.setVisibility(View.VISIBLE);
} else {
game_news_top_type_list.setVisibility(View.GONE);
+ ivSearch.setVisibility(View.GONE);
}
}
@@ -74,15 +96,54 @@ public class GameNewsActivity extends BaseActivity {
game_news_top_type_list.setHasFixedSize(true);
game_news_top_type_list.setLayoutManager(new GridLayoutManager(this, 5));
- game_news_top_type_list.setAdapter(new GameNewsTypeListAdapter(this, typeList));
+ typeListAdapter = new GameNewsTypeListAdapter(this, typeList);
+ game_news_top_type_list.setAdapter(typeListAdapter);
+
ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams();
- params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 40);
+ params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 37);
game_news_top_type_list.setLayoutParams(params);
+ //禁止由于滑动出现的阴影
+ game_news_top_type_list.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ float Y1 = 0;
+ float Y2;
+ switch (event.getAction()){
+ case MotionEvent.ACTION_DOWN:
+ Y1 = event.getY();
+ break;
+ case MotionEvent.ACTION_MOVE:
+ Y2 = event.getY();
+ if (Math.abs(Y1 - Y2)>0){
+ return true;
+ }
+ break;
+ }
+ return false;
+ }
+ });
+ }
+
+ public static void notifyTypeItem(String type){
+ adapter.notifyDataTypeAdapter(type);
+ typeListAdapter.notifyDataSetChanged();
}
@Override
protected void onDestroy() {
super.onDestroy();
isDestroy = true;
+ adapter = null;
+ typeListAdapter = null;
+ selectedPosition = 0;
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v == ivSearch){
+ game_news_list.scrollToPosition(0);
+ game_news_top_type_list.setVisibility(View.GONE);
+ ivSearch.setVisibility(View.GONE);
+ }
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java
index 2414931c05..3b2dde7cc8 100644
--- a/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java
@@ -6,6 +6,7 @@ import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
+import android.os.Message;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -30,6 +31,7 @@ import com.android.volley.VolleyError;
import com.gh.base.AppController;
import com.gh.base.BaseActivity;
import com.gh.common.constant.Config;
+import com.gh.common.constant.Constants;
import com.gh.common.util.ConcernUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DialogUtils;
@@ -51,7 +53,6 @@ import com.gh.gamecenter.entity.DismissEntity;
import com.gh.gamecenter.entity.GameDetailsEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.NewsEntity;
-import com.gh.gamecenter.eventbus.EBDownloadDelete;
import com.gh.gamecenter.eventbus.EBNewsType;
import com.gh.gamecenter.eventbus.EBPWDismiss;
import com.gh.gamecenter.eventbus.EBPutUrl;
@@ -204,8 +205,15 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
break;
case R.id.gamedetails_tv_per:
String str = tvPer.getText().toString();
- if ("下载中".equals(str)) {
- startActivity(new Intent(this, DownloadManagerActivity.class));
+ if ("继续".equals(str)) {
+ statusMap.put(downloadEntry.getUrl(), "downloading");
+ tvPer.setText(downloadEntry.getPercent() + "%");
+ Message msg = Message.obtain();
+ msg.what = Constants.CONTINUE_DOWNLOAD_TASK;
+ msg.obj = downloadEntry.getUrl();
+ DownloadManager.getInstance(context).put(downloadEntry.getUrl(),
+ System.currentTimeMillis());
+ DownloadManager.getInstance(context).sendMessageDelayed(msg, 1000);
} else if ("安装".equals(str)) {
final String path = downloadEntry.getPath();
PackageManager manager = new PackageManager(
@@ -223,6 +231,17 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
}
}, null);
}
+ } else if("等待".equals(str)){
+
+ } else {
+ statusMap.put(downloadEntry.getUrl(), "pause");
+ tvPer.setText("继续");
+ Message msg = Message.obtain();
+ msg.what = Constants.PAUSE_DOWNLOAD_TASK;
+ msg.obj = downloadEntry.getUrl();
+ DownloadManager.getInstance(context).put(downloadEntry.getUrl(),
+ System.currentTimeMillis());
+ DownloadManager.getInstance(context).sendMessageDelayed(msg, 1000);
}
break;
case R.id.reuse_no_connection:
@@ -258,11 +277,15 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
progressBar.setProgress((int) (downloadEntry.getPercent() * 10));
switch (downloadEntry.getStatus()) {
case downloading:
+ tvPer.setText(downloadEntry.getPercent() + "%");
+ break;
case pause:
case timeout:
case neterror:
+ tvPer.setText("继续");
+ break;
case waiting:
- tvPer.setText("下载中");
+ tvPer.setText("等待");
break;
case done:
EventBus.getDefault().post(
@@ -324,7 +347,6 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
}
}
}
-
private void download(View v) {
if (gameEntity.getApk().size() == 1) {
if (tvDowload.getText().toString()
@@ -512,24 +534,6 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
});
AppController.addToRequestQueue(request, NewGameDetailsActivity.class);
}
-
- //接收下载被删除消息
- public void onEvent(EBDownloadDelete delete) {
- if (gameEntity != null && gameEntity.getApk().size() == 1) {
- String url = gameEntity.getApk().get(0).getUrl();
- if (url.equals(delete.getUrl())) {
- tvDowload.setVisibility(View.VISIBLE);
- progressBar.setVisibility(View.GONE);
- tvPer.setVisibility(View.GONE);
- if (TextUtils.isEmpty(entity.getDownloadAddWord())) {
- tvDowload.setText("下载《" + gameEntity.getName() + "》");
- } else {
- tvDowload.setText("下载《" + gameEntity.getName() + "》" + entity.getDownloadAddWord());
- }
- }
- }
- }
-
public void onEventMainThread(EBPWDismiss dismiss) {
if (dismissEntity != null) {
dismissEntity.setShow(false);
@@ -732,13 +736,11 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
ziXunViewHolder.llMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (entity.getArticleTypes() != null
- && gameEntity.getId() != null
- && gameEntity.getName() != null) {
- Intent intent = new Intent(context, GameNewsActivity.class);
- intent.putExtra("articleTypes", entity.getArticleTypes());
- intent.putExtra("gameName", gameEntity.getName());
- intent.putExtra("gameId", gameId);
+ if (entity.getArticleTypes()!= null&&gameEntity.getId()!=null&&gameEntity.getName()!= null){
+ Intent intent = new Intent(context,GameDeatilsNewsActivity.class);
+ intent.putExtra("articleTypes",entity.getArticleTypes());
+ intent.putExtra("gameName",gameEntity.getName());
+ intent.putExtra("gameId",gameId);
context.startActivity(intent);
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/NewsActivity.java b/app/src/main/java/com/gh/gamecenter/NewsActivity.java
index cac9c67308..98453503ab 100644
--- a/app/src/main/java/com/gh/gamecenter/NewsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/NewsActivity.java
@@ -712,7 +712,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener {
return;
}
JsonObjectExtendedRequest gameRequest = new JsonObjectExtendedRequest(
- TimestampUtils.addTimestamp(Config.HOST + "v1d45/game/"
+ TimestampUtils.addTimestamp(Config.HOST + "v2d0/game/"//版本号修改了
+ game_id + "/news_digest", Constants.GAME_CD),
new Response.Listener() {
@Override
@@ -1022,6 +1022,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener {
holder.essaydetails_ll_top.setVisibility(View.VISIBLE);
holder.cardView.setVisibility(View.VISIBLE);
ImageUtils.getInstance(getApplicationContext()).displayFile(gameEntity.getIcon(), holder.essaydetails_icon);
+ holder.essaydetails_name.setText(gameEntity.getName());
for (int i = 0; i < concernManager.getAllConcern().size(); i++) {
if (concernManager.getAllConcern().get(i).getId().equals(gameEntity.getId())){
isConcern = true;
diff --git a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java
index b8ace771f2..c2c43e877f 100644
--- a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java
@@ -1,5 +1,6 @@
package com.gh.gamecenter;
+import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
@@ -10,6 +11,7 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -109,10 +111,22 @@ public class NewsSearchActivity extends BaseActivity {
@Override
public void onClick(View v) {
searchKey = edSearch.getText().toString().trim();
- if (searchKey.length()>=1){
+ if (searchKey.length() >= 1){
newsEntities.clear();
- page = 1;
- LoadNewsData(page);
+ searchAdapter.notifyDataSetChanged();
+ llLoading.setVisibility(View.VISIBLE);
+ searchNonews.setVisibility(View.GONE);
+ cardView.setVisibility(View.GONE);
+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ page = 1;
+ LoadNewsData(page);
+ }
+ },1000);
+
}else {
Toast.makeText(getApplicationContext(),"请输入关键字",Toast.LENGTH_SHORT).show();
}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java
index 7bdc632dc8..d0fe4fc75b 100644
--- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java
@@ -1,6 +1,7 @@
package com.gh.gamecenter.adapter;
import android.content.Context;
+import android.content.Intent;
import android.net.Uri;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
@@ -8,6 +9,7 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Toast;
import com.android.volley.Response;
import com.android.volley.VolleyError;
@@ -16,6 +18,7 @@ import com.gh.common.constant.Config;
import com.gh.common.util.DisplayUtils;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.GameNewsActivity;
+import com.gh.gamecenter.NewsSearchActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.CardListViewHolder;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
@@ -39,6 +42,11 @@ import java.util.List;
public class GameNewsAdapter extends RecyclerView.Adapter {
private Context context;
+ private RecyclerView game_news_top_type_list;
+ private RecyclerView game_news_list;
+
+ private GameNewsTypeListAdapter typeListAdapter;
+ private NewsListAdapter newsListAdapter;
private ArrayList newsList;
private ArrayList typeList;
@@ -52,9 +60,13 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
private boolean isRemove;
private boolean isNetworkError;
- public GameNewsAdapter(Context context, ArrayList tList, String id) {
+
+ public GameNewsAdapter(Context context, ArrayList tList, String id, RecyclerView game_news_top_type_list, RecyclerView game_news_list) {
this.context = context;
+ this.game_news_top_type_list = game_news_top_type_list;
+ this.game_news_list = game_news_list;
+
newsList = new ArrayList<>();
typeList = tList;
@@ -91,14 +103,24 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
Type listType = new TypeToken>() {}.getType();
Gson gson = new Gson();
List list = gson.fromJson(response.toString(), listType);
-
+ if (offset == 0){
+ newsList.clear();
+ }
if (list != null && list.size() != 0) {
newsList.addAll(list);
if (offset == 0) {
- notifyItemRangeInserted(0, 4);
+ if (newsListAdapter != null){
+ newsListAdapter.notifyDataSetChanged();
+ }
+ game_news_list.scrollToPosition(1);
+ notifyDataSetChanged();
} else {
notifyItemChanged(2);
}
+ if (list.size()<20){
+ isRemove = true;
+ notifyItemChanged(3);
+ }
}
isLoading = false;
@@ -108,6 +130,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
@Override
public void onErrorResponse(VolleyError error) {
isLoading = false;
+ isNetworkError = true;
}
});
AppController.addToRequestQueue(request, GameNewsActivity.class);
@@ -135,17 +158,18 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
}
@Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+ public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof GameNewsTypeListViewHolder) {
GameNewsTypeListViewHolder viewHolder = (GameNewsTypeListViewHolder) holder;
ViewGroup.LayoutParams params = viewHolder.game_news_type_list.getLayoutParams();
- params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(context, 40);
+ params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(context, 37);
viewHolder.game_news_type_list.setLayoutParams(params);
if (viewHolder.game_news_type_list.getAdapter() == null) {
viewHolder.game_news_type_list.setHasFixedSize(true);
viewHolder.game_news_type_list.setLayoutManager(new GridLayoutManager(context, 5));
- viewHolder.game_news_type_list.setAdapter(new GameNewsTypeListAdapter(context, typeList));
+ typeListAdapter = new GameNewsTypeListAdapter(context, typeList);
+ viewHolder.game_news_type_list.setAdapter(typeListAdapter);
}
} else if (holder instanceof CardListViewHolder) {
CardListViewHolder viewHolder = (CardListViewHolder) holder;
@@ -154,10 +178,15 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
ViewGroup.LayoutParams params = viewHolder.card_list_show.getLayoutParams();
params.height = height;
viewHolder.card_list_show.setLayoutParams(params);
+ //解决悬挂的typeList,由于新闻条目过少造成的BUG
+ if (newsList.size()<14){
+ game_news_top_type_list.setVisibility(View.GONE);
+ }
if (viewHolder.card_list_show.getAdapter() == null) {
viewHolder.card_list_show.setHasFixedSize(true);
viewHolder.card_list_show.setLayoutManager(new LinearLayoutManager(context));
- viewHolder.card_list_show.setAdapter(new NewsListAdapter(context, newsList, "游戏新闻"));
+ newsListAdapter = new NewsListAdapter(context, newsList, "游戏新闻");
+ viewHolder.card_list_show.setAdapter(newsListAdapter);
viewHolder.card_list_show.addItemDecoration(new VerticalItemDecoration(context, 1));
listsize = newsList.size();
} else {
@@ -165,6 +194,32 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
listsize + 1, newsList.size() - listsize);
listsize = newsList.size();
}
+ }else if (holder instanceof FooterViewHolder){
+ FooterViewHolder footerViewHolder = ((FooterViewHolder) holder);
+ if (isRemove){
+ footerViewHolder.footerview_tv_loading.setText("加载完毕");
+ footerViewHolder.footerview_progressbar.setVisibility(View.GONE);
+ }else {
+ footerViewHolder.footerview_tv_loading.setText("加载中...");
+ footerViewHolder.footerview_progressbar.setVisibility(View.VISIBLE);
+ }
+ }else if (holder instanceof GameNewsSearchViewHolder){
+ GameNewsSearchViewHolder searchViewHolder = ((GameNewsSearchViewHolder) holder);
+ searchViewHolder.game_news_tv_search.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String searchKey = ((GameNewsSearchViewHolder) holder).game_news_et_search.getText().toString().trim();
+ if (searchKey.length()>=1){
+ Intent intent = new Intent(context,NewsSearchActivity.class);
+ intent.putExtra("gameName","搜索结果");
+ intent.putExtra("searchKey",searchKey);
+ intent.putExtra("gameId",gameId);
+ context.startActivity(intent);
+ }else {
+ Toast.makeText(context,"请输入关键字",Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
}
}
@@ -197,4 +252,11 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
return isNetworkError;
}
+ public void notifyDataTypeAdapter(String type){
+ typeListAdapter.notifyDataSetChanged();
+ newsType = type;
+ isRemove = false;
+ addList(0);
+ }
+
}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java
index f49a157141..40fd33fd50 100644
--- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java
@@ -1,11 +1,15 @@
package com.gh.gamecenter.adapter;
import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.GradientDrawable;
+import android.graphics.drawable.StateListDrawable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import com.gh.gamecenter.GameNewsActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.GameNewsTypeViewHolder;
@@ -26,16 +30,61 @@ public class GameNewsTypeListAdapter extends RecyclerView.Adapter packages;
+
+ public void setColor(String color) {
+ this.color = color;
+ }
+ public String getColor() {
+ return color;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getName() {
+ return name;
+ }
+
+ public void setPackage(List packages) {
+ this.packages = packages;
+ }
+ public List getPackage() {
+ return packages;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java
index 286158d1ee..cb7bfc83db 100644
--- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java
+++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java
@@ -22,6 +22,8 @@ public class GameEntity {
private ArrayList apk;
+ private ArrayList collection;
+
private String slide;
private TestEntity test;
@@ -98,6 +100,14 @@ public class GameEntity {
this.apk = apk;
}
+ public ArrayList getCollection() {
+ return collection;
+ }
+
+ public void setCollection(ArrayList collection) {
+ this.collection = collection;
+ }
+
public String getSlide() {
return slide;
}
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 18b20bea8d..c65c9d6804 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
@@ -29,13 +29,11 @@ import com.gh.gamecenter.entity.DismissEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.eventbus.EBDownloadDelete;
-import com.gh.gamecenter.eventbus.EBImage;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPWDismiss;
import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.eventbus.EBUISwitch;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -62,9 +60,6 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
private ArrayMap nameMap;
private ArrayMap pluginNameMap;
private ArrayMap statusMap;
- private ArrayMap heightMap;
-
- private List msgList;
private DismissEntity dismissEntity;
@@ -138,15 +133,12 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
view = View.inflate(getActivity(), R.layout.plugin1_fragment, null);
- locationMap = new ArrayMap<>();
- gameMap = new ArrayMap<>();
- platformMap = new ArrayMap<>();
- nameMap = new ArrayMap<>();
- pluginNameMap = new ArrayMap<>();
- statusMap = new ArrayMap<>();
- heightMap = new ArrayMap<>();
-
- msgList = new ArrayList<>();
+ locationMap = new ArrayMap();
+ gameMap = new ArrayMap>();
+ platformMap = new ArrayMap>();
+ nameMap = new ArrayMap();
+ pluginNameMap = new ArrayMap();
+ statusMap = new ArrayMap();
dismissEntity = new DismissEntity(false);
@@ -180,21 +172,10 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
recyclerview.setHasFixedSize(true);
recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
adapter = new Game1FragmentAdapter(Game1Fragment.this, locationMap, gameMap,
- platformMap, nameMap, pluginNameMap, heightMap, recyclerview, game_swipe_refresh, reuse_no_connection,
+ platformMap, nameMap, pluginNameMap,recyclerview, game_swipe_refresh, reuse_no_connection,
statusMap, dismissEntity, game_pb_loading, false);
recyclerview.setAdapter(adapter);
- recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
-
- if (newState == RecyclerView.SCROLL_STATE_IDLE && msgList.size() != 0) {
- for (int i = 0; i < msgList.size(); i++) {
- adapter.notifyItemChanged(msgList.remove(i));
- }
- }
- }
- });
+// recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
EventBus.getDefault().register(this);
}
@@ -302,7 +283,7 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
handler.postDelayed(runnable, 1000);
} else if (adapter.isNetworkError()) {
adapter.setNetworkError(false);
- adapter.notifyItemChanged(adapter.getItemCount() - 1);
+// adapter.notifyItemChanged(adapter.getItemCount() - 1);
adapter.load();
}
}
@@ -330,31 +311,6 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
}
}
- // 图片大小改变的消息
- public void onEvent(EBImage image) {
- heightMap.put(image.getUrl(), image.getHeight());
-
- for (int i = 0, size = adapter.getSubjectList().size(); i < size; i++) {
- if (!TextUtils.isEmpty(adapter.getSubjectList().get(i).getData().get(0).getImage())
- && adapter.getSubjectList().get(i).getData().get(0).getImage().equals(image.getUrl())) {
- if (adapter.getPluginList().isEmpty()) {
- if (recyclerview.getScrollState() == RecyclerView.SCROLL_STATE_IDLE){
- adapter.notifyItemChanged(i + 1);
- } else {
- msgList.add(i + 1);
- }
- } else {
- if (recyclerview.getScrollState() == RecyclerView.SCROLL_STATE_IDLE){
- adapter.notifyItemChanged(i + 2);
- } else {
- msgList.add(i + 2);
- }
- }
- break;
- }
- }
- }
-
private GameEntity getEntityByLocation(int position) {
List pluginList = adapter.getPluginList();
List subjectList = adapter.getSubjectList();
@@ -420,7 +376,7 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
public void run() {
if (!isDestroy) {
adapter = new Game1FragmentAdapter(Game1Fragment.this, locationMap, gameMap,
- platformMap, nameMap, pluginNameMap, heightMap, recyclerview, game_swipe_refresh, reuse_no_connection,
+ platformMap, nameMap, pluginNameMap, recyclerview, game_swipe_refresh, reuse_no_connection,
statusMap, dismissEntity, game_pb_loading, true);
recyclerview.setAdapter(adapter);
}
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 5777c50cf6..22a3ff06fe 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
@@ -6,7 +6,6 @@ import android.graphics.Color;
import android.support.v4.util.ArrayMap;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.DisplayMetrics;
@@ -33,18 +32,14 @@ import com.gh.common.util.GameViewUtils;
import com.gh.common.util.ImageUtils;
import com.gh.common.util.PlatformUtils;
import com.gh.common.util.TimestampUtils;
-import com.gh.common.util.Utils;
import com.gh.common.view.AutoScrollViewPager;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.download.DownloadEntry;
import com.gh.gamecenter.GameDetailsActivity;
-import com.gh.gamecenter.NewGameDetailsActivity;
import com.gh.gamecenter.NewsActivity;
import com.gh.gamecenter.PluginActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.SubjectActivity;
import com.gh.gamecenter.adapter.ImagePagerAdapter;
-import com.gh.gamecenter.adapter.viewholder.CardListViewHolder;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder;
@@ -82,10 +77,12 @@ import java.util.concurrent.LinkedBlockingQueue;
public class Game1FragmentAdapter extends RecyclerView.Adapter {
private class ITEM_TYPE {
- public static final int slide = 1;// 滚动图
- public static final int plugin_list = 2;// 插件化
- public static final int game_list = 3;// 专题
- public static final int footer_view = 4;// 加载布局
+ public static final int slide = 0;// 滚动图
+ public static final int head = 1;// 专题头部
+ public static final int game_normal_type = 2;// 游戏布局1
+ public static final int game_test_type = 3;// 游戏布局2
+ public static final int image = 4;// 大图布局
+ public static final int footer_view = 5;// 加载布局
}
private Game1Fragment fragment;
@@ -113,24 +110,22 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter nameMap;
private ArrayMap pluginNameMap;
private ArrayMap statusMap;
- private ArrayMap heightMap;
private DismissEntity dismissEntity;
public Game1FragmentAdapter(Game1Fragment fragment,
- ArrayMap lMap,
- ArrayMap> gMap,
- ArrayMap> pMap,
- ArrayMap nMap,
- ArrayMap pnMap,
- ArrayMap hMap,
- RecyclerView rView,
- SwipeRefreshLayout refreshLayout,
- LinearLayout linearLayout,
- ArrayMap sMap,
- DismissEntity dEntity,
- ProgressBarCircularIndeterminate pbLoading,
- boolean isLoad) {
+ ArrayMap lMap,
+ ArrayMap> gMap,
+ ArrayMap> pMap,
+ ArrayMap nMap,
+ ArrayMap pnMap,
+ RecyclerView rView,
+ SwipeRefreshLayout refreshLayout,
+ LinearLayout linearLayout,
+ ArrayMap sMap,
+ DismissEntity dEntity,
+ ProgressBarCircularIndeterminate pbLoading,
+ boolean isLoad) {
this.fragment = fragment;
this.context = fragment.getActivity();
@@ -144,12 +139,11 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter();
- pluginList = new ArrayList<>();
- subjectList = new ArrayList<>();
+ slideList = new ArrayList();
+ pluginList = new ArrayList();
+ subjectList = new ArrayList();
pluginSize = 0;
@@ -168,7 +162,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter() {
- @Override
- public void onResponse(JSONArray response) {
- Type listType = new TypeToken>() {}.getType();
- Gson gson = new Gson();
- slideList = gson.fromJson(response.toString(), listType);
- if (slideList != null && !slideList.isEmpty()) {
- notifyItemChanged(0);
- }
- if (isFirst) {
- initSubjectList();
- }
+ Constants.GAME_CD), new Response.Listener() {
+ @Override
+ public void onResponse(JSONArray response) {
+ Type listType = new TypeToken>() {}.getType();
+ Gson gson = new Gson();
+ slideList = gson.fromJson(response.toString(), listType);
+ if (slideList != null && !slideList.isEmpty()) {
+ notifyItemChanged(0);
+ }
+ if (isFirst) {
+ initSubjectList();
+ }
+ }
+
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ // 无网络连接
+ if (error.getClass().equals(NoConnectionError.class)
+ || error.getClass().equals(TimeoutError.class)) {
+ isSlideError = true;
+ if (!isFirst) {
+ Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
+ notifyItemChanged(0);
+ } else {
+ showView();
}
- },
- new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- // 无网络连接
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- isSlideError = true;
- if (!isFirst) {
- Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
- notifyItemChanged(0);
- } else {
- showView();
- }
- }
- if (isFirst) {
- initSubjectList();
- }
- }
- });
+ }
+ if (isFirst) {
+ initSubjectList();
+ }
+ }
+ });
AppController.addToRequestQueue(slideRequest, Game1Fragment.class);
}
@@ -325,7 +318,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter infos = concernManager.getInstalledGame();
final int size = infos.size();
- final List list = new ArrayList<>();
+ final List list = new ArrayList();
count = 0;
for (ConcernInfo info : infos) {
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(
@@ -341,8 +334,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 0 && position <= subjectList.size()) {
- return ITEM_TYPE.game_list;
+ if (!pluginList.isEmpty()) {
+ if (position == 1) {
+ return ITEM_TYPE.head;
}
- } else {
- if (position > 1 && position <= subjectList.size() + 1) {
- return ITEM_TYPE.game_list;
+ if (position > 1 && position <= 1 + pluginList.size()) {
+ return ITEM_TYPE.game_normal_type;
}
}
+ int offset = 1;
+ if (!pluginList.isEmpty()) {
+ offset += 1 + pluginList.size();
+ }
+ GameEntity gameEntity;
+ for (int i = 0, size = subjectList.size(); i < size; i++) {
+// if (position == offset) {
+// return ITEM_TYPE.head;
+// }
+ if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
+ int index = position -offset-1;
+ if (index<0){
+ index = 0;
+ }
+ gameEntity = subjectList.get(i).getData().get(index);
+ if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())){
+ return ITEM_TYPE.image;
+ }else if (position == offset){
+ return ITEM_TYPE.head;
+ }
+ if (position == offset+1&&!TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())){
+ return ITEM_TYPE.head;
+ }
+ if (!TextUtils.isEmpty(gameEntity.getImage())) {
+ return ITEM_TYPE.image;
+ }
+ if (gameEntity.getTest() != null) {
+ return ITEM_TYPE.game_test_type;
+ }
+ return ITEM_TYPE.game_normal_type;
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
return ITEM_TYPE.footer_view;
}
@@ -502,14 +525,22 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter offset
- && position <= subjectList.get(i).getData().size() + offset) {
+ if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position -offset-1;
- if (index < 0){
+ if (index<0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
@@ -757,20 +737,20 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter=Integer.parseInt(subjectList.get(i).getMore())){
+ if (subjectList.get(i).getData().size()>= Integer.parseInt(subjectList.get(i).getMore())){
holder.link.setVisibility(View.GONE);
}else {
holder.link.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java
index 50d42c6108..30f6aedddd 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java
@@ -19,7 +19,6 @@ import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.AppController;
import com.gh.common.constant.Constants;
import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntry;
import com.gh.download.DownloadManager;
@@ -153,7 +152,7 @@ public class Game2Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
platformMap, nameMap, recyclerview, game_swipe_refresh, reuse_no_connection,
statusMap, dismissEntity, game_pb_loading, false);
recyclerview.setAdapter(adapter);
- recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
+// recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
EventBus.getDefault().register(this);
}
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 890e20afda..f0498903aa 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java
@@ -300,19 +300,19 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter=Integer.parseInt(subjectList.get(i).getMore())){
+ if (TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())&&position!=0){
+ holder.frameTop.setVisibility(View.VISIBLE);
+ }else {
+ holder.frameTop.setVisibility(View.GONE);
+ }
+
+ if (subjectList.get(i).getData().size()>= Integer.parseInt(subjectList.get(i).getMore())){
holder.link.setVisibility(View.GONE);
}else {
holder.link.setVisibility(View.VISIBLE);
@@ -555,12 +556,12 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter {
-
- private class ITEM_TYPE {
- public static final int head = 1;// 专题头部
- public static final int game_normal = 2;// 游戏布局1
- public static final int game_test = 3;// 游戏布局2
- public static final int image = 4;// 大图布局
- }
-
- private Context context;
-
- private List data;
-
- private SubjectEntity subjectEntity;
-
- private boolean isPlugin;
-
- public GameListAdapter(Context context, SubjectEntity entity) {
- this.context = context;
-
- subjectEntity = entity;
- data = subjectEntity.getData();
- isPlugin = false;
- }
-
- public GameListAdapter(Context context, List list) {
- this.context = context;
-
- data = list;
- isPlugin = true;
- }
-
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- if (viewType == ITEM_TYPE.head) {
- View view = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.home_game_head_item, parent, false);
- return new GameHeadViewHolder(view);
- } else if (viewType == ITEM_TYPE.game_test) {
- View view = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.game_test_item, parent, false);
- return new GameTestViewHolder(view);
- } else if (viewType == ITEM_TYPE.image) {
- View view = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.home_game_image_item, parent, false);
- return new GameImageViewHolder(view);
- } else {
- View view = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.game_normal_item, parent, false);
- return new GameNormalViewHolder(view);
- }
- }
-
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- if (holder instanceof GameHeadViewHolder) {
- initGameHeadViewHolder((GameHeadViewHolder) holder);
- } else if (holder instanceof GameImageViewHolder) {
- initGameImageViewHolder((GameImageViewHolder) holder);
- } else if (holder instanceof GameNormalViewHolder){
- initGameNormalViewHolder((GameNormalViewHolder) holder, position);
- } else if (holder instanceof GameTestViewHolder) {
- initGameTestViewHolder((GameTestViewHolder) holder, position);
- }
- }
-
- private void initGameHeadViewHolder(GameHeadViewHolder holder) {
- holder.thumb.setVisibility(View.GONE);
- holder.title.setText(subjectEntity.getName());
- holder.title.setTextColor(Color.BLACK);
- if (data.size() >= Integer.parseInt(subjectEntity.getMore())){
- holder.link.setVisibility(View.GONE);
- }else {
- holder.link.setVisibility(View.VISIBLE);
- }
- holder.link.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Intent intent = new Intent(context, SubjectActivity.class);
- intent.putExtra("id", subjectEntity.getId());
- intent.putExtra("name", subjectEntity.getName());
- intent.putExtra("order", subjectEntity.getOrder());
- context.startActivity(intent);
-
- }
- });
- }
-
- private void initGameImageViewHolder(GameImageViewHolder holder) {
- final GameEntity gameEntity = data.get(0);
-
- holder.image.setTag(gameEntity.getImage());
- ImageUtils.getInstance(context).display(gameEntity.getImage(), holder.image, -1, context);//默认应该设置占位符,防止图片混乱
- holder.image.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Map kv = new HashMap<>();
- kv.put("名字", gameEntity.getName());
- kv.put("位置", 1);
- DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
-
- if ("game".equals(gameEntity.getType())) {
- Intent intent = new Intent(context, GameDetailsActivity.class);
- intent.putExtra("gameId", gameEntity.getLink());
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- context.startActivity(intent);
- } else if ("news".equals(gameEntity.getType())) {
- Intent intent = new Intent(context, NewsActivity.class);
- intent.putExtra("newsId", gameEntity.getLink());
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- context.startActivity(intent);
- } else if ("column".equals(gameEntity.getType())) {
- Intent intent = new Intent(context, SubjectActivity.class);
- intent.putExtra("id", gameEntity.getLink());
- intent.putExtra("name", gameEntity.getName());
- context.startActivity(intent);
- }
-
- }
- });
- }
-
- private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
- final GameEntity gameEntity = data.get(position - 1);
-
- final int i;
- if (!TextUtils.isEmpty(data.get(0).getImage())) {
- i = position - 1;
- } else {
- i = position;
- }
-
- if (subjectEntity.getOrder()) {
- holder.home1_game_order.setVisibility(View.VISIBLE);
- holder.home1_game_order.setText(String.valueOf(i));
- } else {
- holder.home1_game_order.setVisibility(View.GONE);
- }
- ImageUtils.getInstance(context).display(gameEntity.getIcon(), holder.gameThumb);
- if (gameEntity.getPluginPlatform() != null) {
- holder.gameNameAndSize.setText(String.format("%s - %s", gameEntity.getName(), gameEntity.getPluginPlatform()));
- } else {
- holder.gameNameAndSize.setText(gameEntity.getName());
- }
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.gameDes.setText(gameEntity.getBrief());
- } else {
- holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
- }
- GameViewUtils.setLabelList(context, holder.labelList, gameEntity.getTag());
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Map kv = new HashMap<>();
- kv.put("名字", gameEntity.getName());
- kv.put("位置", i);
- DataUtils.onEvent(context, "点击", "游戏-插件-" + gameEntity, kv);
-
- if (gameEntity.getPluginPlatform() != null) {
- Intent intent = new Intent(context, GameDetailsActivity.class);
- intent.putExtra("gameId", gameEntity.getId());
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- context.startActivity(intent);
- } else {
- AppController.put("GameEntity", gameEntity);
- Intent intent = new Intent(context, GameDetailsActivity.class);
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
- }
- }
- });
-
-// DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
-// holder.download_speed, holder.download_percentage, gameEntity, position,
-// GameListAdapter.this,
-// statusMap, platformMap, "游戏-插件-" + subjectEntity.getName(),
-// dismissEntity, "游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
-
-// DownloadItemUtils.updateItem(context, holder.gameDes,
-// holder.game_progressbar, holder.game_ll_info, holder.download_speed,
-// holder.download_percentage, holder.downloadBtn, gameEntity, platformMap,
-// statusMap, gameEntity.getPluginPlatform() != null);
- }
-
- private void initGameTestViewHolder(GameTestViewHolder holder, int position) {
- final GameEntity gameEntity = data.get(position - 1);
-
- final int i;
- if (!TextUtils.isEmpty(data.get(0).getImage())) {
- i = position - 1;
- } else {
- i = position;
- }
-
- if (subjectEntity.getOrder()) {
- holder.home2_game_order.setVisibility(View.VISIBLE);
- holder.home2_game_order.setText(String.valueOf(i));
- } else {
- holder.home2_game_order.setVisibility(View.GONE);
- }
- ImageUtils.getInstance(context).display(gameEntity.getIcon(), holder.gameThumb);
- holder.gameNameAndSize.setText(gameEntity.getName());
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.gameDes.setText(gameEntity.getBrief());
- } else {
- holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
- }
- holder.gameTestType.setText(gameEntity.getTest().getType());
- if (gameEntity.getTest().getStart() == 0) {
- holder.gameTestTime.setVisibility(View.GONE);
- } else {
- holder.gameTestTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart()));
- }
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Map kv = new HashMap<>();
- kv.put("名字", gameEntity.getName());
- kv.put("位置", i);
- DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
-
- AppController.put("GameEntity", gameEntity);
- Intent intent = new Intent(context, GameDetailsActivity.class);
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
- }
- });
-
- if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
- holder.downloadBtn.setVisibility(View.GONE);
- } else {
- if (gameEntity.getTest().getEnd() == 0) {
- holder.downloadBtn.setVisibility(View.VISIBLE);
-// DownloadItemUtils.setOnClickListener(context,
-// holder.downloadBtn, holder.download_speed,
-// holder.download_percentage, gameEntity, i,
-// GameListAdapter.this,
-// statusMap, platformMap, "游戏-插件-" + subjectEntity.getName(),
-// dismissEntity, "游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
- } else {
- long endTime = Long.valueOf(gameEntity.getTest().getEnd()
- + "000");
- long todayTime = new Date().getTime();
- if (todayTime > endTime) {
- // 测试时间已过
- holder.downloadBtn.setVisibility(View.GONE);
- } else {
- // 测试时间未过
- holder.downloadBtn.setVisibility(View.VISIBLE);
-// DownloadItemUtils.setOnClickListener(context,
-// holder.downloadBtn, holder.download_speed,
-// holder.download_percentage, gameEntity, i,
-// GameListAdapter.this, statusMap, platformMap,
-// "游戏-插件-" + subjectEntity.getName(), dismissEntity,
-// "游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
- }
- }
- }
-
-// DownloadItemUtils.updateItem(context, holder.gameDes,
-// holder.game_progressbar, holder.game_ll_info, holder.download_speed,
-// holder.download_percentage, holder.downloadBtn, gameEntity, platformMap,
-// statusMap);
- }
-
- @Override
- public int getItemCount() {
- return 1 + data.size();
- }
-
- @Override
- public int getItemViewType(int position) {
-
- if (position == 0) {
- if (!TextUtils.isEmpty(data.get(0).getImage())) {
- return ITEM_TYPE.image;
- } else {
- return ITEM_TYPE.head;
- }
- }
-
- if (position == 1) {
- if (!TextUtils.isEmpty(data.get(0).getImage())) {
- return ITEM_TYPE.head;
- }
- }
-
- if (data.get(position - 1).getTest() != null) {
- return ITEM_TYPE.game_test;
- }
-
- return ITEM_TYPE.game_normal;
- }
-}
diff --git a/app/src/main/java/com/gh/gamecenter/game/NewGame2Fragment.java b/app/src/main/java/com/gh/gamecenter/game/NewGame2Fragment.java
deleted file mode 100644
index 30b9647483..0000000000
--- a/app/src/main/java/com/gh/gamecenter/game/NewGame2Fragment.java
+++ /dev/null
@@ -1,266 +0,0 @@
-package com.gh.gamecenter.game;
-
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.util.ArrayMap;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
-import com.gh.common.constant.Constants;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.download.DataWatcher;
-import com.gh.download.DownloadEntry;
-import com.gh.download.DownloadManager;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.DismissEntity;
-import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.entity.SubjectEntity;
-import com.gh.gamecenter.eventbus.EBDownloadDelete;
-import com.gh.gamecenter.eventbus.EBPWDismiss;
-import com.gh.gamecenter.eventbus.EBPackage;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.LinkedBlockingQueue;
-
-import de.greenrobot.event.EventBus;
-
-/**
- * Created by khy on 2016/8/18.
- */
-public class NewGame2Fragment extends Fragment {
- private View mView;
- private RecyclerView mGame2Rv;
- private LinearLayoutManager mLayoutManager;
- private SwipeRefreshLayout mSwipeRefresh;
- private NewGame2FragmentAdapter adapter;
- private ProgressBarCircularIndeterminate llLoading;
-
- //下载用到的map
- private ArrayMap locationMap;
- private ArrayMap> gameMap;
- private ArrayMap> platformMap;
- private ArrayMap nameMap;
- private ArrayMap pluginNameMap;
- private ArrayMap statusMap;
-
-
- private DismissEntity dismissEntity;
- private boolean isDestroy = false;
- private int gamePosition = -1;
-
- private Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (!isDestroy) {
- if (msg.what == Constants.DOWNLOAD_ROLL) {
- String name = (String) msg.obj;
- if (platformMap != null) {
- LinkedBlockingQueue queue = platformMap.get(name);
- if (queue.size() > 1) {
- queue.offer(queue.poll());
- Message msg2 = Message.obtain();
- msg2.obj = name;
- msg2.what = Constants.DOWNLOAD_ROLL;
- sendMessageDelayed(msg2, 3000);
- }
- }
- }
- }
- }
- };
- private GameEntity getEntityByLocation(int position) {
- List list = adapter.getSubjectList();
- SubjectEntity subjectEntity;
- GameEntity gameEntity;
- int offset = 0;
- for (int i = 0; i < list.size(); i++) {
- offset++;
- subjectEntity = list.get(i);
- for (int i1 = 0; i1 < subjectEntity.getData().size(); i1++) {
- gameEntity = subjectEntity.getData().get(i1);
- if (offset == position){
- gamePosition = i;
- return gameEntity;
- }
- offset++;
- }
- }
- return null;
- }
-
-
- private DataWatcher dataWatcher = new DataWatcher() {
-
- @Override
- public void onDataChanged(
- HashMap downloadingEntries) {
- if (!mSwipeRefresh.isRefreshing()) {
- for (Map.Entry entry : downloadingEntries.entrySet()) {
- DownloadEntry downloadEntry = entry.getValue();
- Integer location = locationMap.get(downloadEntry.getName());
- if (location != null) {
- int index = location;
- GameEntity detailedEntity = getEntityByLocation(index);
-
- if (detailedEntity != null&&gamePosition != -1) {
- DownloadItemUtils.processDate(detailedEntity,
- downloadEntry, platformMap, handler,adapter , gamePosition, statusMap);
- }
- }
- }
- }
- }
- };
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- locationMap = new ArrayMap<>();
- gameMap = new ArrayMap<>();
- platformMap = new ArrayMap<>();
- nameMap = new ArrayMap<>();
- pluginNameMap = new ArrayMap<>();
- statusMap = new ArrayMap<>();
-
- dismissEntity = new DismissEntity(false);
- DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
-
- mView = View.inflate(getActivity(), R.layout.plugin1_fragment, null);
- mGame2Rv = (RecyclerView) mView.findViewById(R.id.game_list);
- llLoading = (ProgressBarCircularIndeterminate) mView.findViewById(R.id.game_pb_loading);
- mSwipeRefresh = (SwipeRefreshLayout) mView.findViewById(R.id.game_swipe_refresh);
- mLayoutManager = new LinearLayoutManager(getActivity());
- mGame2Rv.setLayoutManager(mLayoutManager);
- adapter = new NewGame2FragmentAdapter(getActivity(),locationMap,gameMap
- ,platformMap,nameMap,pluginNameMap,statusMap,dismissEntity,llLoading,mSwipeRefresh);
- mGame2Rv.setHasFixedSize(true);
- mGame2Rv.setAdapter(adapter);
-
- mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- handler.postDelayed(new Runnable() {
- @Override
- public void run() {
- llLoading.setVisibility(View.VISIBLE);
- adapter = new NewGame2FragmentAdapter(getActivity(),locationMap,gameMap
- ,platformMap,nameMap,pluginNameMap,statusMap,dismissEntity,llLoading,mSwipeRefresh);
- mGame2Rv.setAdapter(adapter);
- }
- },1000);
- }
- });
-
- EventBus.getDefault().register(this);
- }
-
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- if (container != null){
- container.removeView(mView);
- }
- return mView;
- }
-
- @Override
- public void onResume() {
- super.onResume();
- DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
- for (SubjectEntity subjectEntity : adapter.getSubjectList()) {
- for (GameEntity entity :subjectEntity.getData()) {
- entity.setEntryMap(gameMap.get(entity.getName()));
- }
- }
- adapter.notifyDataSetChanged();
- DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
- }
-
- @Override
- public void onPause() {
- super.onPause();
- DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- EventBus.getDefault().unregister(this);
- }
-
- //版本选择框消失事件
- public void onEventMainThread(EBPWDismiss dismiss) {
- if (dismissEntity != null) {
- dismissEntity.setShow(false);
- }
- }
-
- //下载被删除事件
- public void onEventMainThread(EBDownloadDelete busThree) {
- LinkedBlockingQueue queue = platformMap.get(busThree.getName());
- if (queue != null) {
- queue.remove(busThree.getPlatform());
- platformMap.put(busThree.getName(), queue);
- }
- Integer location = locationMap.get(busThree.getName());
- if (location != null) {
- int index = location;
- GameEntity detailedEntity = getEntityByLocation(index);
- if (detailedEntity != null) {
- if (TextUtils.isEmpty(busThree.getPlatform())) {
- detailedEntity.getEntryMap().remove("官方版");
- } else {
- detailedEntity.getEntryMap().remove(busThree.getPlatform());
- }
- }
- if (gamePosition != -1){
- adapter.notifyItemChanged(gamePosition);
- }else {
- adapter.notifyDataSetChanged();
- }
-
- }
- }
- //安装、卸载事件
- public void onEventMainThread(EBPackage busFour) {
- String name = nameMap.get(busFour.getPackageName());
- if (name != null) {
- Integer location = locationMap.get(name);
- if (location != null) {
- if ("安装".equals(busFour.getType())) {
- GameEntity detailedEntity = getEntityByLocation(location);
- for (ApkEntity apkEntity : detailedEntity.getApk()) {
- if (apkEntity.getPackageName().equals(
- busFour.getPackageName())) {
- detailedEntity.getEntryMap().remove(
- apkEntity.getPlatform());
- if (gamePosition != -1){
- adapter.notifyItemChanged(gamePosition);
- }else {
- adapter.notifyDataSetChanged();
- }
- break;
- }
- }
- } else if ("卸载".equals(busFour.getType())) {
- if (gamePosition != -1){
- adapter.notifyItemChanged(gamePosition);
- }else {
- adapter.notifyDataSetChanged();
- }
- }
- }
- }
- }
-}
diff --git a/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java
deleted file mode 100644
index 0fe13dd220..0000000000
--- a/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java
+++ /dev/null
@@ -1,346 +0,0 @@
-package com.gh.gamecenter.game;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.v4.util.ArrayMap;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
-import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
-import com.gh.base.AppController;
-import com.gh.common.constant.Config;
-import com.gh.common.constant.Constants;
-import com.gh.common.util.DataUtils;
-import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.GameViewUtils;
-import com.gh.common.util.ImageUtils;
-import com.gh.common.util.TimestampUtils;
-import com.gh.common.util.Utils;
-import com.gh.download.DownloadEntry;
-import com.gh.gamecenter.GameDetailsActivity;
-import com.gh.gamecenter.NewGameDetailsActivity;
-import com.gh.gamecenter.NewsActivity;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.SubjectActivity;
-import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.DismissEntity;
-import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.entity.SubjectEntity;
-import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-
-import org.json.JSONArray;
-
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/**
- * Created by khy on 2016/8/18.
- */
-public class NewGame2FragmentAdapter extends RecyclerView.Adapter {
- private Context mContext;
- private List subjectList;
-
- private ArrayMap locationMap;
- private ArrayMap> gameMap;
- private ArrayMap> platformMap;
- private ArrayMap nameMap;
- private ArrayMap statusMap;
-
- private ProgressBarCircularIndeterminate llLoading;
- private SwipeRefreshLayout mSwipeRefresh;
-
- private DismissEntity dismissEntity;
-
- public NewGame2FragmentAdapter(Context mContext, ArrayMap locationMap
- , ArrayMap> gameMap, ArrayMap> platformMap
- , ArrayMap nameMap, ArrayMap pluginNameMap, ArrayMap statusMap
- , DismissEntity dismissEntity, ProgressBarCircularIndeterminate llLoading, SwipeRefreshLayout mSwipeRefresh) {
- this.mContext = mContext;
- this.locationMap = locationMap;
- this.gameMap = gameMap;
- this.platformMap = platformMap;
- this.nameMap = nameMap;
- this.statusMap = statusMap;
- this.dismissEntity = dismissEntity;
- this.mSwipeRefresh = mSwipeRefresh;
- this.llLoading = llLoading;
- subjectList = new ArrayList<>();
- initSubjectList();
-
- }
- public void initSubjectList() {
- new Thread(new Runnable() {
- @Override
- public void run() {
- JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
- TimestampUtils.addTimestamp(Config.HOST + "v1d50/game/tuijian",
- Constants.GAME_CD),
- new Response.Listener() {
- @Override
- public void onResponse(JSONArray response) {
-
- Type listType = new TypeToken>() {}.getType();
- Gson gson = new Gson();
- List list = gson.fromJson(response.toString(), listType);
- subjectList.addAll(list);
- llLoading.setVisibility(View.GONE);
- notifyDataSetChanged();
- initLocationMap();
- if (mSwipeRefresh.isRefreshing()){
- mSwipeRefresh.setRefreshing(false);
- }
-
- }
- },
- new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- if (mSwipeRefresh.isRefreshing()){
- mSwipeRefresh.setRefreshing(false);
- }
- llLoading.setVisibility(View.GONE);
- // 无网络连接和访问超时
- }
- });
- AppController.addToRequestQueue(request, Game1Fragment.class);
- }
- }).start();
-
- }
-
- private void initLocationMap() {
- locationMap.clear();
-
- if (!subjectList.isEmpty()) {
- int count = getItemCount();
- int offset = 0;
- SubjectEntity subjectEntity;
- GameEntity gameEntity;
- for (int position = 0; position < count; position++) {
- offset++;
- subjectEntity = subjectList.get(position);
- for (int i = 0; i < subjectEntity.getData().size(); i++) {
- gameEntity = subjectEntity.getData().get(i);
- if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()){
- locationMap.put(gameEntity.getName(), offset);
- for (ApkEntity apkEntity : gameEntity.getApk()) {
- nameMap.put(apkEntity.getPackageName(), gameEntity.getName());
- }
- }
- offset++;
- }
-
- }
- }
- Utils.log(locationMap.toString());
- }
-
-
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.game_item_rv,parent,false));
- }
-
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- initItem(subjectList.get(position), ((ViewHolder) holder).item_ll,position);
- }
-
- private void initItem(final SubjectEntity subjectEntity, LinearLayout item_ll, final int position) {
- item_ll.removeAllViews();
- GameEntity entity;
- List data = subjectEntity.getData();
- int index;
- for (int i = 0; i < subjectEntity.getData().size()+1; i++) {
- index = i-1;
- if (index<0){
- index = 0;
- }
- entity = data.get(index);
- if (i == 0 && entity.getImage() != null){
- ImageView imageView = new ImageView(mContext);
- ImageUtils.getInstance(mContext).display(data.get(index).getImage(),imageView,-1,mContext);
- item_ll.addView(imageView);
- final GameEntity finalEntity1 = entity;
- item_ll.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Map kv = new HashMap<>();
- kv.put("名字", finalEntity1.getName());
- kv.put("位置", position + 1);
- DataUtils.onEvent(mContext, "点击", "游戏-推荐-" + subjectEntity.getName(), kv);
-
- if (TextUtils.isEmpty(finalEntity1.getLink())){
- Toast.makeText(mContext, "数据缺失", Toast.LENGTH_SHORT).show();
- return;
- }
- if ("game".equals(finalEntity1.getType())) {
- Intent intent = new Intent(mContext, GameDetailsActivity.class);
- intent.putExtra("gameId", finalEntity1.getLink());
- intent.putExtra("entrance", "游戏-推荐-" + subjectEntity.getName());
- mContext.startActivity(intent);
- } else if ("news".equals(finalEntity1.getType())) {
- Intent intent = new Intent(mContext, NewsActivity.class);
- intent.putExtra("newsId", finalEntity1.getLink());
- intent.putExtra("entrance", "游戏-推荐-" + subjectEntity.getName());
- mContext.startActivity(intent);
- } else if ("column".equals(finalEntity1.getType())) {
- Intent intent = new Intent(mContext, SubjectActivity.class);
- intent.putExtra("id", finalEntity1.getLink());
- intent.putExtra("name", finalEntity1.getName());
- mContext.startActivity(intent);
- }
-
- }
- });
- } else if (i == 1 &&entity.getImage()!=null || i == 0 && entity.getImage() == null){
- View view = View.inflate(mContext,R.layout.home_game_head_item, null);
- TextView tvTitle = (TextView) view.findViewById(R.id.head_title);
- LinearLayout llLink = (LinearLayout) view.findViewById(R.id.head_link);
- if (subjectEntity.getData().size()>=Integer.parseInt(subjectList.get(i).getMore())){
- llLink.setVisibility(View.GONE);
- }else {
- llLink.setVisibility(View.VISIBLE);
- }
- tvTitle.setText(subjectEntity.getName());
- item_ll.addView(view);
- llLink.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(mContext, SubjectActivity.class);
- intent.putExtra("id", subjectEntity.getId());
- intent.putExtra("name", subjectEntity.getName());
- intent.putExtra("order",subjectEntity.getOrder());
- mContext.startActivity(intent);
- }
- });
- } else {
- View view = View.inflate(mContext,R.layout.home_game_normal_item, null);
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(DisplayUtils.dip2px(mContext,10),DisplayUtils.dip2px(mContext,10),DisplayUtils.dip2px(mContext,12),DisplayUtils.dip2px(mContext,10));
- view.setLayoutParams(params);
- ImageView gameIcon = (ImageView) view.findViewById(R.id.home1_game_thumb);
- TextView gameName = (TextView) view.findViewById(R.id.home1_game_nameAndsize);
- TextView gameDes = (TextView) view.findViewById(R.id.home1_game_des);
-
- TextView home1_game_order = (TextView) view.findViewById(R.id.home1_game_order);
- TextView downloadBtn = (TextView) view.findViewById(R.id.home1_download_btn);
- LinearLayout game_ll_info = (LinearLayout) view.findViewById(R.id.home1_game_ll_info);
- ProgressBar game_progressbar = (ProgressBar) view.findViewById(R.id.home1_game_progressbar);
- TextView download_speed = (TextView) view.findViewById(R.id.home1_download_speed);
- TextView download_percentage = (TextView) view.findViewById(R.id.home1_download_percentage);
-
- ImageUtils.getInstance(mContext).display(data.get(index).getIcon(),gameIcon);
-
- item_ll.addView(view);
- gameDes.setText(String.format("%s %s", entity.getApk().get(0).getSize(), data.get(index).getBrief()));
- gameName.setText(data.get(index).getName());
- LinearLayout labelListTest = (LinearLayout) view.findViewById(R.id.home2_label_list);
- LinearLayout labelList = (LinearLayout) view.findViewById(R.id.home1_label_list);
- if (entity.getTest() != null) {
- labelListTest.setVisibility(View.VISIBLE);
- labelList.setVisibility(View.GONE);
- TextView tvTestType = (TextView) view.findViewById(R.id.home2_test_type);
- TextView tvTestTime = (TextView) view.findViewById(R.id.home2_test_time);
- tvTestType.setText(entity.getTest().getType());
- if (entity.getTest().getStart() == 0) {
- tvTestTime.setVisibility(View.GONE);
- } else {
- tvTestTime.setText(GameViewUtils.getGameTestDate(entity.getTest().getStart()));
- }
- }else {
- labelList.setVisibility(View.VISIBLE);
- labelListTest.setVisibility(View.GONE);
- GameViewUtils.setLabelList(mContext, labelList, entity.getTag());
- }
-
-
- if (subjectEntity.getOrder()) {
- home1_game_order.setVisibility(View.VISIBLE);
- if (data.get(0).getImage() != null){
- home1_game_order.setText(String.valueOf(i - 1));
- }else {
- home1_game_order.setText(String.valueOf(i));
- }
- } else {
- home1_game_order.setVisibility(View.GONE);
- }
-
- final GameEntity finalEntity = entity;
- view.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Map kv = new HashMap<>();
- kv.put("名字", finalEntity.getName());
- kv.put("位置", position);
- DataUtils.onEvent(mContext, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
-
- if (finalEntity.getPluginPlatform() != null) {
- Intent intent = new Intent(mContext, NewGameDetailsActivity.class);
- intent.putExtra("gameId", finalEntity.getId());
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- mContext.startActivity(intent);
- } else {
- AppController.put("GameEntity", finalEntity);
- Intent intent = new Intent(mContext, NewGameDetailsActivity.class);
- intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName());
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- mContext.startActivity(intent);
- }
- }
- });
-
- DownloadItemUtils.setOnClickListener(mContext, downloadBtn,
- download_speed, download_percentage, entity, position,
- NewGame2FragmentAdapter.this,
- statusMap, platformMap, "游戏-推荐-" + subjectEntity.getName(),
- dismissEntity, "游戏-推荐-" + subjectEntity.getName() + ":" + entity.getName());
-
- DownloadItemUtils.updateItem(mContext, gameDes,
- game_progressbar, game_ll_info, download_speed,
- download_percentage, downloadBtn, entity, platformMap,
- statusMap);
- }
- }
- }
-
- @Override
- public int getItemCount() {
- return subjectList.size();
- }
-
- public class ViewHolder extends RecyclerView.ViewHolder{
- View view;
- LinearLayout item_ll;
- public ViewHolder(View itemView) {
- super(itemView);
- view = itemView;
- item_ll = (LinearLayout) view.findViewById(R.id.game_item_ll);
-
- }
- }
- public List getSubjectList() {
- return subjectList;
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java
deleted file mode 100644
index d6f242c39f..0000000000
--- a/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java
+++ /dev/null
@@ -1,1294 +0,0 @@
-package com.gh.gamecenter.gamedetails;
-
-import android.content.Intent;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.android.volley.NoConnectionError;
-import com.android.volley.Response;
-import com.android.volley.TimeoutError;
-import com.android.volley.VolleyError;
-import com.gh.base.AppController;
-import com.gh.common.constant.Config;
-import com.gh.common.util.DataUtils;
-import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.ImageUtils;
-import com.gh.common.util.NewsUtils;
-import com.gh.common.util.Utils;
-import com.gh.common.view.HorizontalItemDecoration;
-import com.gh.common.view.MyRecyclerView;
-import com.gh.common.view.MyViewPager;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.ViewImageActivity;
-import com.gh.gamecenter.entity.GameDetailsEntity;
-import com.gh.gamecenter.entity.NewsEntity;
-import com.gh.gamecenter.entity.ServerEntity;
-import com.gh.gamecenter.entity.TagEntity;
-import com.gh.gamecenter.eventbus.EBMoveTop;
-import com.gh.gamecenter.eventbus.EBNetworkState;
-import com.gh.gamecenter.eventbus.EBNewsType;
-import com.gh.gamecenter.eventbus.EBSlide;
-import com.gh.gamecenter.manager.DataCollectionManager;
-import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
-import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import de.greenrobot.event.EventBus;
-
-/**
- * 游戏详情 fragment
- *
- * @author 黄壮华
- *
- */
-public class GameDetailsFragment extends Fragment {
-
- public static class ITEM_TYPE {
- public static final int blank_top1 = 1;// 空白顶部1
- public static final int blank_top2 = 2;// 空白顶部2
- public static final int newservice = 3;// 新服布局类型
- public static final int primatte = 4;// 插件介绍布局类型
- public static final int newsstrategy = 5;// 新闻攻略布局类型
- public static final int news_item = 6;// 新闻攻略item布局类型
- public static final int screenshot = 7;// 游戏截图布局类型
- public static final int intro = 8;// 游戏简介布局类型
- public static final int blank_bottom = 9;// 空白底部
- }
-
- private int count_newservice = 0;
- private int count_plugin = 0;
- private int count_news = 0;
- private int count_gallery = 0;
- private int count_intro = 0;
-
- private int position_news = -1;
-
- private View view;
- private RecyclerView fm_gamedetails_rv_show;
- private LinearLayoutManager linearLayoutManager;
- private GameDetailsAdapter adapter;
- private LinearLayout fm_gamedetails_ll_loading, reuse_no_connection;
- private RelativeLayout.LayoutParams rparams;
-
- private GameDetailsEntity entity;
-
- private String id;
- private String gameName;
- private String entrance;
-
- private int dis = 0;
- private int distance;
- private int todayPosition = -1;
- private int tomorrowPosition = -1;
- private int count;
- private int topbarVisibility = View.GONE;
-
- private boolean isDestroy;
-
- private Handler handler = new Handler();
-
- public void setParams(String id, String gameName, String entrance) {
- this.id = id;
- this.entrance = entrance;
- this.gameName = gameName;
- }
-
- Runnable runnable = new Runnable() {
- public void run() {
- entity = new GameDetailsEntity();
- count = 3;
- getServerInfo();
- getGameNews();
- getGameDetail();
- }
- };
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- Utils.log(this.getClass().getSimpleName() + " onSaveInstanceState");
- outState.putString("id", id);
- outState.putString("entrance", entrance);
- outState.putString("gameName", gameName);
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (savedInstanceState != null) {
- id = savedInstanceState.getString("id");
- gameName = savedInstanceState.getString("gameName");
- entrance = savedInstanceState.getString("entrance");
- }
-
- isDestroy = false;
-
- view = View.inflate(getActivity(), R.layout.gamedetails, null);
-
- distance = DisplayUtils.dip2px(getActivity(), 66);
-
- fm_gamedetails_ll_loading = (LinearLayout) view
- .findViewById(R.id.fm_gamedetails_ll_loading);
-
- reuse_no_connection = (LinearLayout) view
- .findViewById(R.id.reuse_no_connection);
- reuse_no_connection.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- fm_gamedetails_rv_show.setVisibility(View.GONE);
- fm_gamedetails_ll_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- handler.postDelayed(runnable, 1000);
- }
- });
-
- rparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.WRAP_CONTENT);
-
- linearLayoutManager = new LinearLayoutManager(getActivity());
- linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- adapter = new GameDetailsAdapter();
- fm_gamedetails_rv_show = (RecyclerView) view
- .findViewById(R.id.fm_gamedetails_rv_show);
- fm_gamedetails_rv_show.setHasFixedSize(true);
- fm_gamedetails_rv_show
- .setOnScrollListener(new GameDetailsOnScrollListener());
- fm_gamedetails_rv_show.setLayoutManager(linearLayoutManager);
- fm_gamedetails_rv_show.setAdapter(adapter);
-
- EventBus.getDefault().register(this);
-
- MyRecyclerView.isCanMove = false;
- MyViewPager.isCanMove = false;
-
- handler.postDelayed(runnable, 200);
- }
-
- @Override
- @Nullable
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- if (container != null) {
- container.removeView(view);
- }
- return view;
- }
-
- private class GameDetailsOnScrollListener extends RecyclerView.OnScrollListener {
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-
- super.onScrolled(recyclerView, dx, dy);
-
- int visibility;
- if (linearLayoutManager.findFirstVisibleItemPosition() >= 1) {
- visibility = View.VISIBLE;
- } else {
- visibility = View.GONE;
- }
-
- dis += dy;
-
- rparams.topMargin -= dy;
-
- EventBus.getDefault().post(new EBMoveTop("top", visibility, rparams.topMargin));
- }
-
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- if (newState == OnScrollListener.SCROLL_STATE_IDLE) {
- if (dis > distance) {
- EventBus.getDefault().post(new EBSlide(distance, 1, false));
- EventBus.getDefault().post(new EBSlide(distance, 2, false));
- } else if (dis < -distance) {
- EventBus.getDefault().post(new EBSlide(0, 1, false));
- EventBus.getDefault().post(new EBSlide(0, 2, false));
- } else {
- EventBus.getDefault().post(new EBSlide(dis, 1, false));
- EventBus.getDefault().post(new EBSlide(dis, 2, false));
- }
- }
- }
- }
-
- public void onEventMainThread(EBSlide busOne) {
- if (busOne.getPosition() == 0) {
- Utils.log("details:" + busOne.getDistance());
- if (busOne.isReset()) {
- fm_gamedetails_rv_show.scrollBy(0, distance - dis);
- } else {
- if (busOne.getDistance() == 0) {
- fm_gamedetails_rv_show.scrollToPosition(0);
- rparams.topMargin = 0;
- dis = 0;
- } else {
- fm_gamedetails_rv_show.scrollBy(0, busOne.getDistance()
- - dis);
- }
- }
- }
- }
-
- public void onEventMainThread(EBNetworkState busNetworkState) {
- if (busNetworkState.isNetworkConnected()
- && reuse_no_connection.getVisibility() == View.VISIBLE) {
- fm_gamedetails_rv_show.setVisibility(View.GONE);
- fm_gamedetails_ll_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- handler.postDelayed(runnable, 1000);
- }
- }
-
- public void onEventMainThread(EBMoveTop moveTop) {
- if (moveTop.getType().equals("top")) {
- topbarVisibility = moveTop.getVisibility();
- }
- }
-
- private void getServerInfo() {
- JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
- Config.HOST + "v2/game/" + id + "/serverInfo",
- new Response.Listener() {
- @Override
- public void onResponse(JSONArray response) {
- if (!isDestroy) {
- try {
- ArrayList serverInfo = new ArrayList();
- SimpleDateFormat format = new SimpleDateFormat(
- "Mdd", Locale.getDefault());
- int today = Integer.valueOf(format
- .format(new Date()));
- for (int j = 0, sizej = response.length(); j < sizej; j++) {
- ServerEntity entity = new ServerEntity();
- JSONObject jsonObject2;
- jsonObject2 = response.getJSONObject(j);
- String server = jsonObject2
- .getString("server");
- if (server.length() > 4) {
- server = server.substring(0, 4);
- }
- entity.setServer(server);
- entity.setTime(Long.valueOf(jsonObject2
- .getString("time") + "000"));
- int day = Integer.valueOf(format
- .format(new Date(entity.getTime())));
- if (day == today + 1) {
- entity.setTag("明天");
- serverInfo.add(entity);
- } else if (day == today - 1) {
- entity.setTag("昨天");
- serverInfo.add(entity);
- } else if (day == today) {
- entity.setTag("今天");
- serverInfo.add(entity);
- }
- }
-
- Comparator comparator = new Comparator() {
- @Override
- public int compare(ServerEntity lhs,
- ServerEntity rhs) {
-
- return (int) (lhs.getTime() - rhs
- .getTime());
- }
- };
-
- Collections.sort(serverInfo, comparator);
-
- for (int j = 0, sizej = serverInfo.size(); j < sizej; j++) {
- if ("今天".equals(serverInfo.get(j).getTag())
- && todayPosition == -1) {
- todayPosition = j;
- } else if ("明天".equals(serverInfo.get(j)
- .getTag())
- && tomorrowPosition == -1) {
- tomorrowPosition = j;
- }
- }
- entity.setServerInfo(serverInfo);
- refresh();
- } catch (JSONException e) {
-
- e.printStackTrace();
- }
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- // 无网络连接和访问超时
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- if (!isDestroy) {
- fm_gamedetails_rv_show.setVisibility(View.GONE);
- fm_gamedetails_ll_loading
- .setVisibility(View.GONE);
- reuse_no_connection.setVisibility(View.VISIBLE);
- }
- }
- }
- });
- AppController.addToRequestQueue(request, GameDetailsFragment.class);
- }
-
- private void getGameNews() {
- String url = Config.HOST + "v1d45/game/" + id + "/news?limit=3";
- JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url,
- new Response.Listener() {
- @Override
- public void onResponse(JSONArray response) {
- Utils.log(response.toString());
- if (!isDestroy) {
- Gson gson = new Gson();
- ArrayList news = gson.fromJson(
- response.toString(),
- new TypeToken>() {
- }.getType());
- entity.setNews(news);
- refresh();
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- // 无网络连接和访问超时
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- if (!isDestroy) {
- fm_gamedetails_rv_show.setVisibility(View.GONE);
- fm_gamedetails_ll_loading
- .setVisibility(View.GONE);
- reuse_no_connection.setVisibility(View.VISIBLE);
- }
- }
- }
- });
- AppController.addToRequestQueue(request, GameDetailsFragment.class);
- }
-
- private void getGameDetail() {
- String url = Config.HOST + "v1d45/game/" + id + "/detail";
- JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(url,
- new Response.Listener() {
- @Override
- public void onResponse(JSONObject response) {
-
- Utils.log(response.toString());
- if (!isDestroy) {
- Gson gson = new Gson();
- GameDetailsEntity gameDetailsEntity = gson
- .fromJson(response.toString(),
- GameDetailsEntity.class);
- if (entity.getNews() != null) {
- gameDetailsEntity.setNews(entity.getNews());
- }
- entity = gameDetailsEntity;
- HashMap> map = new HashMap>();
- if (!response.isNull("news_type")) {
- try {
- JSONArray newsType = response
- .getJSONArray("news_type");
- for (int i = 0, size = newsType.length(); i < size; i++) {
- JSONObject jsonObject = newsType
- .getJSONObject(i);
- JSONArray subType = jsonObject
- .getJSONArray("sub_type");
- ArrayList list = new ArrayList();
- for (int j = 0; j < subType.length(); j++) {
- list.add(subType.getString(j));
- }
- map.put(jsonObject.getString("type"),
- list);
- }
- } catch (JSONException e) {
-
- e.printStackTrace();
- }
- }
- for (String type : map.keySet()) {
- EventBus.getDefault().post(
- new EBNewsType(type, map.get(type)));
- }
- refresh();
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- // 无网络连接和访问超时
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- if (!isDestroy) {
- fm_gamedetails_rv_show.setVisibility(View.GONE);
- fm_gamedetails_ll_loading
- .setVisibility(View.GONE);
- reuse_no_connection.setVisibility(View.VISIBLE);
- }
- }
- }
- });
- AppController.addToRequestQueue(request, GameDetailsFragment.class);
- }
-
- private void refresh() {
- if (count == 1) {
- fm_gamedetails_rv_show.setVisibility(View.VISIBLE);
- fm_gamedetails_ll_loading.setVisibility(View.GONE);
- adapter.notifyDataSetChanged();
- } else {
- count--;
- }
- }
-
- private class GameDetailsViewHolder extends RecyclerView.ViewHolder
- implements OnClickListener {
-
- private RecyclerView fm_gamedetails_newservice_show;
- private ImageView fm_gamedetails_newservice_left,
- fm_gamedetails_newservice_right;
-
- private LinearLayout fm_gamedetails_ll_primatte_details,
- fm_gamedetails_ll_primatte_warmprompt,
- fm_gamedetails_ll_primatte_details_show;
- private TextView fm_gamedetails_primatte_content,
- fm_gamedetails_tv_primatte_details;
- private RecyclerView recyclerView;
- private ImageView fm_gamedetails_iv_primatte_details;
-
- private LinearLayout fm_gamedetails_newsstrategy_more;
-
- private TextView news_type, news_title;
- private View news_item;
-
- private RecyclerView fm_gamedetails_screenshot_show;
-
- private TextView fm_gamedetails_intro_content;
-
- private int type;
-
- public GameDetailsViewHolder(View convertView) {
- super(convertView);
-
- type = (Integer) convertView.getTag();
- if (type == ITEM_TYPE.newservice) {
- fm_gamedetails_newservice_left = (ImageView) convertView
- .findViewById(R.id.fm_gamedetails_newservice_left);
- fm_gamedetails_newservice_right = (ImageView) convertView
- .findViewById(R.id.fm_gamedetails_newservice_right);
- fm_gamedetails_newservice_show = (RecyclerView) convertView
- .findViewById(R.id.fm_gamedetails_newservice_show);
- fm_gamedetails_newservice_show.setHasFixedSize(true);
- final LinearLayoutManager newServiceManager = new LinearLayoutManager(
- getActivity());
- newServiceManager
- .setOrientation(LinearLayoutManager.HORIZONTAL);
- fm_gamedetails_newservice_show
- .setLayoutManager(newServiceManager);
- GameNewServiceAdapter gameNewServiceAdapter = new GameNewServiceAdapter();
- fm_gamedetails_newservice_show
- .setAdapter(gameNewServiceAdapter);
- fm_gamedetails_newservice_show
- .setOnScrollListener(new RecyclerView.OnScrollListener() {
-
- @Override
- public void onScrolled(RecyclerView recyclerView,
- int dx, int dy) {
-
- super.onScrolled(recyclerView, dx, dy);
- if (newServiceManager
- .findFirstVisibleItemPosition() == 0
- && newServiceManager
- .findViewByPosition(0)
- .getLeft() == 0) {
- fm_gamedetails_newservice_left
- .setVisibility(View.INVISIBLE);
- fm_gamedetails_newservice_right
- .setVisibility(View.VISIBLE);
- } else if (newServiceManager
- .findLastVisibleItemPosition() == fm_gamedetails_newservice_show
- .getAdapter().getItemCount() - 1
- && newServiceManager
- .findViewByPosition(
- fm_gamedetails_newservice_show
- .getAdapter()
- .getItemCount() - 1)
- .getRight() == fm_gamedetails_newservice_show
- .getWidth()) {
- fm_gamedetails_newservice_left
- .setVisibility(View.VISIBLE);
- fm_gamedetails_newservice_right
- .setVisibility(View.INVISIBLE);
- } else {
- fm_gamedetails_newservice_left
- .setVisibility(View.VISIBLE);
- fm_gamedetails_newservice_right
- .setVisibility(View.VISIBLE);
- }
- }
-
- });
- } else if (type == ITEM_TYPE.primatte) {
- fm_gamedetails_ll_primatte_details = (LinearLayout) convertView
- .findViewById(R.id.fm_gamedetails_ll_primatte_details);
- fm_gamedetails_ll_primatte_warmprompt = (LinearLayout) convertView
- .findViewById(R.id.fm_gamedetails_ll_primatte_warmprompt);
- fm_gamedetails_primatte_content = (TextView) convertView
- .findViewById(R.id.fm_gamedetails_primatte_content);
- fm_gamedetails_tv_primatte_details = (TextView) convertView
- .findViewById(R.id.fm_gamedetails_tv_primatte_details);
- fm_gamedetails_ll_primatte_details_show = (LinearLayout) convertView
- .findViewById(R.id.fm_gamedetails_ll_primatte_details_show);
- fm_gamedetails_ll_primatte_details_show
- .setOnClickListener(this);
- fm_gamedetails_iv_primatte_details = (ImageView) convertView
- .findViewById(R.id.fm_gamedetails_iv_primatte_details);
- } else if (type == ITEM_TYPE.newsstrategy) {
- fm_gamedetails_newsstrategy_more = (LinearLayout) convertView
- .findViewById(R.id.fm_gamedetails_newsstrategy_more);
- fm_gamedetails_newsstrategy_more.setOnClickListener(this);
- } else if (type == ITEM_TYPE.news_item) {
- news_item = convertView;
- news_type = (TextView) convertView.findViewById(R.id.news_type);
- news_title = (TextView) convertView
- .findViewById(R.id.news_title);
- } else if (type == ITEM_TYPE.screenshot) {
- fm_gamedetails_screenshot_show = (RecyclerView) convertView
- .findViewById(R.id.fm_gamedetails_screenshot_show);
- fm_gamedetails_screenshot_show.setHasFixedSize(true);
- final LinearLayoutManager screenshotManager = new LinearLayoutManager(
- getActivity());
- screenshotManager
- .setOrientation(LinearLayoutManager.HORIZONTAL);
- fm_gamedetails_screenshot_show
- .setLayoutManager(screenshotManager);
- GameScreenshotAdapter gameScreenshotAdapter = new GameScreenshotAdapter();
- fm_gamedetails_screenshot_show
- .setAdapter(gameScreenshotAdapter);
- fm_gamedetails_screenshot_show
- .addItemDecoration(new HorizontalItemDecoration(
- getActivity(), 6, entity.getGallery().size()));
- fm_gamedetails_screenshot_show
- .setOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrolled(RecyclerView recyclerView,
- int dx, int dy) {
-
- super.onScrolled(recyclerView, dx, dy);
- if (screenshotManager
- .findLastVisibleItemPosition() == recyclerView
- .getAdapter().getItemCount() - 1) {
- if (screenshotManager.findViewByPosition(
- recyclerView.getAdapter()
- .getItemCount() - 1)
- .getRight() == fm_gamedetails_screenshot_show
- .getWidth()) {
- MyRecyclerView.isCanMove = true;
- }
- }
- }
- });
- } else if (type == ITEM_TYPE.intro) {
- fm_gamedetails_intro_content = (TextView) convertView
- .findViewById(R.id.fm_gamedetails_intro_content);
- }
- }
-
- @Override
- public void onClick(View v) {
- final int id = v.getId();
- if (id == R.id.fm_gamedetails_newsstrategy_more) {
- Map kv = new HashMap();
- kv.put("点击", "新闻攻略-更多>");
- DataUtils.onEvent(getActivity(), "插件数据", gameName, kv);
-
- Map map = new HashMap();
- map.put("location", "新闻攻略-更多");
- map.put("createOn", System.currentTimeMillis() / 1000);
- map.put("game", gameName);
- map.put("page", "游戏详情");
- DataCollectionManager.onEvent(getActivity(), "click-item", map);
-
- EventBus.getDefault().post(new EBMoveTop("topbar", 0, 0));
- } else if (id == R.id.fm_gamedetails_ll_primatte_details_show) {
- int plugin_position = 0;
- if (count_newservice == 0) {
- plugin_position = 2;
- } else {
- plugin_position = 3;
- }
- if ("收回".equals(fm_gamedetails_tv_primatte_details.getText().toString())) {
-
- Map kv0 = new HashMap();
- kv0.put("点击", "插件介绍-收回^");
- DataUtils.onEvent(getActivity(), "插件数据", gameName, kv0);
-
- Map map = new HashMap();
- map.put("location", "插件介绍-收回");
- map.put("createOn", System.currentTimeMillis() / 1000);
- map.put("game", gameName);
- map.put("page", "游戏详情");
- DataCollectionManager.onEvent(getActivity(), "click-item", map);
-
- fm_gamedetails_tv_primatte_details.setText("详情");
- fm_gamedetails_iv_primatte_details.setImageResource(R.drawable.down);
- adapter.notifyItemChanged(plugin_position);
- } else {
- Map kv0 = new HashMap();
- kv0.put("点击", "插件介绍-详情v");
- DataUtils.onEvent(getActivity(), "插件数据", gameName, kv0);
-
- Map map = new HashMap();
- map.put("location", "插件介绍-详情");
- map.put("createOn", System.currentTimeMillis() / 1000);
- map.put("game", gameName);
- map.put("page", "游戏详情");
- DataCollectionManager.onEvent(getActivity(), "click-item",
- map);
-
- fm_gamedetails_tv_primatte_details.setText("收回");
- fm_gamedetails_iv_primatte_details.setImageResource(R.drawable.up);
- adapter.notifyItemChanged(plugin_position);
- }
- }
- }
-
- }
-
- private class GameDetailsAdapter extends RecyclerView.Adapter {
-
- @Override
- public int getItemCount() {
-
- int count = 3;
- if (entity.getServerInfo() != null
- && !entity.getServerInfo().isEmpty()) {
- count++;
- count_newservice = 1;
- }
- if ((entity.getTag() != null && !entity.getTag().isEmpty())
- || !TextUtils.isEmpty(entity.getRemind())) {
- count++;
- count_plugin = 1;
- }
- if (entity.getNews() != null && !entity.getNews().isEmpty()) {
- count += (entity.getNews().size() + 1);
- count_news = 1;
- }
- if (entity.getGallery() != null && !entity.getGallery().isEmpty()) {
- count++;
- count_gallery = 1;
- }
- if (!TextUtils.isEmpty(entity.getDes())) {
- count++;
- count_intro = 1;
- }
- return count;
- }
-
- @Override
- public void onBindViewHolder(GameDetailsViewHolder viewHolder,
- int position) {
-
- if (viewHolder.type == ITEM_TYPE.newservice) {
- if (!(todayPosition == 0 || todayPosition == 1 || todayPosition == -1)) {
- if (entity.getServerInfo().size() >= todayPosition + 2) {
- viewHolder.fm_gamedetails_newservice_show
- .scrollToPosition(todayPosition - 1);
- } else {
- viewHolder.fm_gamedetails_newservice_show
- .scrollToPosition(todayPosition);
- }
- } else if (todayPosition == -1
- && !(tomorrowPosition == 0 || tomorrowPosition == 1 || tomorrowPosition == -1)) {
- if (entity.getServerInfo().size() >= todayPosition + 2) {
- viewHolder.fm_gamedetails_newservice_show
- .scrollToPosition(tomorrowPosition - 1);
- } else {
- viewHolder.fm_gamedetails_newservice_show
- .scrollToPosition(tomorrowPosition);
- }
- } else if (todayPosition == -1 && tomorrowPosition == -1) {
- viewHolder.fm_gamedetails_newservice_show
- .scrollToPosition(entity.getServerInfo().size() - 1);
- viewHolder.fm_gamedetails_newservice_right
- .setVisibility(View.GONE);
- } else {
- viewHolder.fm_gamedetails_newservice_left
- .setVisibility(View.GONE);
- }
- if (todayPosition == entity.getServerInfo().size() - 1
- || todayPosition == entity.getServerInfo().size() - 2) {
- viewHolder.fm_gamedetails_newservice_right
- .setVisibility(View.GONE);
- }
- if (todayPosition == -1
- && (tomorrowPosition == entity.getServerInfo().size() - 1 || tomorrowPosition == entity
- .getServerInfo().size() - 2)) {
- viewHolder.fm_gamedetails_newservice_right
- .setVisibility(View.GONE);
- }
- if (entity.getServerInfo().size() <= 3) {
- viewHolder.fm_gamedetails_newservice_left
- .setVisibility(View.GONE);
- viewHolder.fm_gamedetails_newservice_right
- .setVisibility(View.GONE);
- }
- } else if (viewHolder.type == ITEM_TYPE.primatte) {
- if (!TextUtils.isEmpty(entity.getRemind())) {
- viewHolder.fm_gamedetails_ll_primatte_warmprompt
- .setVisibility(View.VISIBLE);
- viewHolder.fm_gamedetails_primatte_content
- .setVisibility(View.VISIBLE);
- viewHolder.fm_gamedetails_primatte_content.setText(entity
- .getRemind());
- } else {
- viewHolder.fm_gamedetails_ll_primatte_warmprompt
- .setVisibility(View.GONE);
- viewHolder.fm_gamedetails_primatte_content
- .setVisibility(View.GONE);
- }
- if (entity.getTag() == null || entity.getTag().isEmpty()) {
- viewHolder.fm_gamedetails_ll_primatte_details_show.setVisibility(View.GONE);
- } else {
- viewHolder.fm_gamedetails_ll_primatte_details.removeAllViews();
- if (entity.getTag().size() >= 3) {
- viewHolder.fm_gamedetails_ll_primatte_details_show.setVisibility(View.VISIBLE);
- if ("详情".equals(viewHolder.fm_gamedetails_tv_primatte_details.getText().toString())) {
- TagEntity tagEntity = entity.getTag().get(0);
- View child = View.inflate(getActivity(),
- R.layout.primatte_details_item, null);
- ImageView primatte_item_icon = (ImageView) child
- .findViewById(R.id.primatte_item_icon);
- final TextView primatte_item_title = (TextView) child
- .findViewById(R.id.primatte_item_title);
- TextView primatte_item_intro = (TextView) child
- .findViewById(R.id.primatte_item_intro);
- ImageUtils.getInstance(getActivity()).display(
- tagEntity.getIcon(), primatte_item_icon,
- R.drawable.primatte_default_icon);
- primatte_item_title.setText(tagEntity.getName());
- primatte_item_intro.setText(tagEntity.getDes());
- viewHolder.fm_gamedetails_ll_primatte_details
- .addView(child);
-
- if (viewHolder.recyclerView == null) {
- RecyclerView recyclerView = new RecyclerView(
- getActivity());
- recyclerView.setHasFixedSize(true);
- recyclerView
- .setLayoutManager(new GridLayoutManager(
- getActivity(), 3));
- recyclerView.setAdapter(new PrimatteAdapter(
- entity.getTag()));
- int height = (int) Math.ceil((entity.getTag()
- .size() - 1) / 3d)
- * DisplayUtils
- .dip2px(getActivity(), 21);
- LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
- LayoutParams.MATCH_PARENT, height);
- recyclerView.setLayoutParams(lparams);
- viewHolder.recyclerView = recyclerView;
- }
- viewHolder.fm_gamedetails_ll_primatte_details
- .addView(viewHolder.recyclerView);
- return;
- }
- } else {
- viewHolder.fm_gamedetails_ll_primatte_details_show.setVisibility(View.GONE);
- }
- for (int i = 0, size = entity.getTag().size(); i < size; i++) {
- TagEntity tagEntity = entity.getTag().get(i);
- View child = View.inflate(getActivity(),
- R.layout.primatte_details_item, null);
- ImageView primatte_item_icon = (ImageView) child
- .findViewById(R.id.primatte_item_icon);
- TextView primatte_item_title = (TextView) child
- .findViewById(R.id.primatte_item_title);
- TextView primatte_item_intro = (TextView) child
- .findViewById(R.id.primatte_item_intro);
- ImageUtils.getInstance(getActivity()).display(
- tagEntity.getIcon(), primatte_item_icon,
- R.drawable.primatte_default_icon);
- primatte_item_title.setText(tagEntity.getName());
- primatte_item_intro.setText(tagEntity.getDes());
- viewHolder.fm_gamedetails_ll_primatte_details
- .addView(child);
- }
- }
- } else if (viewHolder.type == ITEM_TYPE.news_item) {
- final NewsEntity newsEntity = entity.getNews().get(
- position - position_news - 1);
- viewHolder.news_type.setBackgroundResource(NewsUtils
- .getDrawableIdByType(newsEntity.getType()));
- viewHolder.news_type.setText(newsEntity.getType());
- viewHolder.news_title.setText(newsEntity.getTitle());
- viewHolder.news_item.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Map kv = new HashMap();
- kv.put("点击", "新闻攻略");
- DataUtils.onEvent(getActivity(), "插件数据", gameName, kv);
-
- //统计阅读量
- NewsUtils.statNewsViews(newsEntity.getId());
- NewsUtils.startNewsActivity(getActivity(), newsEntity,
- entrance + "-游戏详情-详情");
- }
- });
- } else if (viewHolder.type == ITEM_TYPE.intro) {
- viewHolder.fm_gamedetails_intro_content
- .setText(entity.getDes());
- }
- }
-
- @Override
- public GameDetailsViewHolder onCreateViewHolder(ViewGroup viewGroup,
- int type) {
- View view;
- if (type == ITEM_TYPE.blank_top1) {
- RelativeLayout relativeLayout = new RelativeLayout(
- getActivity());
- LayoutParams params = new LayoutParams(
- LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(
- getActivity(), 66));
- relativeLayout.setLayoutParams(params);
- view = relativeLayout;
- } else if (type == ITEM_TYPE.blank_top2) {
- RelativeLayout relativeLayout = new RelativeLayout(
- getActivity());
- LayoutParams params = new LayoutParams(
- LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(
- getActivity(), 29));
- relativeLayout.setLayoutParams(params);
- view = relativeLayout;
- } else if (type == ITEM_TYPE.newservice) {
- view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_item_newservice, viewGroup, false);
- } else if (type == ITEM_TYPE.primatte) {
- view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_item_primatte, viewGroup, false);
- if (count_newservice == 1) {
- view.findViewById(R.id.fm_gamedetails_primatte_cutting_line)
- .setVisibility(View.VISIBLE);
- }
- } else if (type == ITEM_TYPE.newsstrategy) {
- view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_item_newsstrategy, viewGroup,
- false);
- } else if (type == ITEM_TYPE.news_item) {
- view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_item_news_item, viewGroup, false);
- } else if (type == ITEM_TYPE.screenshot) {
- view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_item_screenshot, viewGroup, false);
- if (count_news == 1) {
- view.findViewById(
- R.id.fm_gamedetails_screenshot_cutting_line)
- .setVisibility(View.VISIBLE);
- }
- } else if (type == ITEM_TYPE.intro) {
- view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_item_intro, viewGroup, false);
- } else {
- int normalHeight = DisplayUtils.dip2px(getActivity(), 44);
-
- if (!Config.isShow) {
- normalHeight = 0;
- }
-
- if (topbarVisibility != View.VISIBLE) {
- int height = 0;
- for (int i = 0, size = fm_gamedetails_rv_show
- .getChildCount(); i < size; i++) {
- height += fm_gamedetails_rv_show.getChildAt(i)
- .getMeasuredHeight();
- }
-
- int totalHeight = fm_gamedetails_rv_show.getHeight()
- + DisplayUtils.dip2px(getActivity(), 66);
-
- int bottom = totalHeight - height;
-
- if (bottom > normalHeight) {
- int count = 0;
- if (count_newservice != 0) {
- count++;
- }
- if (count_plugin != 0) {
- count++;
- }
- if (count_news != 0) {
- count++;
- }
- if (count_gallery != 0) {
- count++;
- }
- normalHeight = bottom - count
- * DisplayUtils.dip2px(getActivity(), 4);
- }
- }
-
- RelativeLayout relativeLayout = new RelativeLayout(
- getActivity());
- relativeLayout.setBackgroundColor(Color.WHITE);
- LayoutParams params = new LayoutParams(
- LayoutParams.MATCH_PARENT, normalHeight);
- relativeLayout.setLayoutParams(params);
- view = relativeLayout;
- }
- view.setTag(type);
- return new GameDetailsViewHolder(view);
- }
-
- @Override
- public int getItemViewType(int position) {
- if (position == 0) {
- return ITEM_TYPE.blank_top1;
- }
- if (position == 1) {
- return ITEM_TYPE.blank_top2;
- }
- if (count_newservice != 0 && position == 2) {
- return ITEM_TYPE.newservice;
- }
- if (count_plugin != 0) {
- if ((count_newservice != 0 && position == 3)
- || (count_newservice == 0 && position == 2)) {
- return ITEM_TYPE.primatte;
- }
- }
- if (count_news != 0) {
- if ((count_newservice != 0 && count_plugin != 0 && position == 4)
- || (count_newservice == 0 && count_plugin != 0 && position == 3)
- || (count_newservice != 0 && count_plugin == 0 && position == 3)
- || (count_newservice == 0 && count_plugin == 0 && position == 2)) {
- position_news = position;
- return ITEM_TYPE.newsstrategy;
- }
- }
- if (position_news != -1 && position > position_news
- && position <= position_news + entity.getNews().size()) {
- return ITEM_TYPE.news_item;
- }
- if (count_gallery != 0) {
- if ((count_newservice != 0 && count_plugin != 0
- && count_news != 0 && position == 5 + entity.getNews()
- .size())
- || (count_newservice != 0 && count_plugin != 0
- && count_news == 0 && position == 4)
- || (count_newservice != 0 && count_plugin == 0
- && count_news != 0 && position == 4 + entity
- .getNews().size())
- || (count_newservice == 0 && count_plugin != 0
- && count_news != 0 && position == 4 + entity
- .getNews().size())
- || (count_newservice == 0 && count_plugin == 0
- && count_news != 0 && position == 3 + entity
- .getNews().size())
- || (count_newservice != 0 && count_plugin == 0
- && count_news == 0 && position == 3)
- || (count_newservice == 0 && count_plugin != 0
- && count_news == 0 && position == 3)
- || (count_newservice == 0 && count_plugin == 0
- && count_news == 0 && position == 2)) {
- return ITEM_TYPE.screenshot;
- }
- }
- if (count_intro != 0) {
- if ((count_newservice != 0 && count_plugin != 0
- && count_news != 0 && count_gallery != 0 && position == 6 + entity
- .getNews().size())
- || (count_newservice == 0 && count_plugin != 0
- && count_news != 0 && count_gallery != 0 && position == 5 + entity
- .getNews().size())
- || (count_newservice != 0 && count_plugin == 0
- && count_news != 0 && count_gallery != 0 && position == 5 + entity
- .getNews().size())
- || (count_newservice != 0 && count_plugin != 0
- && count_news == 0 && count_gallery != 0 && position == 5)
- || (count_newservice != 0 && count_plugin != 0
- && count_news != 0 && count_gallery == 0 && position == 5 + entity
- .getNews().size())
- || (count_newservice == 0 && count_plugin == 0
- && count_news != 0 && count_gallery != 0 && position == 4 + entity
- .getNews().size())
- || (count_newservice == 0 && count_plugin != 0
- && count_news == 0 && count_gallery != 0 && position == 4)
- || (count_newservice == 0 && count_plugin != 0
- && count_news != 0 && count_gallery == 0 && position == 4 + entity
- .getNews().size())
- || (count_newservice != 0 && count_plugin == 0
- && count_news == 0 && count_gallery != 0 && position == 4)
- || (count_newservice != 0 && count_plugin == 0
- && count_news != 0 && count_gallery == 0 && position == 4 + entity
- .getNews().size())
- || (count_newservice != 0 && count_plugin != 0
- && count_news == 0 && count_gallery == 0 && position == 4)
- || (count_newservice == 0 && count_plugin == 0
- && count_news == 0 && count_gallery != 0 && position == 3)
- || (count_newservice == 0 && count_plugin == 0
- && count_news != 0 && count_gallery == 0 && position == 3 + entity
- .getNews().size())
- || (count_newservice == 0 && count_plugin != 0
- && count_news == 0 && count_gallery == 0 && position == 3)
- || (count_newservice != 0 && count_plugin == 0
- && count_news == 0 && count_gallery == 0 && position == 3)
- || (count_newservice == 0 && count_plugin == 0
- && count_news == 0 && count_gallery == 0 && position == 2)) {
- return ITEM_TYPE.intro;
- }
- }
- return ITEM_TYPE.blank_bottom;
- }
- }
-
- private class PrimatteViewHolder extends RecyclerView.ViewHolder {
-
- private ImageView primatte_item_icon;
- private TextView primatte_item_title;
-
- public PrimatteViewHolder(View view) {
- super(view);
- primatte_item_icon = (ImageView) view
- .findViewById(R.id.primatte_item_icon);
- primatte_item_title = (TextView) view
- .findViewById(R.id.primatte_item_title);
- view.findViewById(R.id.primatte_item_intro)
- .setVisibility(View.GONE);
- }
-
- }
-
- private class PrimatteAdapter extends
- RecyclerView.Adapter {
-
- private List tags;
-
- public PrimatteAdapter(List tags) {
- this.tags = tags;
- }
-
- @Override
- public int getItemCount() {
-
- return tags.size() - 1;
- }
-
- @Override
- public void onBindViewHolder(PrimatteViewHolder viewHodler, int position) {
-
- TagEntity tagEntity = tags.get(position + 1);
- ImageUtils.getInstance(getActivity()).display(tagEntity.getIcon(),
- viewHodler.primatte_item_icon,
- R.drawable.primatte_default_icon);
- viewHodler.primatte_item_title.setText(tagEntity.getName());
- }
-
- @Override
- public PrimatteViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
-
- View view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.primatte_details_item, viewGroup, false);
- return new PrimatteViewHolder(view);
- }
-
- }
-
- private class GameNewServiceViewHolder extends RecyclerView.ViewHolder {
-
- private TextView newservice_item_name, newservice_item_time;
- private ImageView newservice_item_point;
-
- public GameNewServiceViewHolder(View convertView) {
- super(convertView);
-
- newservice_item_name = (TextView) convertView
- .findViewById(R.id.newservice_item_name);
- newservice_item_time = (TextView) convertView
- .findViewById(R.id.newservice_item_time);
- newservice_item_point = (ImageView) convertView
- .findViewById(R.id.newservice_item_point);
- }
-
- }
-
- private class GameNewServiceAdapter extends
- RecyclerView.Adapter {
-
- @Override
- public int getItemCount() {
- return entity.getServerInfo().size();
- }
-
- @Override
- public void onBindViewHolder(GameNewServiceViewHolder viewHolder,
- int position) {
-
- ServerEntity serverEntity = entity.getServerInfo().get(position);
- viewHolder.newservice_item_name.setText(serverEntity.getServer());
- String tag = serverEntity.getTag();
- if ("昨天".equals(tag)) {
- viewHolder.newservice_item_name
- .setBackgroundResource(R.drawable.newserver_gray);
- viewHolder.newservice_item_point
- .setBackgroundResource(R.drawable.oval_gray_bg);
- } else if ("今天".equals(tag)) {
- viewHolder.newservice_item_name
- .setBackgroundResource(R.drawable.newserver_red);
- viewHolder.newservice_item_point
- .setBackgroundResource(R.drawable.oval_scarlet_bg);
- } else {
- viewHolder.newservice_item_name
- .setBackgroundResource(R.drawable.newserver_orange);
- viewHolder.newservice_item_point
- .setBackgroundResource(R.drawable.oval_orange_bg);
- }
- SimpleDateFormat format = new SimpleDateFormat(tag + "kk:mm",
- Locale.getDefault());
- viewHolder.newservice_item_time.setText(format.format(serverEntity
- .getTime()));
- }
-
- @Override
- public GameNewServiceViewHolder onCreateViewHolder(ViewGroup viewGroup,
- int i) {
-
- View view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_newservice_item, viewGroup, false);
- DisplayMetrics outMetrics = new DisplayMetrics();
- getActivity().getWindowManager().getDefaultDisplay()
- .getMetrics(outMetrics);
- int width = outMetrics.widthPixels
- - DisplayUtils.dip2px(getActivity(), 60);
- RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(
- width / 3, DisplayUtils.dip2px(getActivity(), 1));
- rparams.addRule(RelativeLayout.CENTER_IN_PARENT);
- view.findViewById(R.id.newservice_item_line).setLayoutParams(
- rparams);
- return new GameNewServiceViewHolder(view);
- }
-
- }
-
- private class GameScreenshotViewHolder extends RecyclerView.ViewHolder
- implements OnClickListener {
-
- private ImageView screenshot_item_iv;
-
- public GameScreenshotViewHolder(View convertView) {
- super(convertView);
-
- screenshot_item_iv = (ImageView) convertView
- .findViewById(R.id.screenshot_item_iv);
- screenshot_item_iv.setOnClickListener(this);
- }
-
- @Override
- public void onClick(View v) {
- Map kv = new HashMap();
- kv.put("点击", "游戏截图");
- DataUtils.onEvent(getActivity(), "插件数据", gameName, kv);
-
- Map map = new HashMap();
- map.put("location", "游戏截图");
- map.put("createOn", System.currentTimeMillis() / 1000);
- map.put("game", gameName);
- map.put("page", "游戏详情");
- DataCollectionManager.onEvent(getActivity(), "click-item", map);
-
- Intent intent = new Intent(getActivity(), ViewImageActivity.class);
- intent.putStringArrayListExtra("urls", entity.getGallery());
- intent.putExtra("current", getPosition());
- startActivity(intent);
- }
-
- }
-
- private class GameScreenshotAdapter extends
- RecyclerView.Adapter {
-
- @Override
- public int getItemCount() {
- if (entity.getGallery() == null) {
- return 0;
- }
- return entity.getGallery().size();
- }
-
- @Override
- public void onBindViewHolder(GameScreenshotViewHolder viewHolder,
- int position) {
- ImageUtils.getInstance(getActivity()).display(
- entity.getGallery().get(position),
- viewHolder.screenshot_item_iv);
- }
-
- @Override
- public GameScreenshotViewHolder onCreateViewHolder(ViewGroup viewGroup,
- int i) {
- View view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.gamedetails_screenshot_item, viewGroup, false);
- return new GameScreenshotViewHolder(view);
- }
-
- @Override
- public int getItemViewType(int position) {
- return position;
- }
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- isDestroy = true;
- EventBus.getDefault().unregister(this);
- AppController.canclePendingRequests(GameDetailsFragment.class);
- view = null;
- fm_gamedetails_rv_show = null;
- linearLayoutManager = null;
- adapter = null;
- fm_gamedetails_ll_loading = null;
- reuse_no_connection = null;
- rparams = null;
- entity = null;
- id = null;
- entrance = null;
- gameName = null;
- handler = null;
- }
-}
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java
deleted file mode 100644
index 099beb7bd8..0000000000
--- a/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java
+++ /dev/null
@@ -1,959 +0,0 @@
-package com.gh.gamecenter.gamedetails;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.util.ArrayMap;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.Editable;
-import android.text.Html;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.TextView.OnEditorActionListener;
-import android.widget.Toast;
-
-import com.android.volley.NoConnectionError;
-import com.android.volley.Response;
-import com.android.volley.TimeoutError;
-import com.android.volley.VolleyError;
-import com.gh.base.AppController;
-import com.gh.common.constant.Config;
-import com.gh.common.util.DataUtils;
-import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.NewsUtils;
-import com.gh.common.util.Utils;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.entity.NewsEntity;
-import com.gh.gamecenter.eventbus.EBMoveTop;
-import com.gh.gamecenter.eventbus.EBNetworkState;
-import com.gh.gamecenter.eventbus.EBNewsType;
-import com.gh.gamecenter.eventbus.EBSlide;
-import com.gh.gamecenter.manager.DataCollectionManager;
-import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.greenrobot.event.EventBus;
-
-/**
- * 游戏资讯 fragment
- *
- * @author 黄壮华
- *
- */
-public class GameInformationFragment extends Fragment {
-
- private View view;
- private RecyclerView fm_gameinformation_rv_show;
- private LinearLayoutManager linearLayoutManager;
- private GameInformationAdapter adapter;
- private LinearLayout fm_gameinformation_ll_loading, reuse_no_connection;
- private RelativeLayout.LayoutParams rparams;
-
- private ArrayMap adapterMap;
- private List typeList;
-
- private String type = "全部";
- private String keyword;
- private String id;
- private String gameName;
- private String entrance;
-
- private int dis = 0;
- private int distance;
- private int currentPosition = 0;
- private int column;
-
- private boolean isNull = false;
- private boolean isLoading = false;
- private boolean isNetworkError = false;
- private boolean isDestroy = false;
-
- public void setParams(String id, String gameName, String entrance) {
- this.id = id;
- this.gameName = gameName;
- this.entrance = entrance;
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- Utils.log(this.getClass().getSimpleName() + " onSaveInstanceState");
- outState.putString("id", id);
- outState.putString("gameName", gameName);
- outState.putString("entrance", entrance);
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
-
- if (savedInstanceState != null) {
- id = savedInstanceState.getString("id");
- gameName = savedInstanceState.getString("gameName");
- entrance = savedInstanceState.getString("entrance");
- }
-
- view = View.inflate(getActivity(), R.layout.gameinformation, null);
-
- distance = DisplayUtils.dip2px(getActivity(), 66);
- typeList = new ArrayList();
- adapterMap = new ArrayMap();
-
- SharedPreferences sp = getActivity().getSharedPreferences(
- Config.PREFERENCE, Context.MODE_PRIVATE);
- column = sp.getInt("game_detail_news_type_tab_column", 4);
-
- fm_gameinformation_ll_loading = (LinearLayout) view
- .findViewById(R.id.fm_gameinformation_ll_loading);
-
- reuse_no_connection = (LinearLayout) view
- .findViewById(R.id.reuse_no_connection);
- reuse_no_connection.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- fm_gameinformation_rv_show.setVisibility(View.GONE);
- fm_gameinformation_ll_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- getGameInformation(0, true);
- }
- });
-
- rparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.WRAP_CONTENT);
-
- linearLayoutManager = new LinearLayoutManager(getActivity());
- linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- fm_gameinformation_rv_show = (RecyclerView) view
- .findViewById(R.id.fm_gameinformation_rv_show);
- fm_gameinformation_rv_show.setHasFixedSize(true);
- fm_gameinformation_rv_show.setLayoutManager(linearLayoutManager);
- fm_gameinformation_rv_show
- .setOnScrollListener(new GameInformationOnScrollListener());
-
- EventBus.getDefault().register(this);
-
- getGameInformation(0, true);
- }
-
- @Override
- @Nullable
- public View onCreateView(LayoutInflater inflater,
- @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-
- if (container != null) {
- container.removeView(view);
- }
- return view;
- }
-
- private class GameInformationOnScrollListener extends
- RecyclerView.OnScrollListener {
-
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-
- super.onScrolled(recyclerView, dx, dy);
- int visibility;
- if (linearLayoutManager.findFirstVisibleItemPosition() >= 1) {
- visibility = View.VISIBLE;
- } else {
- visibility = View.GONE;
- }
-
- dis += dy;
-
- rparams.topMargin -= dy;
-
- EventBus.getDefault().post(
- new EBMoveTop("top", visibility, rparams.topMargin));
- }
-
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-
- super.onScrollStateChanged(recyclerView, newState);
- if (newState == OnScrollListener.SCROLL_STATE_IDLE) {
- int position = adapter.getNewsList().size() + 4;
- if (!Config.isShow) {
- position--;
- }
- if (linearLayoutManager.findLastVisibleItemPosition() == position
- && !adapter.isRemove() && !isLoading) {
- if (currentPosition == -1) {
- searchFormServer(adapter.getNewsList().size());
- } else {
- getGameInformation(adapter.getNewsList().size());
- }
- }
-
- if (dis > distance) {
- EventBus.getDefault().post(new EBSlide(distance, 0, false));
- EventBus.getDefault().post(new EBSlide(distance, 2, false));
- } else if (dis < -distance) {
- EventBus.getDefault().post(new EBSlide(0, 0, false));
- EventBus.getDefault().post(new EBSlide(0, 2, false));
- } else {
- EventBus.getDefault().post(new EBSlide(dis, 0, false));
- EventBus.getDefault().post(new EBSlide(dis, 2, false));
- }
- }
- }
- }
-
- public void onEventMainThread(EBSlide busOne) {
- if (busOne.getPosition() == 1) {
- if (busOne.isReset()) {
- fm_gameinformation_rv_show.scrollBy(0, distance - dis);
- } else {
- if (busOne.getDistance() == 0) {
- fm_gameinformation_rv_show.scrollToPosition(0);
- rparams.topMargin = 0;
- dis = 0;
- } else {
- fm_gameinformation_rv_show.scrollBy(0, busOne.getDistance()
- - dis);
- }
- }
- }
- }
-
- public void onEventMainThread(EBNetworkState busNetworkState) {
- if (busNetworkState.isNetworkConnected()) {
- if (reuse_no_connection.getVisibility() == View.VISIBLE) {
- fm_gameinformation_rv_show.setVisibility(View.GONE);
- fm_gameinformation_ll_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- getGameInformation(0, true);
- } else if (isNetworkError) {
- isNetworkError = false;
- adapter.notifyItemChanged(adapter.getItemCount() - 2);
- if (currentPosition == -1) {
- searchFormServer(adapter.getNewsList().size());
- } else {
- getGameInformation(adapter.getNewsList().size());
- }
- }
- }
- }
-
- public void onEventMainThread(EBNewsType type) {
- if ("资讯".equals(type.getType())) {
- typeList = type.getList();
- adapter.notifyItemChanged(2);
- }
- }
-
- private void getGameInformation(final int offset) {
- getGameInformation(offset, false);
- }
-
- private void getGameInformation(final int offset, final boolean isFirst) {
- if (isLoading) {
- return;
- }
- isLoading = true;
- if (offset == 0) {
- adapter = adapterMap.get(type);
- if (adapter == null) {
- adapter = new GameInformationAdapter(
- new ArrayList());
- adapterMap.put(type, adapter);
- }
- fm_gameinformation_rv_show.setAdapter(adapter);
- }
-
- final String url;
-
- if ("全部".equals(type)) {
- url = Config.HOST + "v1d45/game/" + id + "/news?limit=20&offset="
- + offset + "&type_group=" + Uri.encode("资讯");
- } else {
- url = Config.HOST + "v1d45/game/" + id + "/news?limit=20&offset="
- + offset + "&type=" + Uri.encode(type);
- }
-
- JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url,
- new Response.Listener() {
-
- @Override
- public void onResponse(JSONArray response) {
- isLoading = false;
- if (!isDestroy) {
- try {
- processingData(response, offset, isFirst);
-// adapter.setLoaded(true);
-// adapter.notifyItemChanged(adapter.getItemCount() - 2);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }
- }, new Response.ErrorListener() {
-
- @Override
- public void onErrorResponse(VolleyError error) {
- isLoading = false;
- // 无网络连接和访问超时
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- if (!isDestroy) {
- if (offset == 0 && isFirst) {
- fm_gameinformation_rv_show
- .setVisibility(View.GONE);
- fm_gameinformation_ll_loading
- .setVisibility(View.GONE);
- reuse_no_connection
- .setVisibility(View.VISIBLE);
- } else {
- Toast.makeText(getActivity(), "网络错误",
- Toast.LENGTH_SHORT).show();
- isNetworkError = true;
- adapter.notifyItemChanged(adapter
- .getItemCount() - 2);
- }
- }
- }
- }
- });
- if ((adapter.getNewsList().isEmpty() && !adapter.isRemove() && offset == 0)
- || (offset != 0)) {
- AppController.addToRequestQueue(request,
- GameInformationFragment.class);
- }
- }
-
- private void processingData(JSONArray response, int offset, boolean isFirst) throws JSONException {
- Type listType = new TypeToken>() {}.getType();
- Gson gson = new Gson();
- List newsList = gson.fromJson(response.toString(), listType);
- if (offset == 0) {
- fm_gameinformation_ll_loading.setVisibility(View.GONE);
- fm_gameinformation_rv_show.setVisibility(View.VISIBLE);
- }
- int size = response.length();
- adapter.getNewsList().addAll(newsList);
- adapter.notifyItemRangeInserted(adapter.getNewsList().size() - size + 3, size);
- if (size < 20) {
- adapter.setRemove(true);
- adapter.notifyItemRemoved(adapter.getNewsList().size() + 3);
- adapter.notifyItemChanged(adapter.getNewsList().size() + 3);
- if (isFirst && size == 0 && !isNull) {
- isNull = true;
- adapter.notifyItemRemoved(2);
- }
- }
- }
-
- private class GameInformationViewHolder extends RecyclerView.ViewHolder
- implements OnClickListener, TextWatcher, OnEditorActionListener {
-
- private EditText item_et_search;
- private ImageView item_iv_delete;
- private TextView item_tv_search;
- private RecyclerView item_rv_select;
- private LinearLayout item_ll_search_result;
- private TextView item_tv_search_result;
- private ImageView item_iv_search_result;
-
- private TextView information_type, information_title;
- private View itemView;
-
- private ProgressBar item_pb_loading;
- private TextView item_tv_loading;
-
- public GameInformationViewHolder(View convertView) {
- super(convertView);
-
- itemView = convertView;
- int position = (Integer) convertView.getTag();
- if (!isNull && position == 2) {
- item_et_search = (EditText) convertView
- .findViewById(R.id.item_et_search);
- item_et_search.requestFocus();
- item_et_search.addTextChangedListener(this);
- item_et_search.setOnEditorActionListener(this);
- item_iv_delete = (ImageView) convertView
- .findViewById(R.id.item_iv_delete);
- item_iv_delete.setOnClickListener(this);
- item_tv_search = (TextView) convertView
- .findViewById(R.id.item_tv_search);
- item_tv_search.setOnClickListener(this);
- item_rv_select = (RecyclerView) convertView
- .findViewById(R.id.item_rv_select);
- item_rv_select.setLayoutManager(new GridLayoutManager(
- getActivity(), column));
- item_rv_select.setAdapter(new SelectViewAdapter());
- item_ll_search_result = (LinearLayout) convertView
- .findViewById(R.id.item_ll_search_result);
- item_tv_search_result = (TextView) convertView
- .findViewById(R.id.item_tv_search_result);
- item_iv_search_result = (ImageView) convertView
- .findViewById(R.id.item_iv_search_result);
- item_iv_search_result.setOnClickListener(this);
- } else if (position >= 3
- && position <= adapter.getNewsList().size() + 2) {
- information_type = (TextView) convertView
- .findViewById(R.id.information_type);
- information_title = (TextView) convertView
- .findViewById(R.id.information_title);
- convertView.setOnClickListener(this);
- } else if (!adapter.isRemove()
- && position == adapter.getNewsList().size() + 3) {
- item_pb_loading = (ProgressBar) convertView
- .findViewById(R.id.item_pb_loading);
- item_tv_loading = (TextView) convertView
- .findViewById(R.id.item_tv_loading);
- }
- }
-
- @Override
- public void onClick(View v) {
- if (v == itemView) {
- NewsEntity newsEntity = adapter.getNewsList().get(
- getPosition() - 3);
-
- Map kv = new HashMap();
- kv.put("文章类型", newsEntity.getType());
- kv.put("入口", "游戏详情-资讯");
- DataUtils.onEvent(getActivity(), "文章阅读-资讯",
- newsEntity.getTitle(), kv);
-
- Map map = new HashMap();
- map.put("location", "资讯");
- map.put("createOn", System.currentTimeMillis() / 1000);
- map.put("game", gameName);
- map.put("news", newsEntity.getTitle());
- map.put("page", "游戏详情");
- DataCollectionManager.onEvent(getActivity(), "click-item", map);
-
- //统计阅读量
- NewsUtils.statNewsViews(newsEntity.getId());
- NewsUtils.startNewsActivity(getActivity(), newsEntity, entrance + "-游戏详情-资讯");
- }
- if (v == item_tv_search) {
- InputMethodManager imm = (InputMethodManager) getActivity()
- .getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- if (!TextUtils.isEmpty(item_et_search.getText().toString())) {
- keyword = item_et_search.getText().toString();
-
- Map kv = new HashMap();
- kv.put("关键字", keyword);
- DataUtils.onEvent(getActivity(), "搜索-游戏详情", gameName, kv);
-
- Map map = new HashMap();
- map.put("key", keyword);
- map.put("from", "游戏详情-资讯");
- map.put("createdOn", System.currentTimeMillis() / 1000);
- DataCollectionManager.onEvent(getActivity(), "search", map);
-
- searchFormServer(0);
- } else {
- Toast.makeText(getActivity(), "请输入搜索关键字",
- Toast.LENGTH_SHORT).show();
- }
- }
- if (v == item_iv_delete) {
- item_et_search.setText("");
- }
- if (v == item_iv_search_result) {
- InputMethodManager imm = (InputMethodManager) getActivity()
- .getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- EventBus.getDefault().post(new EBSlide(0, 0, false));
- EventBus.getDefault().post(new EBSlide(0, 2, false));
- fm_gameinformation_rv_show.scrollBy(0, rparams.topMargin);
- currentPosition = 0;
- adapter = adapterMap.get("全部");
- fm_gameinformation_rv_show.setAdapter(adapter);
- }
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
-
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before,
- int count) {
- if (s.length() > 0) {
- item_iv_delete.setVisibility(View.VISIBLE);
- } else {
- item_iv_delete.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void afterTextChanged(Editable s) {
-
- }
-
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (actionId == EditorInfo.IME_ACTION_SEARCH) {
- InputMethodManager imm = (InputMethodManager) getActivity()
- .getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- if (!TextUtils.isEmpty(item_et_search.getText().toString())) {
- keyword = item_et_search.getText().toString();
-
- Map kv = new HashMap();
- kv.put("关键字", keyword);
- DataUtils.onEvent(getActivity(), "搜索-游戏详情", gameName, kv);
-
- Map map = new HashMap();
- map.put("key", keyword);
- map.put("from", "游戏详情-资讯");
- map.put("createdOn", System.currentTimeMillis() / 1000);
- DataCollectionManager.onEvent(getActivity(), "search", map);
-
- searchFormServer(0);
- } else {
- Toast.makeText(getActivity(), "请输入搜索关键字",
- Toast.LENGTH_SHORT).show();
- }
- }
- return false;
- }
-
- }
-
- private void searchFormServer(final int offset) {
- if (isLoading) {
- return;
- }
- isLoading = true;
- if (offset == 0) {
- EventBus.getDefault().post(new EBSlide(0, 0, false));
- EventBus.getDefault().post(new EBSlide(0, 2, false));
- fm_gameinformation_rv_show.scrollBy(0, rparams.topMargin);
-
- currentPosition = -1;
-
- adapter = new GameInformationAdapter(new ArrayList());
- fm_gameinformation_rv_show.setAdapter(adapter);
- }
-
- final String url = Config.HOST + "v1d45/search/news?type_group="
- + Uri.encode("资讯") + "&game_id=" + id + "&keyword="
- + Uri.encode(keyword) + "&limit=20&offset=" + offset;
- JsonArrayExtendedRequest searchRequest = new JsonArrayExtendedRequest(
- url, new Response.Listener() {
-
- @Override
- public void onResponse(JSONArray response) {
- isLoading = false;
- if (!isDestroy) {
- try {
- processingSearchData(response);
-// adapter.setLoaded(true);
-// adapter.notifyItemChanged(adapter.getItemCount() - 2);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }
- }, new Response.ErrorListener() {
-
- @Override
- public void onErrorResponse(VolleyError error) {
- isLoading = false;
- // 无网络连接和访问超时
- if (error.getClass().equals(NoConnectionError.class)
- || error.getClass().equals(TimeoutError.class)) {
- if (!isDestroy) {
- Toast.makeText(getActivity(), "网络错误",
- Toast.LENGTH_SHORT).show();
- isNetworkError = true;
- adapter.notifyItemChanged(adapter
- .getItemCount() - 2);
- }
- }
- }
- });
- AppController.addToRequestQueue(searchRequest,
- GameInformationFragment.class);
- }
-
- private void processingSearchData(JSONArray response) throws JSONException {
- Type listType = new TypeToken>() {}.getType();
- Gson gson = new Gson();
- List newsList = gson.fromJson(response.toString(), listType);
- int size = response.length();
- adapter.getNewsList().addAll(newsList);
- adapter.notifyItemRangeInserted(adapter.getNewsList().size() - size + 3, size);
- if (size < 20) {
- adapter.setRemove(true);
- adapter.notifyItemRemoved(adapter.getNewsList().size() + 3);
- adapter.notifyItemChanged(adapter.getNewsList().size() + 3);
- }
- adapter.notifyItemChanged(2);
- }
-
- private class GameInformationAdapter extends
- RecyclerView.Adapter {
-
- private ArrayList newsList;
- private boolean isRemove;
-// private boolean isLoaded;
-
- public GameInformationAdapter(ArrayList newsList) {
- this.newsList = newsList;
- isRemove = false;
-// isLoaded = false;
- }
-
- public ArrayList