diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c30fd6ea9e..c59f647585 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -146,6 +146,9 @@
+
diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java
index c27e088204..240b863abd 100644
--- a/app/src/main/java/com/gh/common/util/DialogUtils.java
+++ b/app/src/main/java/com/gh/common/util/DialogUtils.java
@@ -4,6 +4,8 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.text.Html;
+import android.text.Spanned;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
@@ -162,8 +164,139 @@ public class DialogUtils {
dialog.show();
}
+ public static void showSuccessDialog(Context context) {
+ final Dialog dialog = new Dialog(context);
+ View view = View.inflate(context, R.layout.gamedetails_attention_dialog, null);
+ TextView title = (TextView) view.findViewById(R.id.dialog_title);
+ title.setText("关注成功");
+ TextView confirm = (TextView) view.findViewById(R.id.dialog_confirm);
+ confirm.setText("我知道了");
+ confirm.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ TextView message = (TextView) view.findViewById(R.id.dialog_message);
+ message.setText("游戏的最新动态消息会优先提醒您,包括攻略、资讯、开服信息、开测信息以及最新的插件。");
+ view.findViewById(R.id.dialog_rl_cancel).setVisibility(View.GONE);
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(view);
+ dialog.show();
+ }
+
+ public static void showCancelDialog(Context context, final ConfiremListener listener) {
+ final Dialog dialog = new Dialog(context);
+ View view = View.inflate(context, R.layout.gamedetails_attention_dialog, null);
+ TextView title = (TextView) view.findViewById(R.id.dialog_title);
+ title.setText("取消关注");
+ TextView cancel = (TextView) view.findViewById(R.id.dialog_cancel);
+ cancel.setText("取消");
+ cancel.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ TextView message = (TextView) view.findViewById(R.id.dialog_message);
+
+ Spanned content = Html
+ .fromHtml("取消关注游戏后,您将无法及时收到游戏的攻略、资讯等最新动态提醒,您确定取消吗?");
+ message.setText(content);
+
+ view.findViewById(R.id.dialog_rl_confirm).setVisibility(View.VISIBLE);
+ view.findViewById(R.id.dialog_confirm).setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ if (listener != null) {
+ listener.onConfirem();
+ }
+ }
+ });
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(view);
+ dialog.show();
+ }
+
+ public static void showPluginDialog(Context context, final ConfiremListener cListener,
+ final DismissListener dListener) {
+ final Dialog dialog = new Dialog(context);
+ View view = View.inflate(context, R.layout.search_history_delete_dialog, null);
+ TextView title = (TextView) view.findViewById(R.id.delete_dialog_title);
+ title.setText("插件化安装");
+ TextView content = (TextView) view
+ .findViewById(R.id.delete_dialog_message);
+ Spanned spanned = Html.fromHtml("您将进行插件化安装以实现插件功能,此过程将"
+ + "卸载" + "当前使用的版本并"
+ + "安装插件版本" + "。");
+ content.setText(spanned);
+
+ TextView cancel = (TextView) view
+ .findViewById(R.id.delete_dialog_cancel);
+ cancel.setText("取消");
+ cancel.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+ TextView confirm = (TextView) view
+ .findViewById(R.id.delete_dialog_confirm);
+ confirm.setText("确定");
+ confirm.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ if (cListener != null) {
+ cListener.onConfirem();
+ }
+ }
+ });
+
+ if (dListener != null) {
+ dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ dListener.onDismiss();
+ }
+ });
+ }
+
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(view);
+ dialog.show();
+ }
+
+ public static void showDisclaimerDialog(Context context, String content) {
+ final Dialog disclaimerDialog = new Dialog(context);
+ View view = View.inflate(context, R.layout.setting_disclaimer_dialog, null);
+ TextView title = (TextView) view
+ .findViewById(R.id.disclaimer_dialog_title);
+ title.setText("免责声明");
+ TextView message = (TextView) view
+ .findViewById(R.id.disclaimer_dialog_message);
+ Spanned spanned = Html.fromHtml(content);
+ message.setText(spanned);
+ view.findViewById(R.id.disclaimer_dialog_confirm).setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ disclaimerDialog.dismiss();
+ }
+ });
+ disclaimerDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ disclaimerDialog.setContentView(view);
+ disclaimerDialog.show();
+ }
+
public interface ConfiremListener{
void onConfirem();
}
+ public interface DismissListener{
+ void onDismiss();
+ }
+
}
diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
index a5920e1fa6..c4824dbc10 100644
--- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
+++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
@@ -40,11 +40,9 @@ public class DownloadItemUtils {
public static void initializeGameMap(Context context,
ArrayMap> gameMap) {
gameMap.clear();
- List list = DownloadManager.getInstance(context)
- .getAll();
+ List list = DownloadManager.getInstance(context).getAll();
for (int i = 0, size = list.size(); i < size; i++) {
- ArrayMap map = gameMap.get(list.get(i)
- .getName());
+ ArrayMap map = gameMap.get(list.get(i).getName());
if (map == null) {
map = new ArrayMap();
}
@@ -147,7 +145,12 @@ public class DownloadItemUtils {
downloadEntry = entryMap.get(entryMap.keyAt(0));
}
- if (downloadEntry != null) {
+ String pluginPlatform = entity.getPluginPlatform();
+
+ if (downloadEntry != null && (pluginPlatform == null
+ || pluginPlatform.equals(PlatformUtils.getInstance(context)
+ .getPlatformName(downloadEntry.getMeta().get("platform"))))) {
+
labelList.setVisibility(View.GONE);
game_progressbar.setVisibility(View.VISIBLE);
game_ll_info.setVisibility(View.VISIBLE);
@@ -304,6 +307,19 @@ public class DownloadItemUtils {
}
game_progressbar.setProgress((int) (downloadEntry
.getPercent() * 10));
+ } else {
+ labelList.setVisibility(View.VISIBLE);
+ game_progressbar.setVisibility(View.GONE);
+ game_ll_info.setVisibility(View.GONE);
+ if (entity.getApk() != null) {
+ if (entity.getPluginPlatform() != null) {
+ downloadBtn.setText("插件化");
+ } else {
+ downloadBtn.setText("下载");
+ }
+ downloadBtn.setBackgroundResource(R.drawable.textview_blue_style);
+ downloadBtn.setTextColor(0xFFFFFFFF);
+ }
}
} else {
labelList.setVisibility(View.VISIBLE);
@@ -524,7 +540,6 @@ public class DownloadItemUtils {
map.put("platform", PlatformUtils.getInstance(context)
.getPlatformName(entity.getApk().get(0).getPlatform()));
map.put("status", "开始");
- map.put("isPlugin", "true");
map.put("location", "游戏详情:" + entity.getName());
map.put("from", entrance);
map.put("network", NetworkUtils.getConnectedType(context));
@@ -729,7 +744,8 @@ public class DownloadItemUtils {
meta.put("entrance", entrance);
meta.put("location", "游戏详情:" + game.getName());
if (game.getPluginPlatform() != null) {
- meta.put("PluginPlatform", PlatformUtils.getInstance(context).getPlatformName(game.getApk().get(0).getPlatform()));
+ meta.put("PluginPlatform", game.getPluginPlatform());
+ meta.put("isPlugin", "true");
}
entry.setMeta(meta);
return entry;
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 d3c57aaea3..f37e443e38 100644
--- a/app/src/main/java/com/gh/common/view/DownloadDialog.java
+++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java
@@ -1,6 +1,5 @@
package com.gh.common.view;
-import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
@@ -16,8 +15,6 @@ import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
-import android.text.Html;
-import android.text.Spanned;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.Gravity;
@@ -26,7 +23,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
-import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
@@ -177,7 +173,7 @@ public class DownloadDialog {
gameName = game.getName();
gameIcon = game.getIcon();
- gameId = game.getIcon();
+ gameId = game.getId();
if (game.getTag() == null || game.getTag().isEmpty()) {
gameType = "normal";
} else {
@@ -354,7 +350,7 @@ public class DownloadDialog {
}
private ArrayList sortApk(String gameId, List apkList) {
- DownloadEntry downloadEntry = null;
+ DownloadEntry downloadEntry;
ArrayList list = new ArrayList();
List installedList = new ArrayList();
List doneList = new ArrayList();
@@ -513,35 +509,9 @@ public class DownloadDialog {
// 显示插件化
private void showPluginDialog(final ApkEntity apkEntity,
final RecyclerViewAdapter adapter, final int location) {
- final Dialog dialog = new Dialog(context);
- View view = View.inflate(context,
- R.layout.search_history_delete_dialog, null);
- TextView title = (TextView) view.findViewById(R.id.delete_dialog_title);
- title.setText("插件化安装");
- TextView content = (TextView) view
- .findViewById(R.id.delete_dialog_message);
- Spanned spanned = Html.fromHtml("您将进行插件化安装以实现插件功能,此过程将"
- + "卸载" + "当前使用的版本并"
- + "安装插件版本" + "。");
- content.setText(spanned);
-
- TextView cancel = (TextView) view
- .findViewById(R.id.delete_dialog_cancel);
- cancel.setText("取消");
- cancel.setOnClickListener(new OnClickListener() {
+ DialogUtils.showPluginDialog(context, new DialogUtils.ConfiremListener() {
@Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- TextView confirm = (TextView) view
- .findViewById(R.id.delete_dialog_confirm);
- confirm.setText("确定");
- confirm.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
-
+ public void onConfirem() {
Map kv6 = new HashMap();
kv6.put("操作", "点击插件化安装完成");
DataUtils.onEvent(context, "插件化", gameName, kv6);
@@ -557,11 +527,7 @@ public class DownloadDialog {
context.startActivity(PackageUtils.getUninstallIntent(context, path));
}
}
- });
-
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- dialog.show();
+ }, null);
}
private class RecyclerViewAdapter extends
@@ -820,8 +786,7 @@ public class DownloadDialog {
HashMap meta = new HashMap();
meta.put("ETag", apkEntity.getEtag());
meta.put("icon", gameIcon);
- meta.put(
- "platform", apkEntity.getPlatform());
+ meta.put("platform", apkEntity.getPlatform());
meta.put("gameId", gameId);
meta.put("entrance", entrance);
meta.put("location", mlocation);
diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
index 65e15552c8..40ee569af9 100644
--- a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
@@ -1,7 +1,5 @@
package com.gh.gamecenter;
-import android.app.Dialog;
-import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -11,14 +9,11 @@ import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.util.ArrayMap;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.text.Html;
-import android.text.Spanned;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
-import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
@@ -420,14 +415,33 @@ public class GameDetailsActivity extends BaseFragmentActivity implements
top_tv_attention
.setBackgroundResource(R.drawable.border_red_bg);
top_tv_attention.setTextColor(0xffbc2132);
- showSuccessDialog();
+
+ DialogUtils.showSuccessDialog(this);
} else {
Map kv2 = new HashMap();
kv2.put("点击", "取消关注");
- DataUtils.onEvent(GameDetailsActivity.this, "插件数据",
- entity.getName(), kv2);
+ DataUtils.onEvent(GameDetailsActivity.this, "插件数据", entity.getName(), kv2);
- showCancelDialog();
+ 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(0xffffffff);
+ }
+ });
}
break;
case R.id.gamedetails_tv_download:
@@ -624,108 +638,10 @@ public class GameDetailsActivity extends BaseFragmentActivity implements
}
}
- private void showSuccessDialog() {
- final Dialog dialog = new Dialog(this);
- View view = View.inflate(this, R.layout.gamedetails_attention_dialog,
- null);
- TextView title = (TextView) view.findViewById(R.id.dialog_title);
- title.setText("关注成功");
- TextView confirm = (TextView) view.findViewById(R.id.dialog_confirm);
- confirm.setText("我知道了");
- confirm.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- TextView message = (TextView) view.findViewById(R.id.dialog_message);
- message.setText("游戏的最新动态消息会优先提醒您,包括攻略、资讯、开服信息、开测信息以及最新的插件。");
- view.findViewById(R.id.dialog_rl_cancel).setVisibility(View.GONE);
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- dialog.show();
- }
-
- private void showCancelDialog() {
- final Dialog dialog = new Dialog(this);
- View view = View.inflate(this, R.layout.gamedetails_attention_dialog,
- null);
- TextView title = (TextView) view.findViewById(R.id.dialog_title);
- title.setText("取消关注");
- TextView cancel = (TextView) view.findViewById(R.id.dialog_cancel);
- cancel.setText("取消");
- cancel.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- TextView message = (TextView) view.findViewById(R.id.dialog_message);
-
- Spanned content = Html
- .fromHtml("取消关注游戏后,您将无法及时收到游戏的攻略、资讯等最新动态提醒,您确定取消吗?");
- message.setText(content);
-
- view.findViewById(R.id.dialog_rl_confirm).setVisibility(View.VISIBLE);
- view.findViewById(R.id.dialog_confirm).setOnClickListener(
- new OnClickListener() {
- @Override
- public void onClick(View v) {
-
- 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());
- dialog.dismiss();
- top_tv_attention.setText("关注");
- top_tv_attention
- .setBackgroundResource(R.drawable.textview_red_style);
- top_tv_attention.setTextColor(0xffffffff);
- }
- });
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- dialog.show();
- }
-
private void showPluginDialog(final String path, final String gameName) {
- final Dialog dialog = new Dialog(this);
- View view = View.inflate(this, R.layout.search_history_delete_dialog,
- null);
- TextView title = (TextView) view.findViewById(R.id.delete_dialog_title);
- title.setText("插件化安装");
- TextView content = (TextView) view
- .findViewById(R.id.delete_dialog_message);
- Spanned spanned = Html.fromHtml("您将进行插件化安装以实现插件功能,此过程将"
- + "卸载" + "当前使用的版本并"
- + "安装插件版本" + "。");
- content.setText(spanned);
-
- TextView cancel = (TextView) view
- .findViewById(R.id.delete_dialog_cancel);
- cancel.setText("取消");
- cancel.setOnClickListener(new OnClickListener() {
+ DialogUtils.showPluginDialog(this, new DialogUtils.ConfiremListener() {
@Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- TextView confirm = (TextView) view
- .findViewById(R.id.delete_dialog_confirm);
- confirm.setText("确定");
- confirm.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
+ public void onConfirem() {
Map kv6 = new HashMap();
kv6.put("操作", "一次性完成");
DataUtils.onEvent(GameDetailsActivity.this, "插件化", gameName, kv6);
@@ -736,18 +652,12 @@ public class GameDetailsActivity extends BaseFragmentActivity implements
startActivity(PackageUtils.getUninstallIntent(getApplicationContext(), path));
}
}
- });
-
- dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ }, new DialogUtils.DismissListener() {
@Override
- public void onDismiss(DialogInterface dialog) {
+ public void onDismiss() {
isShowPluginDialog = false;
}
});
-
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- dialog.show();
}
@Override
diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java
index f3cf1ed3a2..cbf29614cd 100644
--- a/app/src/main/java/com/gh/gamecenter/MainActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java
@@ -34,6 +34,7 @@ import com.gh.base.AppController;
import com.gh.base.BaseFragmentActivity;
import com.gh.common.constant.Config;
import com.gh.common.util.DataUtils;
+import com.gh.common.util.DialogUtils;
import com.gh.common.util.FileUtils;
import com.gh.common.util.MD5Utils;
import com.gh.common.util.NetworkUtils;
@@ -69,6 +70,7 @@ import com.gh.gamecenter.news.NewsFragment;
import com.gh.gamecenter.personal.PersonalFragment;
import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
+import com.gh.gamecenter.volley.extended.StringExtendedRequest;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@@ -121,7 +123,6 @@ public class MainActivity extends BaseFragmentActivity implements
private int currentTab;
- private boolean isFirst;
private boolean isDestroy = false;
private boolean isShowDownload = false;
@@ -406,8 +407,6 @@ public class MainActivity extends BaseFragmentActivity implements
doneMap = new ArrayMap();
uninstallMap = new ArrayMap();
- isFirst = true;
-
getSearchHints();
sp = getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE);
@@ -532,7 +531,7 @@ public class MainActivity extends BaseFragmentActivity implements
sp.edit().putString("disclaimer", content)
.apply();
if (isFirst) {
- showDisclaimerDialog(content);
+ DialogUtils.showDisclaimerDialog(MainActivity.this, content);
}
}
} catch (JSONException e) {
@@ -553,30 +552,6 @@ public class MainActivity extends BaseFragmentActivity implements
AppController.addToRequestQueue(request, MainActivity.class);
}
- // 弹出免责声明的窗口
- private void showDisclaimerDialog(String content) {
- final Dialog disclaimerDialog = new Dialog(this);
- View view = View
- .inflate(this, R.layout.setting_disclaimer_dialog, null);
- TextView title = (TextView) view
- .findViewById(R.id.disclaimer_dialog_title);
- title.setText("免责声明");
- TextView message = (TextView) view
- .findViewById(R.id.disclaimer_dialog_message);
- Spanned spanned = Html.fromHtml(content);
- message.setText(spanned);
- view.findViewById(R.id.disclaimer_dialog_confirm).setOnClickListener(
- new OnClickListener() {
- @Override
- public void onClick(View v) {
- disclaimerDialog.dismiss();
- }
- });
- disclaimerDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- disclaimerDialog.setContentView(view);
- disclaimerDialog.show();
- }
-
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -952,9 +927,6 @@ public class MainActivity extends BaseFragmentActivity implements
break;
case R.id.home2_layout:
EventBus.getDefault().post(new EBUISwitch("MainActivity", 1));
- if (isFirst) {
- isFirst = false;
- }
setTabSelection(1);
break;
case R.id.home3_layout:
@@ -1099,12 +1071,15 @@ public class MainActivity extends BaseFragmentActivity implements
jsonObject.toString(), new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
-
+ Utils.log("download = " + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
-
+ Utils.log("download = " + error);
+ if (error.networkResponse != null) {
+ Utils.log("download = " + new String(error.networkResponse.data));
+ }
}
});
AppController.addToRequestQueue(request, MainActivity.class);
diff --git a/app/src/main/java/com/gh/gamecenter/PluginActivity.java b/app/src/main/java/com/gh/gamecenter/PluginActivity.java
new file mode 100644
index 0000000000..39ff1a2456
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/PluginActivity.java
@@ -0,0 +1,202 @@
+package com.gh.gamecenter;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
+import com.gh.base.AppController;
+import com.gh.base.BaseActivity;
+import com.gh.common.constant.Constants;
+import com.gh.common.util.DownloadItemUtils;
+import com.gh.common.util.PlatformUtils;
+import com.gh.common.view.VerticalItemDecoration;
+import com.gh.download.DataWatcher;
+import com.gh.download.DownloadEntry;
+import com.gh.download.DownloadManager;
+import com.gh.gamecenter.adapter.PluginAdapter;
+import com.gh.gamecenter.adapter.SubjectAdapter;
+import com.gh.gamecenter.entity.GameEntity;
+import com.gh.gamecenter.entity.SubjectEntity;
+import com.gh.gamecenter.eventbus.EBNetworkState;
+import com.gh.gamecenter.eventbus.EBPWDismiss;
+import com.gh.gamecenter.eventbus.EBPackage;
+import com.gh.gamecenter.game.Game1Fragment;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ * Created by LGT on 2016/7/6.
+ */
+public class PluginActivity extends BaseActivity {
+
+ private RecyclerView plugin_list;
+ private PluginAdapter adapter;
+ private ProgressBarCircularIndeterminate plugin_pb_loading;
+ private LinearLayout reuse_no_connection;
+
+ private boolean isEverpause = false;
+ private boolean isDestroy = false;
+
+ 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 (adapter != null) {
+ LinkedBlockingQueue queue = adapter.getPlatformMap().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 DataWatcher dataWatcher = new DataWatcher() {
+ @Override
+ public void onDataChanged(
+ HashMap downloadingEntries) {
+ for (java.util.Map.Entry entry : downloadingEntries
+ .entrySet()) {
+ DownloadEntry downloadEntry = entry.getValue();
+
+ //特殊 插件化update
+ if (downloadEntry.getMeta().get("PluginPlatform") != null) {
+ Integer location = adapter.getLocationMap().get(
+ downloadEntry.getName() + " - " + downloadEntry.getMeta().get("PluginPlatform"));
+ if (location != null) {
+ int index = location;
+ GameEntity detailedEntity = getEntityByLocation(index);
+
+ if (detailedEntity != null) {
+ DownloadItemUtils.processDate(detailedEntity,
+ downloadEntry, adapter.getPlatformMap(), handler, adapter, index, adapter.getStatusMap());
+ }
+ }
+ }
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ View contentView = View.inflate(this, R.layout.activity_plugin, null);
+
+ init(contentView, "插件化");
+
+ reuse_no_connection.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ plugin_pb_loading.setVisibility(View.VISIBLE);
+ plugin_list.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ adapter = new PluginAdapter(PluginActivity.this, plugin_list,
+ plugin_pb_loading, reuse_no_connection);
+ plugin_list.setAdapter(adapter);
+ }
+ });
+
+ plugin_list.setHasFixedSize(true);
+ plugin_list.setLayoutManager(new LinearLayoutManager(this));
+ adapter = new PluginAdapter(this, plugin_list, plugin_pb_loading, reuse_no_connection);
+ plugin_list.setAdapter(adapter);
+ plugin_list.addItemDecoration(new VerticalItemDecoration(this, 1));
+
+ }
+
+ public void onEventMainThread(EBPWDismiss dismiss) {
+ if (adapter != null) {
+ adapter.getDismissEntity().setShow(false);
+ }
+ }
+
+ //连接上网络事件
+ public void onEventMainThread(EBNetworkState busNetworkState) {
+ if (busNetworkState.isNetworkConnected()) {
+ if (reuse_no_connection.getVisibility() == View.VISIBLE) {
+ plugin_list.setVisibility(View.VISIBLE);
+ plugin_pb_loading.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ adapter = new PluginAdapter(this, plugin_list, plugin_pb_loading, reuse_no_connection);
+ plugin_list.setAdapter(adapter);
+ }
+ }
+ }
+
+ //安装、卸载事件
+ public void onEventMainThread(EBPackage busFour) {
+ //特殊 插件化
+ String name = adapter.getNameMap().get(busFour.getPackageName());
+ if (name != null) {
+ Integer location = adapter.getLocationMap().get(name);
+ if (location != null) {
+ if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) {
+ List list = adapter.getPluginList();
+ for (int i = 0, size = list.size(); i < size; i++) {
+ if (list.get(i).getApk().get(0).getPackageName()
+ .equals(busFour.getPackageName())) {
+ list.remove(i);
+ adapter.notifyItemRemoved(location);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private GameEntity getEntityByLocation(int position) {
+ return adapter.getPluginList().get(position);
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ isEverpause = true;
+ adapter.getStatusMap().clear();
+ DownloadManager.getInstance(this).removeObserver(dataWatcher);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (isEverpause) {
+ //修改游戏下载状态
+ DownloadItemUtils.initializeGameMap(this, adapter.getGameMap());
+ for (GameEntity entity : adapter.getPluginList()) {
+ entity.setEntryMap(adapter.getGameMap().get(entity.getName()));
+ }
+ adapter.notifyDataSetChanged();
+ }
+ isEverpause = false;
+ DownloadManager.getInstance(this).addObserver(dataWatcher);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ isDestroy = true;
+ AppController.canclePendingRequests(PluginActivity.class);
+ plugin_list = null;
+ adapter = null;
+ plugin_pb_loading = null;
+ reuse_no_connection = null;
+ handler = null;
+ dataWatcher = null;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java
index b84d53a887..54c165e4c9 100644
--- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java
@@ -243,7 +243,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener {
case R.id.setting_tv_disclaimer:
String content = sp.getString("disclaimer", null);
if (!TextUtils.isEmpty(content)) {
- showDisclaimerDialog(content);
+ DialogUtils.showDisclaimerDialog(this, content);
}
break;
case R.id.setting_rl_font_size:
@@ -349,30 +349,6 @@ public class SettingActivity extends BaseActivity implements OnClickListener {
}
}
- // 弹出免责声明的窗口
- private void showDisclaimerDialog(String content) {
- final Dialog disclaimerDialog = new Dialog(this);
- View view = View
- .inflate(this, R.layout.setting_disclaimer_dialog, null);
- TextView title = (TextView) view
- .findViewById(R.id.disclaimer_dialog_title);
- title.setText("免责声明");
- TextView message = (TextView) view
- .findViewById(R.id.disclaimer_dialog_message);
- Spanned spanned = Html.fromHtml(content);
- message.setText(spanned);
- view.findViewById(R.id.disclaimer_dialog_confirm).setOnClickListener(
- new OnClickListener() {
- @Override
- public void onClick(View v) {
- disclaimerDialog.dismiss();
- }
- });
- disclaimerDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- disclaimerDialog.setContentView(view);
- disclaimerDialog.show();
- }
-
private void checkUpdate() {
String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(this,
getPackageName(), "TD_CHANNEL_ID");
@@ -418,7 +394,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener {
showUpdateDialog(updateMD5);
} else {
- showCancelDialog();
+ toast("已是最新版本");
}
}
@@ -572,39 +548,6 @@ public class SettingActivity extends BaseActivity implements OnClickListener {
DownloadManager.getInstance(getApplicationContext()).add(downloadEntry);
}
- private void showCancelDialog() {
-
- final Dialog dialog = new Dialog(SettingActivity.this);
- View view = View.inflate(SettingActivity.this,
- R.layout.search_history_delete_dialog, null);
- TextView title = (TextView) view.findViewById(R.id.delete_dialog_title);
- title.setText("更新提示");
- TextView content = (TextView) view
- .findViewById(R.id.delete_dialog_message);
-
- content.setText("已经是最新版本!");
-
- view.findViewById(R.id.delete_dialog_rl_cancel)
- .setVisibility(View.GONE);
- view.findViewById(R.id.delete_dialog_rl_confirm).setVisibility(
- View.VISIBLE);
-
- TextView cancel = (TextView) view
- .findViewById(R.id.delete_dialog_confirm);
-
- cancel.setVisibility(View.VISIBLE);
- cancel.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
-
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- dialog.show();
- }
-
@Override
public void onResume() {
super.onResume();
diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java
index 187abbb262..1224ef78b8 100644
--- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java
@@ -576,11 +576,14 @@ public class SplashScreenActivity extends BaseActivity {
List list = gameEntity.getApk();
HashMap packageNames = new HashMap();
for (int j = 0, sizej = list.size(); j < sizej; j++) {
- packageNames.put(
- list.get(j).getPackageName(), false);
+ packageNames.put(list.get(j).getPackageName(), false);
}
entity.setTime(System.currentTimeMillis());
entity.setPackageNames(packageNames);
+ //默认安装即为关注
+ if (!concernManager.isConcern(entity.getId())) {
+ concernManager.addByEntity(gameEntity);
+ }
concernManager.updateByConcern(entity);
}
if (cCount == count) {
diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java
index 15d08c1022..07099ab958 100644
--- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java
@@ -3,74 +3,51 @@ package com.gh.gamecenter;
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;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
-import com.android.volley.NoConnectionError;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
+import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
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.DownloadItemUtils;
-import com.gh.common.util.TimestampUtils;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntry;
import com.gh.download.DownloadManager;
-import com.gh.gamecenter.adapter.HotCardAdapter;
-import com.gh.gamecenter.db.info.GameInfo;
+import com.gh.gamecenter.adapter.SubjectAdapter;
import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.DismissEntity;
import com.gh.gamecenter.entity.GameEntity;
+import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPWDismiss;
import com.gh.gamecenter.eventbus.EBPackage;
-import com.gh.gamecenter.manager.GameManager;
-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.concurrent.LinkedBlockingQueue;
public class SubjectActivity extends BaseActivity {
- private RecyclerView hotcard_list;
- private HotCardAdapter adapter;
- private LinearLayout hotcard_ll_loading;
+ private RecyclerView subject_list;
+ private SubjectAdapter adapter;
+ private ProgressBarCircularIndeterminate subject_pb_loading;
+ private LinearLayout reuse_no_connection;
- // 黄壮华 添加 记录信息的map 修改2015/8/15
- private ArrayMap locationMap;
- private ArrayMap> gameMap;
- private ArrayMap> platformMap;
- private ArrayMap nameMap;
+ private String id;
private boolean isEverpause = false;
private boolean isDestroy = false;
- private ArrayMap statusMap;
-
- private DismissEntity dismissEntity;
-
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 (adapter != null) {
+ LinkedBlockingQueue queue = adapter.getPlatformMap().get(name);
if (queue.size() > 1) {
queue.offer(queue.poll());
Message msg2 = Message.obtain();
@@ -86,7 +63,6 @@ public class SubjectActivity extends BaseActivity {
// 黄壮华 添加观察者 修改2015/8/15
private DataWatcher dataWatcher = new DataWatcher() {
-
@Override
public void onDataChanged(
HashMap downloadingEntries) {
@@ -94,16 +70,16 @@ public class SubjectActivity extends BaseActivity {
.entrySet()) {
DownloadEntry downloadEntry = entry.getValue();
- Integer location = locationMap.get(downloadEntry.getName());
+ Integer location = adapter.getLocationMap().get(downloadEntry.getName());
if (location != null) {
- int index = location.intValue();
+ int index = location;
GameEntity detailedEntity = adapter.getList().get(index);
if (detailedEntity != null) {
DownloadItemUtils.processDate(detailedEntity,
- downloadEntry, platformMap, handler, adapter,
- index, statusMap);
+ downloadEntry, adapter.getPlatformMap(), handler, adapter,
+ index, adapter.getStatusMap());
}
}
@@ -113,108 +89,48 @@ public class SubjectActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
- String id = getIntent().getStringExtra("id");
+ id = getIntent().getStringExtra("id");
String name = getIntent().getStringExtra("name");
if (TextUtils.isEmpty(name)) {
name = "";
}
- View contentView = View.inflate(this, R.layout.activity_hotcard, null);
+ View contentView = View.inflate(this, R.layout.activity_subject, null);
init(contentView, name);
- dismissEntity = new DismissEntity(false);
-
- statusMap = new ArrayMap();
- locationMap = new ArrayMap();
- gameMap = new ArrayMap>();
- platformMap = new ArrayMap>();
- nameMap = new ArrayMap();
-
- hotcard_list.setHasFixedSize(true);
- hotcard_list.setLayoutManager(new LinearLayoutManager(this));
-
- // 黄壮华 添加 初始化游戏状态 修改2015/8/21
- DownloadItemUtils.initializeGameMap(this, gameMap);
-
- // 黄壮华 传递引用 修改2015/8/15
- adapter = new HotCardAdapter(this, platformMap, statusMap, dismissEntity);
- hotcard_list.setAdapter(adapter);
- hotcard_list.addItemDecoration(new VerticalItemDecoration(this, 1));
-
- addList(id);
-
- }
-
- private void addList(String id) {
- JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
- TimestampUtils.addTimestamp(Config.HOST
- + "v1d50/game/column/" + id, Constants.GAME_CD),
- new Response.Listener() {
-
- @Override
- public void onResponse(JSONArray response) {
- processingData(response);
- }
-
- }, new Response.ErrorListener() {
-
- @Override
- public void onErrorResponse(VolleyError error) {
- // 无网络连接
- if (error.getClass().equals(NoConnectionError.class)) {
-
- }
- }
-
- });
- AppController.addToRequestQueue(request, SubjectActivity.class);
- }
-
- private void processingData(JSONArray response) {
- Type listType = new TypeToken>() {}.getType();
- Gson gson = new Gson();
- GameManager manager = new GameManager(getApplicationContext());
- List gameList = gson.fromJson(response.toString(), listType);
- if (gameList != null && !gameList.isEmpty()) {
- for (GameEntity entity : gameList) {
- // 黄壮华 初始化游戏状态 修改2015/8/15
- entity.setEntryMap(gameMap.get(entity.getName()));
- for (ApkEntity apkEntity : entity.getApk()) {
- manager.addOrUpdate(new GameInfo(apkEntity.getPackageName(),
- entity.getId(), entity.getName()));
- }
+ reuse_no_connection.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ subject_pb_loading.setVisibility(View.VISIBLE);
+ subject_list.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ adapter = new SubjectAdapter(SubjectActivity.this, subject_list,
+ subject_pb_loading, reuse_no_connection, id);
+ subject_list.setAdapter(adapter);
}
- adapter.getList().addAll(gameList);
- adapter.notifyItemRangeInserted(adapter.getList().size() - gameList.size(), gameList.size());
- }
+ });
- // 黄壮华 获取游戏位置信息 修改2015/8/15
- for (int i = 0, size = adapter.getList().size(); i < size; i++) {
- GameEntity entity = adapter.getList().get(i);
- locationMap.put(entity.getName(), i);
- for (ApkEntity apkEntity : entity.getApk()) {
- nameMap.put(apkEntity.getPackageName(), entity.getName());
- }
- }
+ subject_list.setHasFixedSize(true);
+ subject_list.setLayoutManager(new LinearLayoutManager(this));
+ adapter = new SubjectAdapter(this, subject_list, subject_pb_loading, reuse_no_connection, id);
+ subject_list.setAdapter(adapter);
+ subject_list.addItemDecoration(new VerticalItemDecoration(this, 1));
- hotcard_list.setVisibility(View.VISIBLE);
- hotcard_ll_loading.setVisibility(View.GONE);
}
public void onEventMainThread(EBPWDismiss dismiss) {
- if (dismissEntity != null) {
- dismissEntity.setShow(false);
+ if (adapter != null) {
+ adapter.getDismissEntity().setShow(false);
}
}
public void onEventMainThread(EBPackage busFour) {
- String name = nameMap.get(busFour.getPackageName());
+ String name = adapter.getNameMap().get(busFour.getPackageName());
if (name != null) {
- int location = locationMap.get(name);
+ int location = adapter.getLocationMap().get(name);
if ("安装".equals(busFour.getType())) {
GameEntity entity = adapter.getList().get(location);
for (ApkEntity apkEntity : entity.getApk()) {
@@ -231,18 +147,29 @@ public class SubjectActivity extends BaseActivity {
}
}
+ //连接上网络事件
+ public void onEventMainThread(EBNetworkState busNetworkState) {
+ if (busNetworkState.isNetworkConnected()) {
+ if (reuse_no_connection.getVisibility() == View.VISIBLE) {
+ subject_list.setVisibility(View.VISIBLE);
+ subject_pb_loading.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ adapter = new SubjectAdapter(SubjectActivity.this, subject_list,
+ subject_pb_loading, reuse_no_connection, id);
+ subject_list.setAdapter(adapter);
+ }
+ }
+ }
+
@Override
public void onResume() {
super.onResume();
if (isEverpause) {
// 黄壮华 添加 初始化游戏状态 修改2015/8/21
- DownloadItemUtils.initializeGameMap(this, gameMap);
- List entities = new ArrayList();
+ DownloadItemUtils.initializeGameMap(this, adapter.getGameMap());
for (GameEntity entity : adapter.getList()) {
- entity.setEntryMap(gameMap.get(entity.getName()));
- entities.add(entity);
+ entity.setEntryMap(adapter.getGameMap().get(entity.getName()));
}
- adapter.setList(entities);
}
isEverpause = false;
DownloadManager.getInstance(getApplicationContext()).addObserver(dataWatcher);
@@ -252,7 +179,7 @@ public class SubjectActivity extends BaseActivity {
public void onPause() {
super.onPause();
isEverpause = true;
- statusMap.clear();
+ adapter.getStatusMap().clear();
DownloadManager.getInstance(getApplicationContext()).removeObserver(dataWatcher);
}
@@ -261,15 +188,10 @@ public class SubjectActivity extends BaseActivity {
super.onDestroy();
isDestroy = true;
AppController.canclePendingRequests(SubjectActivity.class);
- hotcard_list = null;
+ subject_list = null;
adapter = null;
- hotcard_ll_loading = null;
- locationMap = null;
- gameMap = null;
- platformMap = null;
- nameMap = null;
- statusMap = null;
- dismissEntity = null;
+ subject_pb_loading = null;
+ reuse_no_connection = null;
handler = null;
dataWatcher = null;
}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java
deleted file mode 100644
index e96c768730..0000000000
--- a/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java
+++ /dev/null
@@ -1,224 +0,0 @@
-package com.gh.gamecenter.adapter;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.v4.util.ArrayMap;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.gh.base.AppController;
-import com.gh.common.util.DataUtils;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.util.GameViewUtils;
-import com.gh.common.util.ImageUtils;
-import com.gh.gamecenter.GameDetailsActivity;
-import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
-import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
-import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
-import com.gh.gamecenter.entity.DismissEntity;
-import com.gh.gamecenter.entity.GameEntity;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/**
- *
- * @author 温冠超
- * @email 294299195@qq.com
- * @date 2015-8-8
- * @update 2015-8-11
- * @des 首页插件fragment适配器
- */
-public class HotCardAdapter extends
- RecyclerView.Adapter {
-
- private Context context;
-
- private List list;
-
- // 黄壮华 获取引用 修改2015/8/15
- private ArrayMap> platformMap;
-
- private ArrayMap statusMap;
-
- private DismissEntity dismissEntity;
-
- // 黄壮华 获取引用 修改2015/8/15
- public HotCardAdapter(Context context,
- ArrayMap> pMap,
- ArrayMap sMap, DismissEntity dEntity) {
-
- // 黄壮华 获取引用 修改2015/8/15
- platformMap = pMap;
- statusMap = sMap;
- dismissEntity = dEntity;
-
- this.context = context;
-
- list = new ArrayList();
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- notifyDataSetChanged();
- }
-
- @Override
- public int getItemCount() {
- return list.size();
- }
-
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder viewHolder,
- int position) {
- if (position != list.size()) {
-
- if (viewHolder instanceof GameNormalViewHolder) {
- GameNormalViewHolder holder = (GameNormalViewHolder) viewHolder;
-
- final GameEntity entity = list.get(position);
-
- ImageUtils.getInstance(context).display(entity.getIcon(),
- holder.gameThumb);
- holder.gameNameAndSize.setText(entity.getName());
- if (entity.getApk() == null || entity.getApk().isEmpty()) {
- holder.gameDes.setText(entity.getBrief());
- } else {
- holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
- }
-
- GameViewUtils.setLabelList(context, holder.labelList, entity.getTag());
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Map kv = new HashMap();
- kv.put("入口", "热门卡牌");
- DataUtils.onEvent(context, "游戏详情", entity.getName(), kv);
-
- AppController.put("GameEntity", entity);
- Intent intent = new Intent(context, GameDetailsActivity.class);
- intent.putExtra("entrance", "热门卡牌");
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
- }
- });
-
- DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
- holder.download_speed, holder.download_percentage,
- entity, position, this,
- statusMap, platformMap, "热门卡牌", dismissEntity, "hotcard:" + entity.getName());
-
- DownloadItemUtils.updateItem(context, holder.labelList,
- holder.game_progressbar, holder.game_ll_info,
- holder.download_speed, holder.download_percentage,
- holder.downloadBtn, entity, platformMap, statusMap);
- } else if (viewHolder instanceof GameTestViewHolder) {
- GameTestViewHolder holder = (GameTestViewHolder) viewHolder;
-
- final GameEntity entity = list.get(position);
-
- ImageUtils.getInstance(context).display(entity.getIcon(),
- holder.gameThumb);
- holder.gameNameAndSize.setText(entity.getName());
- if (entity.getApk() == null || entity.getApk().isEmpty()) {
- holder.gameDes.setText(entity.getBrief());
- } else {
- holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
- }
- holder.gameTestType.setText(entity.getTest().getType());
- if (entity.getTest().getStart() == 0) {
- holder.gameTestTime.setVisibility(View.GONE);
- } else {
- holder.gameTestTime.setText(GameViewUtils.getGameTestDate(entity.getTest().getStart()));
- }
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppController.put("GameEntity", entity);
- Intent intent = new Intent(context,
- GameDetailsActivity.class);
- intent.putExtra("entrance", "主页-新测卡牌");
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
- }
- });
-
- if (entity.getApk() == null || entity.getApk().isEmpty()) {
- holder.downloadBtn.setVisibility(View.GONE);
- } else {
- if (entity.getTest().getEnd() == 0) {
- holder.downloadBtn.setVisibility(View.VISIBLE);
- DownloadItemUtils.setOnClickListener(context,
- holder.downloadBtn, holder.download_speed,
- holder.download_percentage, entity, position,
- HotCardAdapter.this,
- statusMap, platformMap, "主页-新测卡牌",
- dismissEntity, "主页:" + entity.getName());
- } else {
- long endTime = Long.valueOf(entity.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, entity, position,
- HotCardAdapter.this, statusMap, platformMap,
- "主页-新测卡牌", dismissEntity,
- "主页:" + entity.getName());
- }
- }
- }
-
- DownloadItemUtils.updateItem(context, holder.labelList,
- holder.game_progressbar, holder.game_ll_info, holder.download_speed,
- holder.download_percentage, holder.downloadBtn, entity, platformMap,
- statusMap);
- }
-
- }
- }
-
- @Override
- public int getItemViewType(int position) {
- return position;
- }
-
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
- if (i != list.size()) {
- if (list.get(i).getTest() != null) {
- View view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.home_game_test_item, viewGroup, false);
- return new GameTestViewHolder(view);
- } else {
- View view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.home_game_normal_item, viewGroup, false);
- return new GameNormalViewHolder(view);
- }
- } else {
- View view = LayoutInflater.from(viewGroup.getContext()).inflate(
- R.layout.refresh_footerview, viewGroup, false);
- return new FooterViewHolder(view);
- }
- }
-
-}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java
new file mode 100644
index 0000000000..303202c340
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java
@@ -0,0 +1,290 @@
+package com.gh.gamecenter.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v4.util.ArrayMap;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+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.DownloadItemUtils;
+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.download.DownloadEntry;
+import com.gh.gamecenter.GameDetailsActivity;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
+import com.gh.gamecenter.db.info.ConcernInfo;
+import com.gh.gamecenter.db.info.GameInfo;
+import com.gh.gamecenter.entity.ApkEntity;
+import com.gh.gamecenter.entity.DismissEntity;
+import com.gh.gamecenter.entity.GameEntity;
+import com.gh.gamecenter.game.GameFragment;
+import com.gh.gamecenter.manager.ConcernManager;
+import com.gh.gamecenter.manager.GameManager;
+import com.gh.gamecenter.manager.PackageManager;
+import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
+import com.google.gson.Gson;
+
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ * Created by LGT on 2016/7/6.
+ */
+public class PluginAdapter extends RecyclerView.Adapter {
+
+ private Context context;
+
+ private RecyclerView plugin_list;
+ private ProgressBarCircularIndeterminate plugin_pb_loading;
+ private LinearLayout reuse_no_connection;
+
+ private List pluginList;
+
+ private ArrayMap locationMap;
+ private ArrayMap> platformMap;
+ private ArrayMap> gameMap;
+ private ArrayMap nameMap;
+ private ArrayMap statusMap;
+ private DismissEntity dismissEntity;
+
+ public PluginAdapter(Context context,
+ RecyclerView recyclerView,
+ ProgressBarCircularIndeterminate pbLoading,
+ LinearLayout linearLayout) {
+
+ this.context = context;
+ plugin_list = recyclerView;
+ plugin_pb_loading = pbLoading;
+ reuse_no_connection = linearLayout;
+
+ pluginList = new ArrayList();
+
+ locationMap = new ArrayMap();
+ platformMap = new ArrayMap>();
+ gameMap = new ArrayMap>();
+ nameMap = new ArrayMap();
+ statusMap = new ArrayMap();
+ dismissEntity = new DismissEntity(false);
+
+ // 黄壮华 添加 初始化游戏状态 修改2015/8/21
+ DownloadItemUtils.initializeGameMap(context, gameMap);
+
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ init();
+ }
+ }).start();
+ }
+
+ private int count;
+
+ //检查可以插件化的游戏
+ private void init() {
+ ConcernManager concernManager = new ConcernManager(context);
+ List infos = concernManager.getInstalledGame();
+ final int size = infos.size();
+ final List list = new ArrayList();
+ count = 0;
+ for (ConcernInfo info : infos) {
+ JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(
+ TimestampUtils.addTimestamp(Config.HOST + "v1d45/game/" + info.getId() + "/digest", Constants.GAME_CD),
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONObject response) {
+ Gson gson = new Gson();
+ GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class);
+ list.add(gameEntity);
+ count++;
+ if (count == size) {
+ processingData(list);
+ }
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ count++;
+ if (count == size) {
+ if (list.isEmpty()) {
+ plugin_list.setVisibility(View.GONE);
+ plugin_pb_loading.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.VISIBLE);
+ } else {
+ processingData(list);
+ }
+ }
+ }
+ });
+ AppController.addToRequestQueue(request, GameFragment.class);
+ }
+ }
+
+ private void processingData(List list) {
+ if (plugin_pb_loading != null && plugin_pb_loading.getVisibility() == View.VISIBLE) {
+ plugin_pb_loading.setVisibility(View.GONE);
+ }
+ if (list == null || list.isEmpty()) {
+ return;
+ }
+ ConcernManager concernManager = new ConcernManager(context);
+ PackageManager mPackageManager = new PackageManager(context);
+ List infos = concernManager.getInstalledGame();
+ HashMap map;
+ GameEntity gameEntity;
+ for (ConcernInfo info : infos) {
+ map = info.getPackageNames();
+ for (int i = 0, size = list.size(); i < size; i++) {
+ gameEntity = list.get(i);
+ if (gameEntity.getId().equals(info.getId())
+ && gameEntity.getTag() != null && gameEntity.getTag().size() != 0
+ && gameEntity.getApk() != null) {
+ for (String key : map.keySet()) {
+ if (map.get(key)) {
+ if (!mPackageManager.isSignature(key)) {
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ if (apkEntity.getPackageName().equals(key)) {
+ GameEntity entity = gameEntity.clone();
+ entity.setPluginPlatform(
+ PlatformUtils.getInstance(context).getPlatformName(apkEntity.getPlatform()));
+ ArrayList apkList = new ArrayList();
+ apkList.add(apkEntity);
+ entity.setApk(apkList);
+ pluginList.add(entity);
+ break;
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ if (!pluginList.isEmpty()) {
+ GameManager manager = new GameManager(context);
+ for (GameEntity gEntity : pluginList) {
+ gEntity.setEntryMap(gameMap.get(gEntity.getName()));
+ for (ApkEntity aEntity : gEntity.getApk()) {
+ manager.addOrUpdate(new GameInfo(aEntity.getPackageName(),
+ gEntity.getId(), gEntity.getName()));
+ }
+ }
+ notifyItemRangeInserted(0, pluginList.size());
+ initLocationMap();
+ }
+ }
+
+ private void initLocationMap() {
+ for (int i = 0; i < pluginList.size(); i++) {
+ GameEntity gameEntity = pluginList.get(i);
+ locationMap.put(gameEntity.getName() + " - " + gameEntity.getPluginPlatform(), i);
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ nameMap.put(apkEntity.getPackageName(), gameEntity.getName() + " - " + gameEntity.getPluginPlatform());
+ }
+ }
+ }
+
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.home_game_normal_item, parent, false);
+ return new GameNormalViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+ if (holder instanceof GameNormalViewHolder) {
+ GameNormalViewHolder viewHolder = (GameNormalViewHolder) holder;
+
+ final GameEntity entity = pluginList.get(position);
+
+ viewHolder.home1_game_order.setVisibility(View.GONE);
+
+ ImageUtils.getInstance(context).display(entity.getIcon(), viewHolder.gameThumb);
+ if (entity.getPluginPlatform() != null) {
+ viewHolder.gameNameAndSize.setText(entity.getName() + " - " + entity.getPluginPlatform());
+ } else {
+ viewHolder.gameNameAndSize.setText(entity.getName());
+ }
+ if (entity.getApk() == null || entity.getApk().isEmpty()) {
+ viewHolder.gameDes.setText(entity.getBrief());
+ } else {
+ viewHolder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
+ }
+ GameViewUtils.setLabelList(context, viewHolder.labelList, entity.getTag());
+
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("gameId", entity.getId());
+ intent.putExtra("entrance", "游戏-插件");
+ context.startActivity(intent);
+ }
+ });
+
+ final int i = position;
+
+ DownloadItemUtils.setOnClickListener(context, viewHolder.downloadBtn,
+ viewHolder.download_speed, viewHolder.download_percentage, entity, i,
+ PluginAdapter.this,
+ statusMap, platformMap, "游戏-插件",
+ dismissEntity, "主页:" + entity.getName());
+
+ DownloadItemUtils.updateItem(context, viewHolder.labelList,
+ viewHolder.game_progressbar, viewHolder.game_ll_info, viewHolder.download_speed,
+ viewHolder.download_percentage, viewHolder.downloadBtn, entity, platformMap,
+ statusMap);
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return pluginList.size();
+ }
+
+ public List getPluginList() {
+ return pluginList;
+ }
+
+ public ArrayMap getLocationMap() {
+ return locationMap;
+ }
+
+ public ArrayMap> getPlatformMap() {
+ return platformMap;
+ }
+
+ public ArrayMap> getGameMap() {
+ return gameMap;
+ }
+
+ public ArrayMap getNameMap() {
+ return nameMap;
+ }
+
+ public ArrayMap getStatusMap() {
+ return statusMap;
+ }
+
+ public DismissEntity getDismissEntity() {
+ return dismissEntity;
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java
new file mode 100644
index 0000000000..a79c4c2e7a
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java
@@ -0,0 +1,333 @@
+package com.gh.gamecenter.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v4.util.ArrayMap;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+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.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.DownloadItemUtils;
+import com.gh.common.util.GameViewUtils;
+import com.gh.common.util.ImageUtils;
+import com.gh.common.util.TimestampUtils;
+import com.gh.download.DownloadEntry;
+import com.gh.gamecenter.GameDetailsActivity;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.SubjectActivity;
+import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
+import com.gh.gamecenter.db.info.GameInfo;
+import com.gh.gamecenter.entity.ApkEntity;
+import com.gh.gamecenter.entity.DismissEntity;
+import com.gh.gamecenter.entity.GameEntity;
+import com.gh.gamecenter.manager.GameManager;
+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.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ *
+ * @author 温冠超
+ * @email 294299195@qq.com
+ * @date 2015-8-8
+ * @update 2015-8-11
+ * @des 首页插件fragment适配器
+ */
+public class SubjectAdapter extends RecyclerView.Adapter {
+
+ private Context context;
+
+ private RecyclerView subject_list;
+ private ProgressBarCircularIndeterminate subject_pb_loading;
+ private LinearLayout reuse_no_connection;
+
+ private List list;
+
+ // 黄壮华 获取引用 修改2015/8/15
+ private ArrayMap locationMap;
+ private ArrayMap> platformMap;
+ private ArrayMap> gameMap;
+ private ArrayMap nameMap;
+ private ArrayMap statusMap;
+
+ private DismissEntity dismissEntity;
+
+ public SubjectAdapter(Context context,
+ RecyclerView recyclerView,
+ ProgressBarCircularIndeterminate pbLoading,
+ LinearLayout linearLayout,
+ String id) {
+
+ this.context = context;
+ subject_list = recyclerView;
+ subject_pb_loading = pbLoading;
+ reuse_no_connection = linearLayout;
+
+ locationMap = new ArrayMap();
+ platformMap = new ArrayMap>();
+ gameMap = new ArrayMap>();
+ nameMap = new ArrayMap();
+ statusMap = new ArrayMap();
+ dismissEntity = new DismissEntity(false);
+
+ // 黄壮华 添加 初始化游戏状态 修改2015/8/21
+ DownloadItemUtils.initializeGameMap(context, gameMap);
+
+ list = new ArrayList();
+
+ initList(id);
+ }
+
+ private void initList(String id) {
+ JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
+ TimestampUtils.addTimestamp(Config.HOST
+ + "v1d50/game/column/" + id, Constants.GAME_CD),
+ new Response.Listener() {
+
+ @Override
+ public void onResponse(JSONArray response) {
+ processingData(response);
+ }
+
+ }, new Response.ErrorListener() {
+
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ // 无网络连接
+ if (error.getClass().equals(NoConnectionError.class)
+ || error.getClass().equals(TimeoutError.class)) {
+ if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
+ subject_pb_loading.setVisibility(View.GONE);
+ }
+ Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
+ subject_list.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.VISIBLE);
+ }
+ }
+
+ });
+ AppController.addToRequestQueue(request, SubjectActivity.class);
+ }
+
+ private void processingData(JSONArray response) {
+ Type listType = new TypeToken>() {}.getType();
+ Gson gson = new Gson();
+ GameManager manager = new GameManager(context);
+ List gameList = gson.fromJson(response.toString(), listType);
+ if (gameList != null && !gameList.isEmpty()) {
+ for (GameEntity entity : gameList) {
+ // 黄壮华 初始化游戏状态 修改2015/8/15
+ entity.setEntryMap(gameMap.get(entity.getName()));
+ for (ApkEntity apkEntity : entity.getApk()) {
+ manager.addOrUpdate(new GameInfo(apkEntity.getPackageName(),
+ entity.getId(), entity.getName()));
+ }
+ }
+ list = gameList;
+ notifyItemRangeInserted(list.size() - gameList.size(), gameList.size());
+ }
+
+ // 黄壮华 获取游戏位置信息 修改2015/8/15
+ for (int i = 0, size = list.size(); i < size; i++) {
+ GameEntity entity = list.get(i);
+ locationMap.put(entity.getName(), i);
+ for (ApkEntity apkEntity : entity.getApk()) {
+ nameMap.put(apkEntity.getPackageName(), entity.getName());
+ }
+ }
+
+ if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
+ subject_pb_loading.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return position;
+ }
+
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
+ if (list.get(i).getTest() != null) {
+ View view = LayoutInflater.from(viewGroup.getContext()).inflate(
+ R.layout.home_game_test_item, viewGroup, false);
+ return new GameTestViewHolder(view);
+ } else {
+ View view = LayoutInflater.from(viewGroup.getContext()).inflate(
+ R.layout.home_game_normal_item, viewGroup, false);
+ return new GameNormalViewHolder(view);
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
+ if (viewHolder instanceof GameNormalViewHolder) {
+ initGameNormalViewHolder((GameNormalViewHolder) viewHolder, position);
+ } else if (viewHolder instanceof GameTestViewHolder) {
+ initGameTestViewHolder((GameTestViewHolder) viewHolder, position);
+ }
+ }
+
+ private void initGameTestViewHolder(GameTestViewHolder holder, int position) {
+ final GameEntity entity = list.get(position);
+
+ ImageUtils.getInstance(context).display(entity.getIcon(), holder.gameThumb);
+ holder.gameNameAndSize.setText(entity.getName());
+ if (entity.getApk() == null || entity.getApk().isEmpty()) {
+ holder.gameDes.setText(entity.getBrief());
+ } else {
+ holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
+ }
+ holder.gameTestType.setText(entity.getTest().getType());
+ if (entity.getTest().getStart() == 0) {
+ holder.gameTestTime.setVisibility(View.GONE);
+ } else {
+ holder.gameTestTime.setText(GameViewUtils.getGameTestDate(entity.getTest().getStart()));
+ }
+
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AppController.put("GameEntity", entity);
+ Intent intent = new Intent(context,
+ GameDetailsActivity.class);
+ intent.putExtra("entrance", "主页-新测卡牌");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ }
+ });
+
+ if (entity.getApk() == null || entity.getApk().isEmpty()) {
+ holder.downloadBtn.setVisibility(View.GONE);
+ } else {
+ if (entity.getTest().getEnd() == 0) {
+ holder.downloadBtn.setVisibility(View.VISIBLE);
+ DownloadItemUtils.setOnClickListener(context,
+ holder.downloadBtn, holder.download_speed,
+ holder.download_percentage, entity, position,
+ SubjectAdapter.this,
+ statusMap, platformMap, "主页-新测卡牌",
+ dismissEntity, "主页:" + entity.getName());
+ } else {
+ long endTime = Long.valueOf(entity.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, entity, position,
+ SubjectAdapter.this, statusMap, platformMap,
+ "主页-新测卡牌", dismissEntity,
+ "主页:" + entity.getName());
+ }
+ }
+ }
+
+ DownloadItemUtils.updateItem(context, holder.labelList,
+ holder.game_progressbar, holder.game_ll_info, holder.download_speed,
+ holder.download_percentage, holder.downloadBtn, entity, platformMap,
+ statusMap);
+ }
+
+ private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
+ final GameEntity entity = list.get(position);
+
+ ImageUtils.getInstance(context).display(entity.getIcon(), holder.gameThumb);
+ holder.gameNameAndSize.setText(entity.getName());
+ if (entity.getApk() == null || entity.getApk().isEmpty()) {
+ holder.gameDes.setText(entity.getBrief());
+ } else {
+ holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
+ }
+
+ GameViewUtils.setLabelList(context, holder.labelList, entity.getTag());
+
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ Map kv = new HashMap();
+ kv.put("入口", "热门卡牌");
+ DataUtils.onEvent(context, "游戏详情", entity.getName(), kv);
+
+ AppController.put("GameEntity", entity);
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("entrance", "热门卡牌");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ }
+ });
+
+ DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
+ holder.download_speed, holder.download_percentage,
+ entity, position, this,
+ statusMap, platformMap, "热门卡牌", dismissEntity, "hotcard:" + entity.getName());
+
+ DownloadItemUtils.updateItem(context, holder.labelList,
+ holder.game_progressbar, holder.game_ll_info,
+ holder.download_speed, holder.download_percentage,
+ holder.downloadBtn, entity, platformMap, statusMap);
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public ArrayMap getLocationMap() {
+ return locationMap;
+ }
+
+ public ArrayMap> getPlatformMap() {
+ return platformMap;
+ }
+
+ public ArrayMap> getGameMap() {
+ return gameMap;
+ }
+
+ public ArrayMap getNameMap() {
+ return nameMap;
+ }
+
+ public ArrayMap getStatusMap() {
+ return statusMap;
+ }
+
+ public DismissEntity getDismissEntity() {
+ return dismissEntity;
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/download/DownLoadManagerFragment.java b/app/src/main/java/com/gh/gamecenter/download/DownLoadManagerFragment.java
index 13a5351fb5..ed8457f011 100644
--- a/app/src/main/java/com/gh/gamecenter/download/DownLoadManagerFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/download/DownLoadManagerFragment.java
@@ -1,6 +1,5 @@
package com.gh.gamecenter.download;
-import android.app.Dialog;
import android.os.Bundle;
import android.os.Message;
import android.support.annotation.Nullable;
@@ -8,15 +7,12 @@ import android.support.v4.app.Fragment;
import android.support.v4.util.ArrayMap;
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.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
-import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
@@ -200,7 +196,6 @@ public class DownLoadManagerFragment extends Fragment {
@Nullable
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-
if (container != null) {
container.removeView(view);
}
@@ -491,11 +486,14 @@ public class DownLoadManagerFragment extends Fragment {
downloadmanager_rv_show.getAdapter().notifyItemRemoved(
position);
}
-
- EventBus.getDefault().post(
- new EBDownloadDelete(entry.getName(), entry.getMeta()
- .get("platform"), entry.getUrl()));
-
+ EBDownloadDelete delete = new EBDownloadDelete(entry.getName(),
+ entry.getMeta().get("platform"), entry.getUrl());
+ String PluginPlatform = entry.getMeta().get("PluginPlatform");
+ if (PluginPlatform != null) {
+ delete.setPluginPlatform(PluginPlatform);
+ }
+ EventBus.getDefault().post(delete);
+
DownloadManager.getInstance(getActivity()).cancel(
entry.getUrl());
}
@@ -505,35 +503,9 @@ public class DownLoadManagerFragment extends Fragment {
// 显示插件化
private void showPluginDialog(final String path) {
- final Dialog dialog = new Dialog(getActivity());
- View view = View.inflate(getActivity(),
- R.layout.search_history_delete_dialog, null);
- TextView title = (TextView) view.findViewById(R.id.delete_dialog_title);
- title.setText("插件化安装");
- TextView content = (TextView) view
- .findViewById(R.id.delete_dialog_message);
- Spanned spanned = Html.fromHtml("您将进行插件化安装以实现插件功能,此过程将"
- + "卸载" + "当前使用的版本并"
- + "安装插件版本" + "。");
- content.setText(spanned);
-
- TextView cancel = (TextView) view
- .findViewById(R.id.delete_dialog_cancel);
- cancel.setText("取消");
- cancel.setOnClickListener(new OnClickListener() {
+ DialogUtils.showPluginDialog(getActivity(), new DialogUtils.ConfiremListener() {
@Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- TextView confirm = (TextView) view
- .findViewById(R.id.delete_dialog_confirm);
- confirm.setText("确定");
- confirm.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
-
+ public void onConfirem() {
for (DownloadEntry downloadEntry : DownloadManager.getInstance(
getActivity()).getAll()) {
if (downloadEntry.getMeta().get("isPlugin") != null
@@ -552,11 +524,7 @@ public class DownLoadManagerFragment extends Fragment {
startActivity(PackageUtils.getUninstallIntent(getActivity(), path));
}
}
- });
-
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- dialog.show();
+ }, null);
}
private class DownLoadListAdapter extends
diff --git a/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadDelete.java b/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadDelete.java
index 00257145c2..6e7a25311c 100644
--- a/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadDelete.java
+++ b/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadDelete.java
@@ -5,6 +5,7 @@ public class EBDownloadDelete {
private String name;
private String platform;
private String url;
+ private String PluginPlatform;
public EBDownloadDelete(String name, String platform, String url) {
super();
@@ -37,4 +38,12 @@ public class EBDownloadDelete {
this.url = url;
}
+ public String getPluginPlatform() {
+ return PluginPlatform;
+ }
+
+ public void setPluginPlatform(String pluginPlatform) {
+ PluginPlatform = pluginPlatform;
+ }
+
}
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 b6eebd8983..32f6c25345 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
@@ -13,20 +13,27 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.LinearLayout;
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.util.Utils;
import com.gh.common.view.VerticalItemDecoration;
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.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPWDismiss;
+import com.gh.gamecenter.eventbus.EBPackage;
+import com.gh.gamecenter.eventbus.EBUISwitch;
import java.util.HashMap;
import java.util.List;
@@ -41,17 +48,25 @@ import de.greenrobot.event.EventBus;
public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
private View view;
- private RecyclerView mRecyclerView;
+ private RecyclerView recyclerview;
+ private SwipeRefreshLayout game_swipe_refresh;
private Game1FragmentAdapter adapter;
- private SwipeRefreshLayout mSwipeRefreshLayout;
- private ProgressBarCircularIndeterminate mProgressBarCircularIndeterminate;
+ private LinearLayout reuse_no_connection;
+ private ProgressBarCircularIndeterminate game_pb_loading;
+ //下载用到的map
private ArrayMap locationMap;
- private ArrayMap statusMap;
+ private ArrayMap> gameMap;
private ArrayMap> platformMap;
+ private ArrayMap nameMap;
+ private ArrayMap pluginNameMap;
+ private ArrayMap statusMap;
private DismissEntity dismissEntity;
+ private int currentItem;
+
+ private boolean isEverpause;
private boolean isDestroy;
private Handler handler = new Handler() {
@@ -61,8 +76,7 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
if (msg.what == Constants.DOWNLOAD_ROLL) {
String name = (String) msg.obj;
if (platformMap != null) {
- LinkedBlockingQueue queue = platformMap
- .get(name);
+ LinkedBlockingQueue queue = platformMap.get(name);
if (queue.size() > 1) {
queue.offer(queue.poll());
Message msg2 = Message.obtain();
@@ -81,29 +95,223 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
@Override
public void onDataChanged(
HashMap downloadingEntries) {
- for (Map.Entry entry : downloadingEntries.entrySet()) {
- DownloadEntry downloadEntry = entry.getValue();
+ if (!game_swipe_refresh.isRefreshing()) {
+ for (Map.Entry entry : downloadingEntries.entrySet()) {
+ DownloadEntry downloadEntry = entry.getValue();
- Integer location;
- String PluginPlatform = downloadEntry.getMeta().get("PluginPlatform");
- if (PluginPlatform != null) {
- location = locationMap.get(downloadEntry.getName() + " - " + PluginPlatform);
- } else {
- location = locationMap.get(downloadEntry.getName());
- }
- if (location != null) {
- int index = location.intValue();
- GameEntity detailedEntity = getEntityByLocation(index);
+ Integer location = locationMap.get(downloadEntry.getName());
+ if (location != null) {
+ int index = location;
+ GameEntity detailedEntity = getEntityByLocation(index);
- if (detailedEntity != null) {
- DownloadItemUtils.processDate(detailedEntity,
- downloadEntry, platformMap, handler, adapter, index, statusMap);
+ if (detailedEntity != null) {
+ DownloadItemUtils.processDate(detailedEntity,
+ downloadEntry, platformMap, handler, adapter, index, statusMap);
+ }
+ }
+
+ //特殊 插件化update
+ if (downloadEntry.getMeta().get("PluginPlatform") != null) {
+ location = locationMap.get(downloadEntry.getName() + " - " + downloadEntry.getMeta().get("PluginPlatform"));
+ if (location != null) {
+ int index = location;
+ GameEntity detailedEntity = getEntityByLocation(index);
+
+ if (detailedEntity != null) {
+ DownloadItemUtils.processDate(detailedEntity,
+ downloadEntry, platformMap, handler, adapter, index, statusMap);
+ }
+ }
}
}
}
}
};
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ 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();
+
+ dismissEntity = new DismissEntity(false);
+
+ currentItem = 0;
+
+ isEverpause = false;
+ isDestroy = false;
+
+ //初始化gamemap
+ DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
+
+ reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
+ reuse_no_connection.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ game_swipe_refresh.setRefreshing(true);
+ recyclerview.setVisibility(View.VISIBLE);
+ game_pb_loading.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ handler.postDelayed(runnable, 1000);
+ }
+ });
+
+ game_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.game_swipe_refresh);
+ game_swipe_refresh.setColorSchemeResources(R.color.theme_colors);
+ game_swipe_refresh.setOnRefreshListener(this);
+
+ game_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading);
+
+ recyclerview = (RecyclerView) view.findViewById(R.id.game_list);
+ recyclerview.setHasFixedSize(true);
+ recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
+ adapter = new Game1FragmentAdapter(Game1Fragment.this, locationMap, gameMap,
+ platformMap, nameMap, pluginNameMap, recyclerview, game_swipe_refresh, reuse_no_connection,
+ statusMap, dismissEntity, game_pb_loading, false);
+ recyclerview.setAdapter(adapter);
+ recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
+
+ EventBus.getDefault().register(this);
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ if(container != null){
+ container.removeView(view);
+ }
+ return view;
+ }
+
+ //下载被删除事件
+ 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());
+ }
+ }
+ adapter.notifyItemChanged(index);
+ }
+ //特殊 插件化update
+ if (busThree.getPluginPlatform() != null) {
+ location = locationMap.get(busThree.getName() + " - " + busThree.getPluginPlatform());
+ int index = location;
+ Utils.log(location);
+ GameEntity detailedEntity = getEntityByLocation(index);
+ if (detailedEntity != null) {
+ detailedEntity.setEntryMap(null);
+ }
+ adapter.notifyItemChanged(index);
+ }
+ }
+
+ //版本选择框消失事件
+ public void onEventMainThread(EBPWDismiss dismiss) {
+ if (dismissEntity != null) {
+ dismissEntity.setShow(false);
+ }
+ }
+
+ //安装、卸载事件
+ 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());
+ adapter.notifyItemChanged(location);
+ break;
+ }
+ }
+ } else if ("卸载".equals(busFour.getType())) {
+ adapter.notifyItemChanged(location);
+ }
+ }
+ }
+ //特殊 插件化
+ name = pluginNameMap.get(busFour.getPackageName());
+ if (name != null) {
+ Integer location = locationMap.get(name);
+ if (location != null) {
+ if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) {
+ List list = adapter.getPluginList();
+ for (int i = 0, size = list.size(); i < size; i++) {
+ if (list.get(i).getApk().get(0).getPackageName()
+ .equals(busFour.getPackageName())) {
+ list.remove(i);
+ adapter.notifyItemRemoved(location);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //连接上网络事件
+ public void onEventMainThread(EBNetworkState busNetworkState) {
+ if (busNetworkState.isNetworkConnected()) {
+ if (reuse_no_connection.getVisibility() == View.VISIBLE) {
+ game_swipe_refresh.setRefreshing(true);
+ recyclerview.setVisibility(View.VISIBLE);
+ game_pb_loading.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.GONE);
+ handler.postDelayed(runnable, 1000);
+ } else if (adapter.isNetworkError()) {
+ adapter.setNetworkError(false);
+ adapter.notifyItemChanged(adapter.getItemCount() - 1);
+ adapter.load();
+ }
+ }
+ }
+
+ //Fragment界面切换事件
+ public void onEventMainThread(EBUISwitch busNine) {
+ if ("MainActivity".equals(busNine.getFrom())) {
+ if (busNine.getPosition() == 0) {
+ adapter.startAutoScroll();
+ } else {
+ adapter.stopAutoScroll();
+ statusMap.clear();
+ }
+ } else if ("GameFragment".equals(busNine.getFrom())) {
+ currentItem = busNine.getPosition();
+ if (busNine.getPosition() == 0) {
+ adapter.startAutoScroll();
+ if (game_pb_loading.getVisibility() == View.VISIBLE) {
+ adapter.load();
+ }
+ } else {
+ adapter.stopAutoScroll();
+ }
+ }
+ }
+
private GameEntity getEntityByLocation(int position) {
List pluginList = adapter.getPluginList();
List subjectList = adapter.getSubjectList();
@@ -127,52 +335,52 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
}
@Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- view = View.inflate(getActivity(), R.layout.plugin1_fragment, null);
-
- isDestroy = false;
-
- locationMap = new ArrayMap();
- statusMap = new ArrayMap();
- platformMap = new ArrayMap>();
-
- dismissEntity = new DismissEntity(false);
-
- mRecyclerView = (RecyclerView) view.findViewById(R.id.game_list);
-
- mSwipeRefreshLayout = (SwipeRefreshLayout) view
- .findViewById(R.id.game_swipe_refresh);
- mSwipeRefreshLayout.setColorSchemeResources(R.color.theme_colors);
- mSwipeRefreshLayout.setOnRefreshListener(this);
-
- mProgressBarCircularIndeterminate = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading);
- mProgressBarCircularIndeterminate.setVisibility(View.GONE);
-
- mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
- adapter = new Game1FragmentAdapter(getActivity(), locationMap, statusMap,
- platformMap, dismissEntity, mSwipeRefreshLayout);
- mRecyclerView.setAdapter(adapter);
- mRecyclerView.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
-
- EventBus.getDefault().register(this);
+ public void onResume() {
+ super.onResume();
+ if (isEverpause) {
+ //修改游戏下载状态
+ DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
+ for (SubjectEntity subjectEntity : adapter.getSubjectList()) {
+ for (GameEntity entity :subjectEntity.getData()) {
+ entity.setEntryMap(gameMap.get(entity.getName()));
+ }
+ }
+ for (GameEntity entity : adapter.getPluginList()) {
+ entity.setEntryMap(gameMap.get(entity.getName()));
+ }
+ adapter.notifyDataSetChanged();
+ }
+ isEverpause = false;
+ DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
+ if (currentItem == 0) {
+ adapter.startAutoScroll();
+ }
}
- @Nullable
@Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- if(container != null){
- container.removeView(view);
+ public void onPause() {
+ super.onPause();
+ isEverpause = true;
+ statusMap.clear();
+ DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
+ if (currentItem == 0) {
+ adapter.stopAutoScroll();
}
- return view;
+ }
+
+ public boolean isEverpause() {
+ return isEverpause;
}
Runnable runnable = new Runnable() {
@Override
public void run() {
- mSwipeRefreshLayout.setRefreshing(false);
+ if (!isDestroy) {
+ adapter = new Game1FragmentAdapter(Game1Fragment.this, locationMap, gameMap,
+ platformMap, nameMap, pluginNameMap, recyclerview, game_swipe_refresh, reuse_no_connection,
+ statusMap, dismissEntity, game_pb_loading, true);
+ recyclerview.setAdapter(adapter);
+ }
}
};
@@ -181,46 +389,26 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
handler.postDelayed(runnable, 1000);
}
- 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.intValue();
- GameEntity detailedEntity = getEntityByLocation(index);
- if (TextUtils.isEmpty(busThree.getPlatform())) {
- detailedEntity.getEntryMap().remove("官方版");
- } else {
- detailedEntity.getEntryMap().remove(busThree.getPlatform());
- }
- adapter.notifyItemChanged(index);
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
- }
-
- @Override
- public void onPause() {
- super.onPause();
- DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
- }
-
@Override
public void onDestroy() {
super.onDestroy();
isDestroy = true;
+ AppController.canclePendingRequests(Game1Fragment.class);
+ EventBus.getDefault().unregister(this);
+ view = null;
+ recyclerview = null;
+ adapter = null;
+ reuse_no_connection = null;
+ game_swipe_refresh = null;
+ game_pb_loading = null;
+ locationMap = null;
+ gameMap = null;
+ platformMap = null;
+ nameMap = null;
+ pluginNameMap = null;
+ statusMap = null;
+ dismissEntity = null;
+ handler = null;
+ dataWatcher = null;
}
}
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 04acb909ae..249d382c11 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
@@ -1,6 +1,5 @@
package com.gh.gamecenter.game;
-import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.v4.util.ArrayMap;
@@ -21,6 +20,7 @@ import com.android.volley.NoConnectionError;
import com.android.volley.Response;
import com.android.volley.TimeoutError;
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;
@@ -30,23 +30,29 @@ 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.download.DownloadEntry;
import com.gh.gamecenter.GameDetailsActivity;
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.FooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
import com.gh.gamecenter.db.info.ConcernInfo;
+import com.gh.gamecenter.db.info.GameInfo;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.DismissEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.SlideEntity;
import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.manager.ConcernManager;
+import com.gh.gamecenter.manager.GameManager;
import com.gh.gamecenter.manager.PackageManager;
import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
@@ -74,61 +80,87 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter slideList;
private List pluginList;
private List subjectList;
+ private boolean isNetworkError;
private boolean isSlideError;
+ private boolean isListError;
+ private boolean isRemove;
private ArrayMap locationMap;
- private ArrayMap statusMap;
+ private ArrayMap> gameMap;
private ArrayMap> platformMap;
+ private ArrayMap nameMap;
+ private ArrayMap pluginNameMap;
+ private ArrayMap statusMap;
private DismissEntity dismissEntity;
- public Game1FragmentAdapter(Activity activity,
- ArrayMap lMap,
- ArrayMap sMap,
- ArrayMap> pMap,
- DismissEntity dEntity,
- SwipeRefreshLayout swipeRefreshLayout) {
+ public Game1FragmentAdapter(Game1Fragment fragment,
+ ArrayMap lMap,
+ ArrayMap> gMap,
+ ArrayMap> pMap,
+ ArrayMap nMap,
+ ArrayMap pnMap,
+ RecyclerView rView,
+ SwipeRefreshLayout refreshLayout,
+ LinearLayout linearLayout,
+ ArrayMap sMap,
+ DismissEntity dEntity,
+ ProgressBarCircularIndeterminate pbLoading,
+ boolean isLoad) {
- mActivity = activity;
- mContext = activity;
+ this.fragment = fragment;
+ this.context = fragment.getActivity();
locationMap = lMap;
- statusMap = sMap;
+ gameMap = gMap;
platformMap = pMap;
+ nameMap = nMap;
+ pluginNameMap = pnMap;
+ recyclerview = rView;
+ game_swipe_refresh = refreshLayout;
+ reuse_no_connection = linearLayout;
+ game_pb_loading = pbLoading;
+ statusMap = sMap;
dismissEntity = dEntity;
- mSwipeRefreshLayout = swipeRefreshLayout;
slideList = new ArrayList();
pluginList = new ArrayList();
subjectList = new ArrayList();
+ isNetworkError = false;
isSlideError = false;
+ isListError = false;
+ isRemove = false;
- load();
+ if (isLoad) {
+ load();
+ }
}
public void load() {
- new Thread(runnable){}.start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ initSlide(true);
+ initPlugin();
+ }
+ }){}.start();
}
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- initSlide(true);
- initPlugin();
- }
- };
-
private void initSlide(final boolean isFirst) {
JsonArrayExtendedRequest slideRequest = new JsonArrayExtendedRequest(
TimestampUtils.addTimestamp(Config.HOST + "v1d50/index/slides",
@@ -142,7 +174,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter() {
@Override
@@ -175,30 +211,84 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter list = gson.fromJson(response.toString(), listType);
if (list != null && !list.isEmpty()) {
subjectList = list;
- if (pluginList.isEmpty()) {
- notifyItemRangeInserted(1, getItemCount() - 1);
- } else {
- int start = 2 + pluginList.size();
- notifyItemRangeInserted(start, getItemCount() - start);
+ GameManager manager = new GameManager(context);
+ for (SubjectEntity subjectEntity : subjectList) {
+ for (GameEntity gameEntity : subjectEntity.getData()) {
+ gameEntity.setEntryMap(gameMap.get(gameEntity.getName()));
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ manager.addOrUpdate(new GameInfo(apkEntity.getPackageName(),
+ gameEntity.getId(), gameEntity.getName()));
+ }
+ }
}
+
+ if (!fragment.isHidden() && !fragment.isEverpause()) {
+ if (pluginList.isEmpty()) {
+ notifyItemRangeInserted(1, getItemCount() - 2);
+ } else {
+ int start = 2 + pluginList.size();
+ notifyItemRangeInserted(start, getItemCount() - start - 1);
+ }
+ } else {
+ notifyDataSetChanged();
+ }
+
initLocationMap();
}
+
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
+ game_swipe_refresh.setRefreshing(false);
+ }
+
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
+ game_pb_loading.setVisibility(View.GONE);
+ }
+
+ isRemove = true;
+ notifyItemRemoved(getItemCount() - 1);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
-
+ // 无网络连接和访问超时
+ if (error.getClass().equals(NoConnectionError.class)
+ || error.getClass().equals(TimeoutError.class)) {
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
+ game_swipe_refresh.setRefreshing(false);
+ }
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
+ game_pb_loading.setVisibility(View.GONE);
+ }
+ isListError = true;
+ isNetworkError = true;
+ showView();
+ }
}
});
AppController.addToRequestQueue(request, Game1Fragment.class);
}
+ private void showView() {
+ if (isSlideError && isListError) {
+ Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
+ recyclerview.setVisibility(View.GONE);
+ game_pb_loading.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.VISIBLE);
+ } else if (isSlideError) {
+ Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
+ notifyItemChanged(0);
+ } else if (isListError) {
+ Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
+ notifyItemChanged(getItemCount() - 1);
+ }
+ }
+
private int count;
//检查可以插件化的游戏
private void initPlugin() {
- ConcernManager concernManager = new ConcernManager(mContext);
+ ConcernManager concernManager = new ConcernManager(context);
List infos = concernManager.getInstalledGame();
final int size = infos.size();
final List list = new ArrayList();
@@ -226,7 +316,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter infos = concernManager.getInstalledGame();
HashMap map;
GameEntity gameEntity;
@@ -252,11 +342,25 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter apkList = new ArrayList();
apkList.add(apkEntity);
entity.setApk(apkList);
pluginList.add(entity);
+ if (pluginList.size() == 3) {
+ GameManager manager = new GameManager(context);
+ for (GameEntity gEntity : pluginList) {
+ gEntity.setEntryMap(gameMap.get(gEntity.getName()));
+ for (ApkEntity aEntity : gEntity.getApk()) {
+ manager.addOrUpdate(new GameInfo(aEntity.getPackageName(),
+ gEntity.getId(), gEntity.getName()));
+ }
+ }
+ notifyItemRangeInserted(1, pluginList.size() + 1);
+ initLocationMap();
+ return;
+ }
break;
}
}
@@ -268,6 +372,14 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 1 && position <= 1 + pluginList.size()) {
- locationMap.put(pluginList.get(position - 2).getName() + " - "
- + PlatformUtils.getInstance(mContext).getPlatformName(
- pluginList.get(position - 2).getApk().get(0).getPlatform()),
- position);
+ GameEntity gameEntity = pluginList.get(position - 2);
+ locationMap.put(gameEntity.getName() + " - " + gameEntity.getPluginPlatform(), position);
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ pluginNameMap.put(apkEntity.getPackageName(), gameEntity.getName() + " - " + gameEntity.getPluginPlatform());
+ }
}
}
}
if (!subjectList.isEmpty()) {
+ int offset;
+ GameEntity gameEntity;
for (int position = 0; position < count; position++) {
- int offset = 1;
+ offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
- GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
gameEntity = subjectList.get(i).getData().get(position - offset - 1);
if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
locationMap.put(gameEntity.getName(), position);
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ nameMap.put(apkEntity.getPackageName(), gameEntity.getName());
+ }
}
break;
}
@@ -309,398 +426,6 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) {
- gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- if (gameEntity.getTest() != null) {
- initGameTest(holder, gameEntity, position - offset - 1, subjectList.get(i).getOrder());
- break;
- }
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
- }
-
- private void initGameTest(GameTestViewHolder holder, GameEntity gameEntity, int i, boolean order) {
- if (order) {
- holder.home2_game_order.setVisibility(View.VISIBLE);
- holder.home2_game_order.setText((i + 1) + "");
- } else {
- holder.home2_game_order.setVisibility(View.GONE);
- }
- ImageUtils.getInstance(mContext).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(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()));
- }
-
- final GameEntity entity = gameEntity;
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- AppController.put("GameEntity", entity);
- Intent intent = new Intent(mContext,
- GameDetailsActivity.class);
- intent.putExtra("entrance", "主页-新测卡牌");
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- mContext.startActivity(intent);
- }
- });
-
- if (entity.getApk() == null || entity.getApk().isEmpty()) {
- holder.downloadBtn.setVisibility(View.GONE);
- } else {
- if (entity.getTest().getEnd() == 0) {
- holder.downloadBtn.setVisibility(View.VISIBLE);
- DownloadItemUtils.setOnClickListener(mContext,
- holder.downloadBtn, holder.download_speed,
- holder.download_percentage, entity, i,
- Game1FragmentAdapter.this,
- statusMap, platformMap, "主页-新测卡牌",
- dismissEntity, "主页:" + entity.getName());
- } else {
- long endTime = Long.valueOf(entity.getTest().getEnd()
- + "000");
- long todayTime = new Date().getTime();
- if (todayTime > endTime) {
- // 测试时间已过
- holder.downloadBtn.setVisibility(View.GONE);
- } else {
- // 测试时间未过
- holder.downloadBtn.setVisibility(View.VISIBLE);
- DownloadItemUtils.setOnClickListener(mContext,
- holder.downloadBtn, holder.download_speed,
- holder.download_percentage, entity, i,
- Game1FragmentAdapter.this, statusMap, platformMap,
- "主页-新测卡牌", dismissEntity,
- "主页:" + entity.getName());
- }
- }
- }
-
- DownloadItemUtils.updateItem(mContext, holder.labelList,
- holder.game_progressbar, holder.game_ll_info, holder.download_speed,
- holder.download_percentage, holder.downloadBtn, entity, platformMap,
- statusMap);
- }
-
- private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
- GameEntity gameEntity;
-
- if (!pluginList.isEmpty() && position > 1 && position <= 1 + pluginList.size()) {
- gameEntity = pluginList.get(position - 2);
- initGameNormal(holder, gameEntity, position - 2, false);
- return;
- }
-
- int offset = 1;
- if (!pluginList.isEmpty()) {
- offset += 1 + pluginList.size();
- }
- for (int i = 0, size = subjectList.size(); i < size; i++) {
- if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
- gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) {
- initGameNormal(holder, gameEntity, position - offset - 1, subjectList.get(i).getOrder());
- break;
- }
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
- }
-
- private void initGameNormal(GameNormalViewHolder holder, final GameEntity entity, int i, boolean order) {
- if (order) {
- holder.home1_game_order.setVisibility(View.VISIBLE);
- holder.home1_game_order.setText((i + 1) + "");
- } else {
- holder.home1_game_order.setVisibility(View.GONE);
- }
- ImageUtils.getInstance(mContext).display(entity.getIcon(),
- holder.gameThumb);
- if (entity.getPluginPlatform() != null) {
- holder.gameNameAndSize.setText(entity.getName() + " - "
- + PlatformUtils.getInstance(mContext).getPlatformName(entity.getPluginPlatform()));
- } else {
- holder.gameNameAndSize.setText(entity.getName());
- }
- if (entity.getApk() == null || entity.getApk().isEmpty()) {
- holder.gameDes.setText(entity.getBrief());
- } else {
- holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
- }
- GameViewUtils.setLabelList(mContext, holder.labelList, entity.getTag());
-
- holder.itemView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (entity.getPluginPlatform() != null) {
- Intent intent = new Intent(mContext, GameDetailsActivity.class);
- intent.putExtra("gameId", entity.getId());
- intent.putExtra("entrance", "游戏-插件");
- mContext.startActivity(intent);
- } else {
- AppController.put("GameEntity", entity);
- Intent intent = new Intent(mContext, GameDetailsActivity.class);
- intent.putExtra("entrance", "游戏-插件");
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- mContext.startActivity(intent);
- }
- }
- });
-
- DownloadItemUtils.setOnClickListener(mContext, holder.downloadBtn,
- holder.download_speed, holder.download_percentage, entity, i,
- Game1FragmentAdapter.this,
- statusMap, platformMap, "游戏-插件",
- dismissEntity, "主页:" + entity.getName());
-
- DownloadItemUtils.updateItem(mContext, holder.labelList,
- holder.game_progressbar, holder.game_ll_info, holder.download_speed,
- holder.download_percentage, holder.downloadBtn, entity, platformMap,
- statusMap);
- }
-
- public void initGameImageViewHolder(GameImageViewHolder holder, int position) {
- 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 && position <= subjectList.get(i).getData().size() + offset) {
- gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- if (!TextUtils.isEmpty(gameEntity.getImage())) {
- final GameEntity entity = gameEntity;
- ImageUtils.getInstance(mContext).display(entity.getImage(), holder.image, -1);
- holder.image.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- if ("game".equals(entity.getType())) {
- Intent intent = new Intent(mContext, GameDetailsActivity.class);
- intent.putExtra("gameId", entity.getId());
- intent.putExtra("entrance", "插件-大图");
- mContext.startActivity(intent);
- } else if ("news".equals(entity.getType())) {
- Intent intent = new Intent(mContext, NewsActivity.class);
- intent.putExtra("newsId", entity.getId());
- intent.putExtra("entrance", "插件-大图");
- mContext.startActivity(intent);
- } else if ("column".equals(entity.getType())) {
- Intent intent = new Intent(mContext, SubjectActivity.class);
- intent.putExtra("id", entity.getId());
-// intent.putExtra("name", entity.getName());
- mContext.startActivity(intent);
- }
-
- }
- });
- break;
- }
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
- }
-
- public void initGameHeadViewHolder(GameHeadViewHolder holder, int position) {
- if (!pluginList.isEmpty() && position == 1) {
- holder.thumb.setVisibility(View.VISIBLE);
- holder.thumb.setImageResource(R.drawable.home_plug_upgrade);
- holder.title.setText("你有" + pluginList.size() + "个游戏可以升级插件版");
- holder.more.setText("全部");
- holder.link.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- }
- });
- return;
- }
-
- int offset = 1;
- if (!pluginList.isEmpty()) {
- offset += 1 + pluginList.size();
- }
- for (int i = 0, size = subjectList.size(); i < size; i++) {
- if (position == offset) {
- holder.thumb.setVisibility(View.GONE);
- holder.title.setText(subjectList.get(i).getName());
- final int ii = i;
- holder.link.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Intent intent = new Intent(mContext, SubjectActivity.class);
- intent.putExtra("id", subjectList.get(ii).getId());
- intent.putExtra("name", subjectList.get(ii).getName());
- mContext.startActivity(intent);
-
- }
- });
- break;
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
- }
-
- public class AutoScrollViewpagerViewHolder extends RecyclerView.ViewHolder {
- private AutoScrollViewPager viewPager;
- private LinearLayout viewpager_ll_hint;
- private TextView viewpager_tv_failure;
-
- public AutoScrollViewpagerViewHolder(View v) {
- super(v);
- viewpager_tv_failure = (TextView) v.findViewById(R.id.viewpager_tv_failure);
- viewpager_tv_failure.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- isSlideError = false;
- notifyItemChanged(0);
- initSlide(false);
- }
- });
- viewpager_ll_hint = (LinearLayout) v
- .findViewById(R.id.viewpager_ll_hint);
- viewPager = (AutoScrollViewPager) v.findViewById(R.id.view_pager);
- viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
-
- @Override
- public void onPageSelected(int position) {
- for (int i = 0, size = viewpager_ll_hint
- .getChildCount(); i < size; i++) {
- if (i == position % size) {
- ((ImageView) viewpager_ll_hint.getChildAt(i))
- .setImageResource(R.drawable.oval_hint_dn);
- } else {
- ((ImageView) viewpager_ll_hint.getChildAt(i))
- .setImageResource(R.drawable.oval_hint_up);
- }
- }
- }
-
- @Override
- public void onPageScrolled(int position,
- float positionOffset, int positionOffsetPixels) {
-
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- // 解决viewpager和SwipeRefreshLayout滑动冲突
- if (state == ViewPager.SCROLL_STATE_DRAGGING) {
- mSwipeRefreshLayout.setEnabled(false);
- } else {
- mSwipeRefreshLayout.setEnabled(true);
- }
- }
- });
- autoScrollViewPager = viewPager;
- }
-
- }
-
- private AutoScrollViewPager autoScrollViewPager;
-
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- if (holder instanceof AutoScrollViewpagerViewHolder) {
- AutoScrollViewpagerViewHolder viewHolder = (AutoScrollViewpagerViewHolder) holder;
- if (isSlideError) {
- viewHolder.viewpager_tv_failure.setVisibility(View.VISIBLE);
- viewHolder.viewPager.setVisibility(View.GONE);
- viewHolder.viewpager_ll_hint.setVisibility(View.GONE);
- } else {
- viewHolder.viewpager_tv_failure.setVisibility(View.GONE);
- viewHolder.viewPager.setVisibility(View.VISIBLE);
- viewHolder.viewpager_ll_hint.setVisibility(View.VISIBLE);
- }
- if (slideList.size() > 0) {
- int currentItem = 0;
- if (viewHolder.viewPager.getAdapter() != null) {
- currentItem = viewHolder.viewPager.getCurrentItem();
- }
- viewHolder.viewpager_ll_hint.removeAllViews();
- for (int i = 0, size = slideList.size(); i < size; i++) {
- ImageView imageView = new ImageView(mContext);
- LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
- DisplayUtils.dip2px(mContext, 8),
- DisplayUtils.dip2px(mContext, 8));
- lparams.bottomMargin = DisplayUtils.dip2px(mContext, 8);
- if (i == currentItem) {
- imageView.setImageResource(R.drawable.oval_hint_dn);
- } else {
- imageView.setImageResource(R.drawable.oval_hint_up);
- }
- if (i != 0) {
- lparams.leftMargin = DisplayUtils.dip2px(mContext, 8);
- }
- imageView.setLayoutParams(lparams);
- viewHolder.viewpager_ll_hint.addView(imageView);
- }
- viewHolder.viewPager.setAdapter(new ImagePagerAdapter(mContext, slideList, true));
- viewHolder.viewPager.setCurrentItem(currentItem);
- viewHolder.viewPager.setInterval(3000);
- viewHolder.viewPager.startAutoScroll();
- }
- } else if (holder instanceof GameHeadViewHolder) {
- initGameHeadViewHolder((GameHeadViewHolder) holder, position);
- } else if (holder instanceof GameImageViewHolder) {
- initGameImageViewHolder((GameImageViewHolder) holder, position);
- } else if (holder instanceof GameNormalViewHolder) {
- initGameNormalViewHolder((GameNormalViewHolder) holder, position);
- } else if (holder instanceof GameTestViewHolder) {
- initGameTestViewHolder((GameTestViewHolder) holder, position);
- }
- }
-
@Override
public int getItemCount() {
int pluginSize = 0;
@@ -715,7 +440,11 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 0) {
+ int currentItem = 0;
+ if (viewHolder.viewPager.getAdapter() != null) {
+ currentItem = viewHolder.viewPager.getCurrentItem();
+ }
+ viewHolder.viewpager_ll_hint.removeAllViews();
+ for (int i = 0, size = slideList.size(); i < size; i++) {
+ ImageView imageView = new ImageView(context);
+ LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
+ DisplayUtils.dip2px(context, 8),
+ DisplayUtils.dip2px(context, 8));
+ lparams.bottomMargin = DisplayUtils.dip2px(context, 8);
+ if (i == currentItem) {
+ imageView.setImageResource(R.drawable.oval_hint_dn);
+ } else {
+ imageView.setImageResource(R.drawable.oval_hint_up);
+ }
+ if (i != 0) {
+ lparams.leftMargin = DisplayUtils.dip2px(context, 8);
+ }
+ imageView.setLayoutParams(lparams);
+ viewHolder.viewpager_ll_hint.addView(imageView);
+ }
+ viewHolder.viewPager.setAdapter(new ImagePagerAdapter(context, slideList, true));
+ viewHolder.viewPager.setCurrentItem(currentItem);
+ viewHolder.viewPager.setInterval(3000);
+ viewHolder.viewPager.startAutoScroll();
+ }
+ } else if (holder instanceof GameHeadViewHolder) {
+ initGameHeadViewHolder((GameHeadViewHolder) holder, position);
+ } else if (holder instanceof GameImageViewHolder) {
+ initGameImageViewHolder((GameImageViewHolder) holder, position);
+ } else if (holder instanceof GameNormalViewHolder) {
+ initGameNormalViewHolder((GameNormalViewHolder) holder, position);
+ } else if (holder instanceof GameTestViewHolder) {
+ initGameTestViewHolder((GameTestViewHolder) holder, position);
+ } else if (holder instanceof FooterViewHolder) {
+ initFooterViewHolder((FooterViewHolder) holder);
+ }
+ }
+
+ private void initGameTestViewHolder(GameTestViewHolder holder, int position) {
+ 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 && position <= subjectList.get(i).getData().size() + offset) {
+ gameEntity = subjectList.get(i).getData().get(position - offset - 1);
+ if (gameEntity.getTest() != null) {
+ int order = position - offset - 1;
+ if (subjectList.get(i).getData().get(0).getImage() != null) {
+ order--;
+ }
+ initGameTest(holder, gameEntity, order, subjectList.get(i).getOrder());
+ break;
+ }
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ private void initGameTest(GameTestViewHolder holder, final GameEntity gameEntity, int i, boolean order) {
+ if (order) {
+ holder.home2_game_order.setVisibility(View.VISIBLE);
+ holder.home2_game_order.setText((i + 1) + "");
+ } 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(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) {
+ AppController.put("GameEntity", gameEntity);
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("entrance", "游戏-插件");
+ 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,
+ Game1FragmentAdapter.this,
+ statusMap, platformMap, "游戏-插件",
+ dismissEntity, "游戏:" + 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,
+ Game1FragmentAdapter.this, statusMap, platformMap,
+ "游戏-插件", dismissEntity,
+ "游戏:" + gameEntity.getName());
+ }
+ }
+ }
+
+ DownloadItemUtils.updateItem(context, holder.labelList,
+ holder.game_progressbar, holder.game_ll_info, holder.download_speed,
+ holder.download_percentage, holder.downloadBtn, gameEntity, platformMap,
+ statusMap);
+ }
+
+ private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
+ GameEntity gameEntity;
+
+ if (!pluginList.isEmpty() && position > 1 && position <= 1 + pluginList.size()) {
+ gameEntity = pluginList.get(position - 2);
+ initGameNormal(holder, gameEntity, position - 2, false);
+ return;
+ }
+
+ int offset = 1;
+ if (!pluginList.isEmpty()) {
+ offset += 1 + pluginList.size();
+ }
+ for (int i = 0, size = subjectList.size(); i < size; i++) {
+ if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
+ gameEntity = subjectList.get(i).getData().get(position - offset - 1);
+ if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) {
+ int order = position - offset - 1;
+ if (subjectList.get(i).getData().get(0).getImage() != null) {
+ order--;
+ }
+ initGameNormal(holder, gameEntity, order, subjectList.get(i).getOrder());
+ break;
+ }
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ private void initGameNormal(GameNormalViewHolder holder, final GameEntity entity, int i, boolean order) {
+ if (order) {
+ holder.home1_game_order.setVisibility(View.VISIBLE);
+ holder.home1_game_order.setText((i + 1) + "");
+ } else {
+ holder.home1_game_order.setVisibility(View.GONE);
+ }
+ ImageUtils.getInstance(context).display(entity.getIcon(), holder.gameThumb);
+ if (entity.getPluginPlatform() != null) {
+ holder.gameNameAndSize.setText(entity.getName() + " - " + entity.getPluginPlatform());
+ } else {
+ holder.gameNameAndSize.setText(entity.getName());
+ }
+ if (entity.getApk() == null || entity.getApk().isEmpty()) {
+ holder.gameDes.setText(entity.getBrief());
+ } else {
+ holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
+ }
+ GameViewUtils.setLabelList(context, holder.labelList, entity.getTag());
+
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (entity.getPluginPlatform() != null) {
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("gameId", entity.getId());
+ intent.putExtra("entrance", "游戏-插件");
+ context.startActivity(intent);
+ } else {
+ AppController.put("GameEntity", entity);
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("entrance", "游戏-插件");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ }
+ }
+ });
+
+ DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
+ holder.download_speed, holder.download_percentage, entity, i,
+ Game1FragmentAdapter.this,
+ statusMap, platformMap, "游戏-插件",
+ dismissEntity, "主页:" + entity.getName());
+
+ DownloadItemUtils.updateItem(context, holder.labelList,
+ holder.game_progressbar, holder.game_ll_info, holder.download_speed,
+ holder.download_percentage, holder.downloadBtn, entity, platformMap,
+ statusMap);
+ }
+
+ public void initGameImageViewHolder(GameImageViewHolder holder, int position) {
+ 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 && position <= subjectList.get(i).getData().size() + offset) {
+ gameEntity = subjectList.get(i).getData().get(position - offset - 1);
+ if (!TextUtils.isEmpty(gameEntity.getImage())) {
+ final GameEntity entity = gameEntity;
+ ImageUtils.getInstance(context).display(entity.getImage(), holder.image, -1);
+ holder.image.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ if ("game".equals(entity.getType())) {
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("gameId", entity.getId());
+ intent.putExtra("entrance", "插件-大图");
+ context.startActivity(intent);
+ } else if ("news".equals(entity.getType())) {
+ Intent intent = new Intent(context, NewsActivity.class);
+ intent.putExtra("newsId", entity.getId());
+ intent.putExtra("entrance", "插件-大图");
+ context.startActivity(intent);
+ } else if ("column".equals(entity.getType())) {
+ Intent intent = new Intent(context, SubjectActivity.class);
+ intent.putExtra("id", entity.getId());
+// intent.putExtra("name", entity.getName());
+ context.startActivity(intent);
+ }
+
+ }
+ });
+ break;
+ }
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ public void initGameHeadViewHolder(GameHeadViewHolder holder, int position) {
+ if (!pluginList.isEmpty() && position == 1) {
+ holder.thumb.setVisibility(View.VISIBLE);
+ holder.thumb.setImageResource(R.drawable.home_plug_upgrade);
+ holder.title.setText("你有" + pluginList.size() + "个游戏可以升级插件版");
+ holder.link.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ context.startActivity(new Intent(context, PluginActivity.class));
+ }
+ });
+ return;
+ }
+
+ int offset = 1;
+ if (!pluginList.isEmpty()) {
+ offset += 1 + pluginList.size();
+ }
+ for (int i = 0, size = subjectList.size(); i < size; i++) {
+ if (position == offset) {
+ holder.thumb.setVisibility(View.GONE);
+ holder.title.setText(subjectList.get(i).getName());
+ final int ii = i;
+ holder.link.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ Intent intent = new Intent(context, SubjectActivity.class);
+ intent.putExtra("id", subjectList.get(ii).getId());
+ intent.putExtra("name", subjectList.get(ii).getName());
+ context.startActivity(intent);
+
+ }
+ });
+ break;
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ private AutoScrollViewPager autoScrollViewPager;
+
+ public class AutoScrollViewpagerViewHolder extends RecyclerView.ViewHolder {
+ private AutoScrollViewPager viewPager;
+ private LinearLayout viewpager_ll_hint;
+ private TextView viewpager_tv_failure;
+
+ public AutoScrollViewpagerViewHolder(View v) {
+ super(v);
+ viewpager_tv_failure = (TextView) v.findViewById(R.id.viewpager_tv_failure);
+ viewpager_tv_failure.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isSlideError = false;
+ notifyItemChanged(0);
+ initSlide(false);
+ }
+ });
+ viewpager_ll_hint = (LinearLayout) v.findViewById(R.id.viewpager_ll_hint);
+ viewPager = (AutoScrollViewPager) v.findViewById(R.id.view_pager);
+ viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+
+ @Override
+ public void onPageSelected(int position) {
+ for (int i = 0, size = viewpager_ll_hint
+ .getChildCount(); i < size; i++) {
+ if (i == position % size) {
+ ((ImageView) viewpager_ll_hint.getChildAt(i))
+ .setImageResource(R.drawable.oval_hint_dn);
+ } else {
+ ((ImageView) viewpager_ll_hint.getChildAt(i))
+ .setImageResource(R.drawable.oval_hint_up);
+ }
+ }
+ }
+
+ @Override
+ public void onPageScrolled(int position,
+ float positionOffset, int positionOffsetPixels) {
+
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ // 解决viewpager和SwipeRefreshLayout滑动冲突
+ if (state == ViewPager.SCROLL_STATE_DRAGGING) {
+ game_swipe_refresh.setEnabled(false);
+ } else {
+ game_swipe_refresh.setEnabled(true);
+ }
+ }
+ });
+ autoScrollViewPager = viewPager;
+ }
+
+ }
+
+ private void initFooterViewHolder(FooterViewHolder holder) {
+ if (isNetworkError) {
+ holder.footerview_progressbar.setVisibility(View.GONE);
+ holder.footerview_tv_loading.setText("加载失败,点击重试");
+ holder.itemView.setClickable(true);
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isNetworkError = false;
+ notifyItemChanged(getItemCount() - 1);
+ initSubjectList();
+ }
+ });
+ } else {
+ holder.footerview_progressbar.setVisibility(View.VISIBLE);
+ holder.footerview_tv_loading.setText("加载中...");
+ holder.itemView.setClickable(false);
+ }
+ }
+
+ public void startAutoScroll() {
+ if (autoScrollViewPager != null) {
+ autoScrollViewPager.startAutoScroll();
+ }
+ }
+
+ public void stopAutoScroll() {
+ if (autoScrollViewPager != null) {
+ autoScrollViewPager.stopAutoScroll();
+ }
}
public List getPluginList() {
@@ -766,4 +924,12 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter getSubjectList() {
return subjectList;
}
+
+ public boolean isNetworkError() {
+ return isNetworkError;
+ }
+
+ public void setNetworkError(boolean networkError) {
+ isNetworkError = networkError;
+ }
}
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 53fc53169a..ec600d3fa9 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java
@@ -2,133 +2,279 @@ 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 android.widget.LinearLayout;
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;
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.EBNetworkState;
+import com.gh.gamecenter.eventbus.EBPWDismiss;
+import com.gh.gamecenter.eventbus.EBPackage;
+import com.gh.gamecenter.eventbus.EBUISwitch;
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/6/28.
*/
public class Game2Fragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
- private View view;
- private RecyclerView mRecyclerView;
- private Game2FragmentAdapter game2FragmentAdapter;
- private SwipeRefreshLayout mSwipeRefreshLayout;
- private ProgressBarCircularIndeterminate mProgressBarCircularIndeterminate;
+ private View view;
+ private RecyclerView recyclerview;
+ private SwipeRefreshLayout game_swipe_refresh;
+ private Game2FragmentAdapter adapter;
+ private LinearLayout reuse_no_connection;
+ private ProgressBarCircularIndeterminate game_pb_loading;
+
+ //下载用到的map
private ArrayMap locationMap;
private ArrayMap> gameMap;
private ArrayMap> platformMap;
private ArrayMap nameMap;
private ArrayMap statusMap;
+
private DismissEntity dismissEntity;
- private boolean isEverpause = false;
- DataWatcher dataWatcher = new DataWatcher() {
+ private boolean isEverpause;
+ private boolean isDestroy;
+
+ private Handler handler = new Handler() {
@Override
- public void onDataChanged(HashMap downloadingEntries) {
- for (Map.Entry stringDownloadEntryEntry : downloadingEntries.entrySet()) {
- DownloadEntry value = stringDownloadEntryEntry.getValue();
- Integer integer = locationMap.get(value.getName());
- if (integer!=null){
- int i = integer.intValue();
- GameEntity gameEntity = initListPosition(i);
- if (gameEntity != null) {
- DownloadItemUtils.processDate(gameEntity, value, platformMap, handler, game2FragmentAdapter, i, statusMap);
+ 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 initListPosition(int position) {
- List list = game2FragmentAdapter.getList();
- int offset = 0;
- for (int i = 0; i < list.size(); i++) {
- if (position > offset && position <= list.get(i).getData().size() + offset) {
- return list.get(i).getData().get(position - offset - 1);
- }
- offset = offset + list.get(i).getData().size();
- }
- return null;
- }
+ DataWatcher dataWatcher = new DataWatcher() {
+ @Override
+ public void onDataChanged(HashMap downloadingEntries) {
+ if (!game_swipe_refresh.isRefreshing()) {
+ for (Map.Entry stringDownloadEntryEntry : downloadingEntries.entrySet()) {
+ DownloadEntry downloadEntry = stringDownloadEntryEntry.getValue();
+ Integer location = locationMap.get(downloadEntry.getName());
+ if (location != null) {
+ int index = location;
+ GameEntity detailedEntity = getEntityByLocation(index);
+
+ if (detailedEntity != null) {
+ DownloadItemUtils.processDate(detailedEntity,
+ downloadEntry, platformMap, handler, adapter, index, statusMap);
+ }
+ }
+ }
+ }
+ }
+ };
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ view = View.inflate(getActivity(), R.layout.plugin1_fragment, null);
+
locationMap = new ArrayMap();
gameMap = new ArrayMap>();
platformMap = new ArrayMap>();
nameMap = new ArrayMap();
statusMap = new ArrayMap();
+
dismissEntity = new DismissEntity(false);
- view = View.inflate(getActivity(), R.layout.plugin1_fragment, null);
- mRecyclerView = (RecyclerView) view.findViewById(R.id.game_list);
+ isEverpause = false;
+ isDestroy = false;
- mSwipeRefreshLayout = (SwipeRefreshLayout) view
- .findViewById(R.id.game_swipe_refresh);
- mSwipeRefreshLayout.setColorSchemeResources(R.color.theme_colors);
- mSwipeRefreshLayout.setOnRefreshListener(this);
+ //初始化gamemap
+ DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
- mProgressBarCircularIndeterminate = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading);
- mProgressBarCircularIndeterminate.setVisibility(View.GONE);
- mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
- game2FragmentAdapter = new Game2FragmentAdapter(getActivity(), this,locationMap,gameMap,platformMap,nameMap,statusMap,true,dismissEntity);
- mRecyclerView.setAdapter(game2FragmentAdapter);
+ reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
+ reuse_no_connection.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ game_swipe_refresh.setRefreshing(true);
+ recyclerview.setVisibility(View.VISIBLE);
+ game_pb_loading.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ handler.postDelayed(runnable, 1000);
+ }
+ });
- mRecyclerView.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
+ game_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.game_swipe_refresh);
+ game_swipe_refresh.setColorSchemeResources(R.color.theme_colors);
+ game_swipe_refresh.setOnRefreshListener(this);
+
+ game_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading);
+
+ recyclerview = (RecyclerView) view.findViewById(R.id.game_list);
+ recyclerview.setHasFixedSize(true);
+ recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
+ adapter = new Game2FragmentAdapter(Game2Fragment.this, locationMap, gameMap,
+ platformMap, nameMap, recyclerview, game_swipe_refresh, reuse_no_connection,
+ statusMap, dismissEntity, game_pb_loading, false);
+ recyclerview.setAdapter(adapter);
+ recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
+
+ EventBus.getDefault().register(this);
}
@Nullable
@Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
if (container != null) {
container.removeView(view);
}
return view;
}
- private Handler handler = new Handler();
-
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- mSwipeRefreshLayout.setRefreshing(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());
+ }
+ }
+ adapter.notifyItemChanged(index);
+ }
+ }
- @Override
- public void onRefresh() {
- handler.postDelayed(runnable, 1000);
+ //版本选择框消失事件
+ public void onEventMainThread(EBPWDismiss dismiss) {
+ if (dismissEntity != null) {
+ dismissEntity.setShow(false);
+ }
+ }
+
+ //安装、卸载事件
+ 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());
+ adapter.notifyItemChanged(location);
+ break;
+ }
+ }
+ } else if ("卸载".equals(busFour.getType())) {
+ adapter.notifyItemChanged(location);
+ }
+ }
+ }
+ }
+
+ //连接上网络事件
+ public void onEventMainThread(EBNetworkState busNetworkState) {
+ if (busNetworkState.isNetworkConnected()) {
+ if (reuse_no_connection.getVisibility() == View.VISIBLE) {
+ game_swipe_refresh.setRefreshing(true);
+ recyclerview.setVisibility(View.VISIBLE);
+ game_pb_loading.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.GONE);
+ handler.postDelayed(runnable, 1000);
+ }
+ }
+ }
+
+ //Fragment界面切换事件
+ public void onEventMainThread(EBUISwitch busNine) {
+ if ("MainActivity".equals(busNine.getFrom())) {
+ if (busNine.getPosition() != 0) {
+ statusMap.clear();
+ }
+ } else if ("GameFragment".equals(busNine.getFrom())) {
+ if (busNine.getPosition() == 1) {
+ if (game_pb_loading.getVisibility() == View.VISIBLE) {
+ adapter.load();
+ }
+ }
+ }
+ }
+
+ private GameEntity getEntityByLocation(int position) {
+ List list = adapter.getSubectList();
+ int offset = 0;
+ for (int i = 0; i < list.size(); i++) {
+ if (position > offset && position <= list.get(i).getData().size() + offset) {
+ return list.get(i).getData().get(position - offset - 1);
+ }
+ offset = list.get(i).getData().size() + offset + 1;
+ }
+ return null;
}
@Override
public void onResume() {
super.onResume();
+ if (isEverpause) {
+ //修改游戏下载状态
+ DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
+ for (SubjectEntity subjectEntity : adapter.getSubectList()) {
+ for (GameEntity entity :subjectEntity.getData()) {
+ entity.setEntryMap(gameMap.get(entity.getName()));
+ }
+ }
+ adapter.notifyDataSetChanged();
+ }
+ isEverpause = false;
DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
}
@@ -139,4 +285,47 @@ public class Game2Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
statusMap.clear();
DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
}
+
+ public boolean isEverpause() {
+ return isEverpause;
+ }
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ if (!isDestroy) {
+ adapter = new Game2FragmentAdapter(Game2Fragment.this, locationMap, gameMap,
+ platformMap, nameMap, recyclerview, game_swipe_refresh, reuse_no_connection,
+ statusMap, dismissEntity, game_pb_loading, true);
+ recyclerview.setAdapter(adapter);
+ }
+ }
+ };
+
+ @Override
+ public void onRefresh() {
+ handler.postDelayed(runnable, 1000);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ isDestroy = true;
+ AppController.canclePendingRequests(Game2Fragment.class);
+ EventBus.getDefault().unregister(this);
+ view = null;
+ recyclerview = null;
+ adapter = null;
+ reuse_no_connection = null;
+ game_swipe_refresh = null;
+ game_pb_loading = null;
+ locationMap = null;
+ gameMap = null;
+ platformMap = null;
+ nameMap = null;
+ statusMap = null;
+ dismissEntity = null;
+ handler = null;
+ dataWatcher = null;
+ }
}
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 4a2ddfdcb9..cd26b25217 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java
@@ -2,37 +2,42 @@ package com.gh.gamecenter.game;
import android.content.Context;
import android.content.Intent;
-import android.support.v4.app.FragmentActivity;
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.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.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.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.NewsActivity;
import com.gh.gamecenter.R;
+import com.gh.gamecenter.SubjectActivity;
import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
+import com.gh.gamecenter.db.info.GameInfo;
+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.manager.GameManager;
import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@@ -49,105 +54,195 @@ import java.util.concurrent.LinkedBlockingQueue;
* Created by khy on 2016/6/28.
*/
public class Game2FragmentAdapter extends RecyclerView.Adapter {
- private final static int ITEM_XINCE = 100;//游戏布局2
- private final static int ITEM = 101;//游戏布局1
- private final static int ITEM_HEAD = 102;//专题头部
- private final static int ITEM_PIC = 103;//大图布局
- private List subjectList = new ArrayList();
- private Context mContext;
+
+ private class ITEM_TYPE {
+ public final static int HEAD = 100;// 专题头部
+ public final static int GAME_NORMAL = 101;// 游戏布局1
+ public final static int GAME_TEST = 102;// 游戏布局2
+ public final static int IMAGE = 103;// 大图布局
+ }
+
+ private Game2Fragment fragment;
+ private Context context;
+
+ private RecyclerView recyclerview;
+ private SwipeRefreshLayout game_swipe_refresh;
+ private LinearLayout reuse_no_connection;
+ private ProgressBarCircularIndeterminate game_pb_loading;
+
+ private List subjectList;
+
private ArrayMap locationMap;
private ArrayMap> gameMap;
private ArrayMap> platformMap;
private ArrayMap nameMap;
private ArrayMap statusMap;
+
private DismissEntity dismissEntity;
- public Game2FragmentAdapter(FragmentActivity activity, Game2Fragment game2Fragment, ArrayMap locationMap
- , ArrayMap> gameMap, ArrayMap> platformMap
- , ArrayMap nameMap, ArrayMap statusMap, boolean b, DismissEntity dismissEntity) {
- this.mContext = activity;
- this.locationMap = locationMap;
- this.gameMap = gameMap;
- this.platformMap = platformMap;
- this.nameMap = nameMap;
- this.statusMap = statusMap;
- this.dismissEntity = dismissEntity;
- LoadData2();
+ public Game2FragmentAdapter(Game2Fragment fragment,
+ ArrayMap lMap,
+ ArrayMap> gMap,
+ ArrayMap> pMap,
+ ArrayMap nMap,
+ RecyclerView rView,
+ SwipeRefreshLayout refreshLayout,
+ LinearLayout linearLayout,
+ ArrayMap sMap,
+ DismissEntity dEntity,
+ ProgressBarCircularIndeterminate pbLoading,
+ boolean isLoad) {
+ this.fragment = fragment;
+ this.context = fragment.getActivity();
+ locationMap = lMap;
+ gameMap = gMap;
+ platformMap = pMap;
+ nameMap = nMap;
+ recyclerview = rView;
+ game_swipe_refresh = refreshLayout;
+ reuse_no_connection = linearLayout;
+ game_pb_loading = pbLoading;
+ statusMap = sMap;
+ dismissEntity = dEntity;
+
+ subjectList = new ArrayList();
+
+ if (isLoad) {
+ load();
+ }
}
- private void LoadData2() {
- JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
- TimestampUtils.addTimestamp(Config.HOST + "v1d50/game/tuijian",
- Constants.GAME_CD), new Response.Listener() {
-
+ public void load() {
+ new Thread(new Runnable() {
@Override
- public void onResponse(JSONArray response) {
- Type listType = new TypeToken>() {
- }.getType();
- Gson gson = new Gson();
- subjectList = gson.fromJson(response.toString(), listType);
- notifyDataSetChanged();
- initLocationMap();
+ public void run() {
+ initSubjectList();
}
+ }).start();
+ }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
+ private void initSubjectList() {
+ JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(Config.HOST + "v1d50/game/tuijian",
+ 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);
+ if (list != null && !list.isEmpty()) {
+ subjectList = list;
+ GameManager manager = new GameManager(context);
+ for (SubjectEntity subjectEntity : subjectList) {
+ for (GameEntity gameEntity : subjectEntity.getData()) {
+ gameEntity.setEntryMap(gameMap.get(gameEntity.getName()));
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ manager.addOrUpdate(new GameInfo(apkEntity.getPackageName(),
+ gameEntity.getId(), gameEntity.getName()));
+ }
+ }
+ }
- });
- AppController.addToRequestQueue(request, GameFragment.class);
+ if (!fragment.isHidden() && !fragment.isEverpause()) {
+ notifyItemRangeInserted(0, getItemCount());
+ } else {
+ notifyDataSetChanged();
+ }
+
+ initLocationMap();
+ }
+
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
+ game_swipe_refresh.setRefreshing(false);
+ }
+
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
+ game_pb_loading.setVisibility(View.GONE);
+ }
+
+ }
+ },
+ new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ // 无网络连接和访问超时
+ if (error.getClass().equals(NoConnectionError.class)
+ || error.getClass().equals(TimeoutError.class)) {
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
+ game_swipe_refresh.setRefreshing(false);
+ }
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
+ game_pb_loading.setVisibility(View.GONE);
+ }
+ Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
+ recyclerview.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.VISIBLE);
+ }
+ }
+ });
+ AppController.addToRequestQueue(request, Game1Fragment.class);
}
private void initLocationMap() {
locationMap.clear();
- int count = 0;
if (!subjectList.isEmpty()) {
- SubjectEntity subjectEntity;
- for (int i = 0, size = subjectList.size(); i < size; i++) {
- subjectEntity = subjectList.get(i);
- count += 1 + subjectEntity.getData().size();
- }
+ int count = getItemCount();
+ GameEntity gameEntity;
+ int offset;
for (int position = 0; position < count; position++) {
- int offset = 0;
- GameEntity gameEntity;
+ offset = 0;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- locationMap.put(gameEntity.getName(), position);
+ if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
+ locationMap.put(gameEntity.getName(), position);
+ for (ApkEntity apkEntity : gameEntity.getApk()) {
+ nameMap.put(apkEntity.getPackageName(), gameEntity.getName());
+ }
+ }
break;
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
-
}
+ Utils.log(locationMap.toString());
+ }
+ @Override
+ public int getItemCount() {
+ int subjectSize = 0;
+ if (!subjectList.isEmpty()) {
+ for (int i = 0; i < subjectList.size(); i++) {
+ SubjectEntity subjectEntity = subjectList.get(i);
+ subjectSize += subjectEntity.getData().size() + 1;
+ }
+ }
+ return subjectSize;
}
@Override
public int getItemViewType(int position) {
- GameEntity gameEntity;
if (!subjectList.isEmpty()) {
int offset = 0;
+ GameEntity gameEntity;
for (int i = 0; i < subjectList.size(); i++) {
if (position == offset) {
- return ITEM_HEAD;
+ return ITEM_TYPE.HEAD;
}
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
gameEntity = subjectList.get(i).getData().get(position - offset - 1);
if (!TextUtils.isEmpty(gameEntity.getImage())) {
- return ITEM_PIC;
+ return ITEM_TYPE.IMAGE;
}
if (gameEntity.getTest() != null) {
- return ITEM_XINCE;
+ return ITEM_TYPE.GAME_TEST;
}
- return ITEM;
+ return ITEM_TYPE.GAME_NORMAL;
}
- offset = offset + subjectList.get(i).getData().size() + 1;
+ offset = subjectList.get(i).getData().size() + offset + 1;
}
}
return -1;
@@ -155,118 +250,151 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) {
- gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) {
- initGameNormal(viewHolder, gameEntity, position - offset - 1, subjectList.get(i).getOrder());
- break;
- }
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
-
+ initGameNormalViewHolder((GameNormalViewHolder) holder, position);
} else if (holder instanceof GameTestViewHolder) {
- GameTestViewHolder viewHolder = (GameTestViewHolder) holder;
- int offset = 0;
- GameEntity gameEntity;
- for (int i = 0, size = subjectList.size(); i < size; i++) {
- if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
- gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- if (gameEntity.getTest() != null) {
- initGameTest(viewHolder, gameEntity, position - offset - 1, subjectList.get(i).getOrder());
- break;
- }
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
+ initGameTestViewHolder((GameTestViewHolder) holder, position);
} else if (holder instanceof GameImageViewHolder) {
- GameImageViewHolder viewHolder = (GameImageViewHolder) holder;
- int offset = 0;
- GameEntity gameEntity;
- for (int i = 0, size = subjectList.size(); i < size; i++) {
- if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
- gameEntity = subjectList.get(i).getData().get(position - offset - 1);
- if (!TextUtils.isEmpty(gameEntity.getImage())) {
- final GameEntity entity = gameEntity;
- ImageUtils.getInstance(mContext).display(entity.getImage(), viewHolder.image, -1);
- viewHolder.image.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- if ("game".equals(entity.getType())) {
- Intent intent = new Intent(mContext, GameDetailsActivity.class);
- intent.putExtra("gameId", entity.getId());
- intent.putExtra("entrance", "插件-大图");
- mContext.startActivity(intent);
- } else if ("news".equals(entity.getType())) {
- Intent intent = new Intent(mContext, NewsActivity.class);
- intent.putExtra("newsId", entity.getId());
- intent.putExtra("entrance", "插件-大图");
- mContext.startActivity(intent);
- }
-
- }
- });
- break;
- }
- }
- offset = subjectList.get(i).getData().size() + offset + 1;
- }
+ initGameImageViewHolder((GameImageViewHolder) holder, position);
}
-
}
- private void initGameTest(GameTestViewHolder holder, GameEntity gameEntity, int i, boolean order) {
+ private void initGameHeadViewHolder(GameHeadViewHolder holder, int position) {
+ int offset = 0;
+ for (int i = 0; i < subjectList.size(); i++) {
+ if (position == offset) {
+ holder.thumb.setVisibility(View.GONE);
+ holder.title.setText(subjectList.get(i).getName());
+ final int ii = i;
+ holder.link.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(context, SubjectActivity.class);
+ intent.putExtra("id", subjectList.get(ii).getId());
+ intent.putExtra("name", subjectList.get(ii).getName());
+ context.startActivity(intent);
+ }
+ });
+ break;
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
+ int offset = 0;
+ GameEntity gameEntity;
+ for (int i = 0, size = subjectList.size(); i < size; i++) {
+ if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
+ gameEntity = subjectList.get(i).getData().get(position - offset - 1);
+ if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) {
+ int order = position - offset - 1;
+ if (subjectList.get(i).getData().get(0).getImage() != null) {
+ order--;
+ }
+ initGameNormal(holder, gameEntity, order, subjectList.get(i).getOrder());
+ break;
+ }
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ private void initGameNormal(GameNormalViewHolder holder, GameEntity entity, int i, boolean order) {
+ if (order) {
+ holder.home1_game_order.setVisibility(View.VISIBLE);
+ holder.home1_game_order.setText((i + 1) + "");
+ } else {
+ holder.home1_game_order.setVisibility(View.GONE);
+ }
+ ImageUtils.getInstance(context).display(entity.getIcon(), holder.gameThumb);
+ holder.gameNameAndSize.setText(entity.getName());
+ if (entity.getApk() == null || entity.getApk().isEmpty()) {
+ holder.gameDes.setText(entity.getBrief());
+ } else {
+ holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief());
+ }
+ GameViewUtils.setLabelList(context, holder.labelList, entity.getTag());
+
+ final GameEntity gameInfoEntity = entity;
+
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ AppController.put("GameEntity", gameInfoEntity);
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("entrance", "游戏-推荐");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ }
+ });
+ DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
+ holder.download_speed, holder.download_percentage, entity, i,
+ Game2FragmentAdapter.this,
+ statusMap, platformMap, "游戏-推荐",
+ dismissEntity, "主页:" + entity.getName());
+
+ DownloadItemUtils.updateItem(context, holder.labelList,
+ holder.game_progressbar, holder.game_ll_info, holder.download_speed,
+ holder.download_percentage, holder.downloadBtn, entity, platformMap,
+ statusMap);
+ }
+
+ private void initGameTestViewHolder(GameTestViewHolder holder, int position) {
+ int offset = 0;
+ GameEntity gameEntity;
+ for (int i = 0, size = subjectList.size(); i < size; i++) {
+ if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
+ gameEntity = subjectList.get(i).getData().get(position - offset - 1);
+ if (gameEntity.getTest() != null) {
+ int order = position - offset - 1;
+ if (subjectList.get(i).getData().get(0).getImage() != null) {
+ order--;
+ }
+ initGameTest(holder, gameEntity, order, subjectList.get(i).getOrder());
+ break;
+ }
+ }
+ offset = subjectList.get(i).getData().size() + offset + 1;
+ }
+ }
+
+ private void initGameTest(GameTestViewHolder holder, final GameEntity gameEntity, int i, boolean order) {
if (order) {
holder.home2_game_order.setVisibility(View.VISIBLE);
- holder.home2_game_order.setText(i + "");
+ holder.home2_game_order.setText((i + 1) + "");
} else {
holder.home2_game_order.setVisibility(View.GONE);
}
- ImageUtils.getInstance(mContext).display(gameEntity.getIcon(),
- holder.gameThumb);
+ 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(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief());
+ holder.gameDes.setText(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief());
}
holder.gameTestType.setText(gameEntity.getTest().getType());
if (gameEntity.getTest().getStart() == 0) {
@@ -275,28 +403,30 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter endTime) {
@@ -305,69 +435,62 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) {
+ gameEntity = subjectList.get(i).getData().get(position - offset - 1);
+ if (!TextUtils.isEmpty(gameEntity.getImage())) {
+ final GameEntity entity = gameEntity;
+ ImageUtils.getInstance(context).display(entity.getImage(), holder.image, -1);
+ holder.image.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ if ("game".equals(entity.getType())) {
+ Intent intent = new Intent(context, GameDetailsActivity.class);
+ intent.putExtra("gameId", entity.getId());
+ intent.putExtra("entrance", "插件-大图");
+ context.startActivity(intent);
+ } else if ("news".equals(entity.getType())) {
+ Intent intent = new Intent(context, NewsActivity.class);
+ intent.putExtra("newsId", entity.getId());
+ intent.putExtra("entrance", "插件-大图");
+ context.startActivity(intent);
+ } else if ("column".equals(entity.getType())) {
+ Intent intent = new Intent(context, SubjectActivity.class);
+ intent.putExtra("id", entity.getId());
+// intent.putExtra("name", entity.getName());
+ context.startActivity(intent);
+ }
+
+ }
+ });
+ break;
+ }
}
+ offset = subjectList.get(i).getData().size() + offset + 1;
}
- return dataSize;
}
-
- public List getList() {
+ public List getSubectList() {
return subjectList;
}
diff --git a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java
index e93b1f365d..e1f1f728f4 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java
@@ -34,9 +34,7 @@ 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.concurrent.LinkedBlockingQueue;
import de.greenrobot.event.EventBus;
@@ -102,7 +100,7 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
Integer location = locationMap.get(downloadEntry.getName());
if (location != null) {
- int index = location.intValue();
+ int index = location;
GameEntity detailedEntity = adapter.getList().get(index);
if (detailedEntity != null) {
@@ -134,20 +132,9 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
isEverpause = false;
isDestroy = false;
- game_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.game_swipe_refresh);
- game_swipe_refresh.setColorSchemeResources(R.color.theme_colors);
- game_swipe_refresh.setOnRefreshListener(this);
-
- recyclerview = (RecyclerView) view.findViewById(R.id.game_list);
- recyclerview.setHasFixedSize(true);
- layoutManager = new LinearLayoutManager(getActivity());
- recyclerview.setLayoutManager(layoutManager);
-
// 黄壮华 添加 初始化游戏状态 修改2015/8/21
DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
- game_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading);
-
reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
@@ -160,6 +147,16 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
}
});
+ game_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.game_swipe_refresh);
+ game_swipe_refresh.setColorSchemeResources(R.color.theme_colors);
+ game_swipe_refresh.setOnRefreshListener(this);
+
+ game_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading);
+
+ recyclerview = (RecyclerView) view.findViewById(R.id.game_list);
+ recyclerview.setHasFixedSize(true);
+ layoutManager = new LinearLayoutManager(getActivity());
+ recyclerview.setLayoutManager(layoutManager);
// 黄壮华 传递引用 修改2015/8/15
adapter = new Game3FragmentAdapter(Game3Fragment.this, locationMap,
gameMap, platformMap, nameMap, recyclerview,
@@ -196,6 +193,7 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
return view;
}
+ //下载被删除事件
public void onEventMainThread(EBDownloadDelete busThree) {
LinkedBlockingQueue queue = platformMap.get(busThree.getName());
if (queue != null) {
@@ -203,9 +201,8 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
platformMap.put(busThree.getName(), queue);
}
Integer location = locationMap.get(busThree.getName());
-
if (location != null) {
- int index = location.intValue();
+ int index = location;
GameEntity detailedEntity = adapter.getList().get(index);
if (TextUtils.isEmpty(busThree.getPlatform())) {
@@ -217,12 +214,14 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
}
}
+ //版本选择框消失事件
public void onEventMainThread(EBPWDismiss dismiss) {
if (dismissEntity != null) {
dismissEntity.setShow(false);
}
}
+ //安装、卸载事件
public void onEventMainThread(EBPackage busFour) {
String name = nameMap.get(busFour.getPackageName());
if (name != null) {
@@ -242,12 +241,13 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
}
}
+ //连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (reuse_no_connection.getVisibility() == View.VISIBLE) {
game_swipe_refresh.setRefreshing(true);
recyclerview.setVisibility(View.VISIBLE);
- game_pb_loading.setVisibility(View.VISIBLE);
+ game_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
} else if (adapter.isNetworkError()) {
@@ -260,12 +260,15 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
public void onEventMainThread(EBUISwitch busNine) {
if ("MainActivity".equals(busNine.getFrom())) {
- if (busNine.getPosition() != 1) {
+ if (busNine.getPosition() != 0) {
statusMap.clear();
}
- } else if ("GameFragment".equals(busNine.getFrom()) && busNine.getPosition() == 2
- && game_pb_loading.getVisibility() == View.VISIBLE) {
- adapter.load();
+ } else if ("GameFragment".equals(busNine.getFrom())) {
+ if (busNine.getPosition() == 2) {
+ if (game_pb_loading.getVisibility() == View.VISIBLE) {
+ adapter.load();
+ }
+ }
}
}
@@ -279,12 +282,10 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
if (isEverpause) {
// 黄壮华 添加 初始化游戏状态 修改2015/8/20
DownloadItemUtils.initializeGameMap(getActivity(), gameMap);
- List entities = new ArrayList();
for (GameEntity entity : adapter.getList()) {
entity.setEntryMap(gameMap.get(entity.getName()));
- entities.add(entity);
}
- adapter.setList(entities);
+ adapter.notifyDataSetChanged();
}
isEverpause = false;
DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
@@ -301,11 +302,13 @@ public class Game3Fragment extends Fragment implements OnRefreshListener {
Runnable runnable = new Runnable() {
@Override
public void run() {
- adapter = new Game3FragmentAdapter(Game3Fragment.this,
- locationMap, gameMap, platformMap, nameMap, recyclerview,
- game_swipe_refresh, reuse_no_connection, statusMap, dismissEntity,
- game_pb_loading, true);
- recyclerview.setAdapter(adapter);
+ if (!isDestroy) {
+ adapter = new Game3FragmentAdapter(Game3Fragment.this,
+ locationMap, gameMap, platformMap, nameMap, 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/Game3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java
index 6cd5308d20..07b2bd70fc 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java
@@ -68,9 +68,8 @@ import java.util.concurrent.LinkedBlockingQueue;
public class Game3FragmentAdapter extends
RecyclerView.Adapter {
- private Context context;
-
private Game3Fragment fragment;
+ private Context context;
private RecyclerView recyclerView;
private SwipeRefreshLayout game_swipe_refresh;
@@ -88,7 +87,6 @@ public class Game3FragmentAdapter extends
private ArrayMap> gameMap;
private ArrayMap> platformMap;
private ArrayMap nameMap;
-
private ArrayMap statusMap;
private DismissEntity dismissEntity;
@@ -106,14 +104,13 @@ public class Game3FragmentAdapter extends
ProgressBarCircularIndeterminate pbLoading,
boolean isLoad) {
- // 黄壮华 获取引用 修改2015/8/15
+ this.fragment = fment;
+ this.context = fment.getActivity();
locationMap = lMap;
gameMap = gMap;
platformMap = pMap;
nameMap = nMap;
-
statusMap = sMap;
-
recyclerView = rView;
game_swipe_refresh = swipeRefreshLayout;
reuse_no_connection = linearLayout;
@@ -121,9 +118,6 @@ public class Game3FragmentAdapter extends
dismissEntity = dEntity;
- fragment = fment;
- context = fment.getActivity();
-
isRemove = false;
isLoading = false;
isNetworkError = false;
@@ -136,16 +130,14 @@ public class Game3FragmentAdapter extends
}
public void load() {
- new Thread(runnable){}.start();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ addList(0);
+ }
+ }){}.start();
}
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- addList(0);
- }
- };
-
public void addList(final int offset) {
if (isLoading) {
return;
@@ -173,11 +165,13 @@ public class Game3FragmentAdapter extends
if (error.getClass().equals(NoConnectionError.class)
|| error.getClass().equals(TimeoutError.class)) {
if (offset == 0) {
- if (game_swipe_refresh.isRefreshing()) {
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
game_swipe_refresh.setRefreshing(false);
}
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
+ game_pb_loading.setVisibility(View.GONE);
+ }
recyclerView.setVisibility(View.GONE);
- game_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.VISIBLE);
} else {
Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show();
@@ -188,7 +182,7 @@ public class Game3FragmentAdapter extends
}
});
- AppController.addToRequestQueue(request, GameFragment.class);
+ AppController.addToRequestQueue(request, Game3Fragment.class);
}
private void processingData(JSONArray response, int offset) {
@@ -228,7 +222,7 @@ public class Game3FragmentAdapter extends
notifyDataSetChanged();
}
- if (offset == 0 && game_swipe_refresh.isRefreshing()) {
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
game_swipe_refresh.setRefreshing(false);
}
@@ -293,8 +287,7 @@ public class Game3FragmentAdapter extends
private void initGameNormalViewHolder(GameNormalViewHolder holder, final GameEntity entity, int position) {
entity.getApk().get(0).setPlatform("local_plugin");
- ImageUtils.getInstance(context).display(entity.getIcon(),
- holder.gameThumb);
+ ImageUtils.getInstance(context).display(entity.getIcon(), holder.gameThumb);
holder.gameNameAndSize.setText(entity.getName());
if (entity.getApk() == null || entity.getApk().isEmpty()) {
holder.gameDes.setText(entity.getBrief());
@@ -364,11 +357,6 @@ public class Game3FragmentAdapter extends
return list;
}
- public void setList(List list) {
- this.list = list;
- notifyDataSetChanged();
- }
-
public boolean isRemove() {
return isRemove;
}
diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragment.java b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java
index 0aa21becbd..97e262baa1 100644
--- a/app/src/main/java/com/gh/gamecenter/game/GameFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java
@@ -30,7 +30,6 @@ import android.widget.TextView;
import com.gh.common.constant.Config;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.Utils;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.ConcernActivity;
import com.gh.gamecenter.DownloadManagerActivity;
@@ -59,15 +58,31 @@ import de.greenrobot.event.EventBus;
public class GameFragment extends Fragment implements OnClickListener,
OnPageChangeListener {
- private View view, slideLine;
+ private View view;
+ private View slideLine;
private ViewPager viewPager;
- private TextView jingpinText, zuixinText, danjiText, downloadHint, searchHint;
+ private TextView jingpinText;
+ private TextView zuixinText;
+ private TextView danjiText;
+ private TextView downloadHint;
+ private TextView searchHint;
+
+ private PopupWindow popWindow;
+
private RelativeLayout.LayoutParams rparams;
+ private String hint;
+
private int width;
private int currentItem;
- private String hint;
+ private Handler handler = new Handler();
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt("currentItem", currentItem);
+ }
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -79,15 +94,12 @@ public class GameFragment extends Fragment implements OnClickListener,
SharedPreferences sp = getActivity().getSharedPreferences(
Config.PREFERENCE, Context.MODE_PRIVATE);
- LinearLayout home_actionbar = (LinearLayout) view
- .findViewById(R.id.home_actionbar);
- LayoutParams params = new LayoutParams(
- LayoutParams.MATCH_PARENT, sp.getInt("actionbar_height",
- DisplayUtils.dip2px(getActivity(), 48)));
+ LinearLayout home_actionbar = (LinearLayout) view.findViewById(R.id.home_actionbar);
+ LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
+ sp.getInt("actionbar_height", DisplayUtils.dip2px(getActivity(), 48)));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- int top = DisplayUtils.getInternalDimensionSize(getResources(),
- "status_bar_height");
+ int top = DisplayUtils.getInternalDimensionSize(getResources(), "status_bar_height");
home_actionbar.setPadding(0, top, 0, 0);
params.height += top;
}
@@ -96,9 +108,6 @@ public class GameFragment extends Fragment implements OnClickListener,
initActionBar();
- viewPager = (ViewPager) view.findViewById(R.id.pager);
-
- slideLine = view.findViewById(R.id.slide_line);
jingpinText = (TextView) view.findViewById(R.id.jingpin_text);
zuixinText = (TextView) view.findViewById(R.id.zuixin_text);
danjiText = (TextView) view.findViewById(R.id.danji_text);
@@ -107,24 +116,39 @@ public class GameFragment extends Fragment implements OnClickListener,
zuixinText.setOnClickListener(this);
danjiText.setOnClickListener(this);
+ slideLine = view.findViewById(R.id.slide_line);
DisplayMetrics outMetrics = new DisplayMetrics();
- getActivity().getWindowManager().getDefaultDisplay()
- .getMetrics(outMetrics);
+ getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
width = outMetrics.widthPixels / 3;
rparams = new RelativeLayout.LayoutParams(width / 2,
DisplayUtils.dip2px(getActivity(), 2));
rparams.addRule(RelativeLayout.BELOW, R.id.plugin_ll_top);
+ viewPager = (ViewPager) view.findViewById(R.id.pager);
viewPager.setAdapter(new FragmentAdapter(getChildFragmentManager()));
viewPager.addOnPageChangeListener(this);
- rparams.leftMargin = width / 4;
- slideLine.setLayoutParams(rparams);
- jingpinText.setClickable(false);
- zuixinText.setClickable(true);
- danjiText.setClickable(true);
+ currentItem = 0;
+ if (savedInstanceState != null) {
+ currentItem = savedInstanceState.getInt("currentItem");
+ }
+ viewPager.setCurrentItem(currentItem);
- currentItem = viewPager.getCurrentItem();
+ rparams.leftMargin = width * currentItem + width / 4;
+ slideLine.setLayoutParams(rparams);
+ if (currentItem == 0) {
+ jingpinText.setClickable(false);
+ zuixinText.setClickable(true);
+ danjiText.setClickable(true);
+ } else if (currentItem == 1) {
+ jingpinText.setClickable(true);
+ zuixinText.setClickable(false);
+ danjiText.setClickable(true);
+ } else {
+ jingpinText.setClickable(true);
+ zuixinText.setClickable(true);
+ danjiText.setClickable(false);
+ }
EventBus.getDefault().register(this);
@@ -136,7 +160,13 @@ public class GameFragment extends Fragment implements OnClickListener,
}, 100);
}
- private Handler handler = new Handler();
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ if (container != null) {
+ container.removeView(view);
+ }
+ return view;
+ }
private void initActionBar() {
view.findViewById(R.id.actionbar_rl_download).setOnClickListener(this);
@@ -144,17 +174,14 @@ public class GameFragment extends Fragment implements OnClickListener,
view.findViewById(R.id.actionbar_iv_search).setOnClickListener(this);
if (Config.isShow) {
- view.findViewById(R.id.actionbar_rl_download).setVisibility(
- View.VISIBLE);
+ view.findViewById(R.id.actionbar_rl_download).setVisibility(View.VISIBLE);
} else {
- view.findViewById(R.id.actionbar_rl_download).setVisibility(
- View.GONE);
+ view.findViewById(R.id.actionbar_rl_download).setVisibility(View.GONE);
}
downloadHint = (TextView) view.findViewById(R.id.action_tip);
int updateSize = PackageManager.getUpdateListSize();
- int downloadSize = DownloadManager.getInstance(getActivity()).getAll()
- .size();
+ int downloadSize = DownloadManager.getInstance(getActivity()).getAll().size();
if (downloadSize != 0) {
downloadHint.setVisibility(View.VISIBLE);
downloadHint.setText(downloadSize + "");
@@ -194,24 +221,14 @@ public class GameFragment extends Fragment implements OnClickListener,
}
}
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- if (container != null) {
- container.removeView(view);
- }
- return view;
- }
-
private class FragmentAdapter extends FragmentPagerAdapter {
public FragmentAdapter(FragmentManager fm) {
super(fm);
-
}
@Override
public Fragment getItem(int position) {
-
if (position == 0) {
return new Game1Fragment();
} else if (position == 1) {
@@ -231,13 +248,7 @@ public class GameFragment extends Fragment implements OnClickListener,
@Override
public void onClick(View v) {
final int id = v.getId();
- if (id == R.id.jingpin_text) {
- viewPager.setCurrentItem(0);
- } else if (id == R.id.zuixin_text) {
- viewPager.setCurrentItem(1);
- } else if (id == R.id.danji_text) {
- viewPager.setCurrentItem(2);
- } else if (id == R.id.actionbar_notification) {
+ if (id == R.id.actionbar_notification) {
DataUtils.onEvent(getActivity(), "主页", "关注图标");
Map map = new HashMap();
@@ -301,68 +312,34 @@ public class GameFragment extends Fragment implements OnClickListener,
popUpOverflow(v);
} else if (id == R.id.menu_rl_set) {
- v.setVisibility(View.GONE);
+ popWindow.dismiss();
startActivity(new Intent(getActivity(), SettingActivity.class));
- }
- }
-
- public void updateRedDot(int type) {
- int downloadSize = DownloadManager.getInstance(getActivity()).getAll()
- .size();
- if (type == 1 && downloadSize == 0) {
- downloadHint.setVisibility(View.VISIBLE);
- downloadHint.setText((downloadSize + type) + "");
- int width = DisplayUtils.dip2px(getActivity(), 12);
- RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(
- width, width);
- rparams.topMargin = DisplayUtils.dip2px(getActivity(), 8);
- rparams.rightMargin = DisplayUtils.dip2px(getActivity(), 2);
- rparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- downloadHint.setLayoutParams(rparams);
- } else if (type == -1 && (downloadSize == 0 || downloadSize == 1)) {
- int updateSize = PackageManager.getUpdateList().size();
- if (updateSize != 0) {
- downloadHint.setVisibility(View.VISIBLE);
- downloadHint.setText("");
- int width = DisplayUtils.dip2px(getActivity(), 10);
- RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(
- width, width);
- rparams.topMargin = DisplayUtils.dip2px(getActivity(), 8);
- rparams.rightMargin = DisplayUtils.dip2px(getActivity(), 3);
- rparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- downloadHint.setLayoutParams(rparams);
- } else {
- downloadHint.setVisibility(View.GONE);
- }
- } else if (downloadSize != 0) {
- downloadHint.setVisibility(View.VISIBLE);
- downloadHint.setText((downloadSize + type) + "");
+ } else if (id == R.id.jingpin_text) {
+ viewPager.setCurrentItem(0);
+ } else if (id == R.id.zuixin_text) {
+ viewPager.setCurrentItem(1);
+ } else if (id == R.id.danji_text) {
+ viewPager.setCurrentItem(2);
}
}
private void popUpOverflow(View view) {
Rect frame = new Rect();
- getActivity().getWindow().getDecorView()
- .getWindowVisibleDisplayFrame(frame);
+ getActivity().getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int xOffset = DisplayUtils.dip2px(getActivity(), 5);
- int yOffset = frame.top + DisplayUtils.dip2px(getActivity(), 48)
- + xOffset;
+ int yOffset = frame.top + DisplayUtils.dip2px(getActivity(), 48) + xOffset;
- View popView = View.inflate(getActivity(), R.layout.menu_popwindow,
- null);
+ View popView = View.inflate(getActivity(), R.layout.menu_popwindow, null);
popView.findViewById(R.id.menu_rl_set).setOnClickListener(this);
- PopupWindow popWindow = new PopupWindow(popView,
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
+ popWindow = new PopupWindow(popView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
popWindow.setOutsideTouchable(true);
popWindow.setAnimationStyle(android.R.style.Animation_Dialog);
- popWindow.setBackgroundDrawable(getResources().getDrawable(
- R.drawable.shape));
+ popWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape));
- popWindow.showAtLocation(view, Gravity.TOP | Gravity.RIGHT, xOffset,
- yOffset);
+ popWindow.showAtLocation(view, Gravity.TOP | Gravity.RIGHT, xOffset, yOffset);
}
@@ -401,7 +378,6 @@ public class GameFragment extends Fragment implements OnClickListener,
} else {
if (currentItem != viewPager.getCurrentItem()) {
currentItem = viewPager.getCurrentItem();
- Utils.log("currentItem = " + currentItem);
EventBus.getDefault().post(new EBUISwitch("GameFragment", currentItem));
}
}
@@ -414,7 +390,7 @@ public class GameFragment extends Fragment implements OnClickListener,
public void onEventMainThread(EBUISwitch busNine) {
if ("MainActivity".equals(busNine.getFrom())) {
- if (busNine.getPosition() == 1) {
+ if (busNine.getPosition() == 0) {
EventBus.getDefault().post(
new EBUISwitch("GameFragment", viewPager.getCurrentItem()));
}
@@ -436,21 +412,49 @@ public class GameFragment extends Fragment implements OnClickListener,
updateRedDot(busEight.getType());
}
+ public void updateRedDot(int type) {
+ int downloadSize = DownloadManager.getInstance(getActivity()).getAll().size();
+ if (type == 1 && downloadSize == 0) {
+ downloadHint.setVisibility(View.VISIBLE);
+ downloadHint.setText((downloadSize + type) + "");
+ int width = DisplayUtils.dip2px(getActivity(), 12);
+ RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(width, width);
+ rparams.topMargin = DisplayUtils.dip2px(getActivity(), 8);
+ rparams.rightMargin = DisplayUtils.dip2px(getActivity(), 2);
+ rparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ downloadHint.setLayoutParams(rparams);
+ } else if (type == -1 && (downloadSize == 0 || downloadSize == 1)) {
+ int updateSize = PackageManager.getUpdateList().size();
+ if (updateSize != 0) {
+ downloadHint.setVisibility(View.VISIBLE);
+ downloadHint.setText("");
+ int width = DisplayUtils.dip2px(getActivity(), 10);
+ RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(width, width);
+ rparams.topMargin = DisplayUtils.dip2px(getActivity(), 8);
+ rparams.rightMargin = DisplayUtils.dip2px(getActivity(), 3);
+ rparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ downloadHint.setLayoutParams(rparams);
+ } else {
+ downloadHint.setVisibility(View.GONE);
+ }
+ } else if (downloadSize != 0) {
+ downloadHint.setVisibility(View.VISIBLE);
+ downloadHint.setText((downloadSize + type) + "");
+ }
+ }
+
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
- FragmentTransaction transaction = getChildFragmentManager()
- .beginTransaction();
+ FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
List list = getChildFragmentManager().getFragments();
if (list != null) {
if (hidden) {
- for (Fragment fragment : getChildFragmentManager()
- .getFragments()) {
+ for (Fragment fragment : getChildFragmentManager().getFragments()) {
transaction.hide(fragment);
}
} else {
- for (Fragment fragment : getChildFragmentManager()
- .getFragments()) {
+ for (Fragment fragment : getChildFragmentManager().getFragments()) {
transaction.show(fragment);
}
}
@@ -472,6 +476,7 @@ public class GameFragment extends Fragment implements OnClickListener,
searchHint = null;
rparams = null;
hint = null;
+ handler = null;
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java
index 1cf1ac7a33..8f7f1aab12 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java
@@ -15,6 +15,10 @@ import android.widget.LinearLayout;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
+import com.gh.gamecenter.eventbus.EBNetworkState;
+import com.gh.gamecenter.eventbus.EBUISwitch;
+
+import de.greenrobot.event.EventBus;
/**
* Created by khy on 2016/6/29.
@@ -22,7 +26,6 @@ import com.gh.gamecenter.R;
public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
private View view;
-
private SwipeRefreshLayout original_swipe_refresh;
private RecyclerView original_list;
private LinearLayoutManager layoutManager;
@@ -31,6 +34,7 @@ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
private LinearLayout reuse_no_connection;
private boolean isDestroy;
+ private boolean isEverpause;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -39,14 +43,15 @@ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
view = View.inflate(getActivity(), R.layout.fragment_original, null);
isDestroy = false;
+ isEverpause = false;
original_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.original_swipe_refresh);
- original_list = (RecyclerView) view.findViewById(R.id.original_list);
original_swipe_refresh.setColorSchemeResources(R.color.theme_colors);
- reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
- original_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.original_pb_loading);
original_swipe_refresh.setOnRefreshListener(this);
+ original_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.original_pb_loading);
+
+ reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -54,14 +59,16 @@ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
original_list.setVisibility(View.VISIBLE);
original_pb_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
+ handler.postDelayed(runnable, 1000);
}
});
+ original_list = (RecyclerView) view.findViewById(R.id.original_list);
original_list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
original_list.setLayoutManager(layoutManager);
- adapter = new News1FragmentAdapter(getActivity(), original_list, original_swipe_refresh,
- original_pb_loading, reuse_no_connection, true);
+ adapter = new News1FragmentAdapter(News1Fragment.this, original_list, original_swipe_refresh,
+ original_pb_loading, reuse_no_connection, false);
original_list.setAdapter(adapter);
original_list.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
original_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -78,6 +85,7 @@ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
}
});
+ EventBus.getDefault().register(this);
}
@Nullable
@@ -90,20 +98,76 @@ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr
return view;
}
+ //连接上网络事件
+ public void onEventMainThread(EBNetworkState busNetworkState) {
+ if (busNetworkState.isNetworkConnected()) {
+ if (reuse_no_connection.getVisibility() == View.VISIBLE) {
+ original_swipe_refresh.setRefreshing(true);
+ original_list.setVisibility(View.VISIBLE);
+ original_pb_loading.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.GONE);
+ handler.postDelayed(runnable, 1000);
+ }
+ }
+ }
+
+ //Fragment界面切换事件
+ public void onEventMainThread(EBUISwitch busNine) {
+ if ("NewsFragment".equals(busNine.getFrom())) {
+ if (busNine.getPosition() == 0) {
+ if (original_pb_loading.getVisibility() == View.VISIBLE) {
+ adapter.load();
+ }
+ }
+ }
+ }
+
private Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
- adapter = new News1FragmentAdapter(getActivity(), original_list, original_swipe_refresh,
- original_pb_loading, reuse_no_connection, true);
- original_list.setAdapter(adapter);
+ if (!isDestroy) {
+ adapter = new News1FragmentAdapter(News1Fragment.this, original_list, original_swipe_refresh,
+ original_pb_loading, reuse_no_connection, true);
+ original_list.setAdapter(adapter);
+ }
}
};
-
@Override
public void onRefresh() {
handler.postDelayed(runnable, 1000);
}
+
+ public boolean isEverpause() {
+ return isEverpause;
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ isEverpause = true;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ isEverpause = false;
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ isDestroy = true;
+ EventBus.getDefault().unregister(this);
+ view = null;
+ original_swipe_refresh = null;
+ original_list = null;
+ layoutManager = null;
+ adapter = null;
+ original_pb_loading = null;
+ reuse_no_connection = null;
+ handler = null;
+ }
}
diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java
index 08c380bb97..249a5fefc4 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java
@@ -54,7 +54,15 @@ import java.util.List;
* Created by khy on 2016/6/30.
*/
public class News1FragmentAdapter extends RecyclerView.Adapter{
- private Activity activity;
+
+ private class ITEM_TYPE {
+ public static final int normal = 0;//正常布局
+ public static final int special1 = 1;//一张1:3图
+ public static final int special2 = 2;//三张4:3图
+ public static final int footer = 3;//页脚
+ }
+
+ private News1Fragment fragment;
private Context context;
private RecyclerView original_list;
private SwipeRefreshLayout game_swipe_refresh;
@@ -68,16 +76,16 @@ public class News1FragmentAdapter extends RecyclerView.Adapter() {
@Override
public void onResponse(JSONArray response) {
- Log.e("URL",url);
isLoading = false;
+
Type listType = new TypeToken>() {}.getType();
Gson gson = new Gson();
List list = gson.fromJson(response.toString(), listType);
newsList.addAll(list);
- notifyItemRangeInserted(newsList.size() - list.size(), list.size());
- if (offset == 0 && game_swipe_refresh.isRefreshing()) {
+ if (!fragment.isHidden() && !fragment.isEverpause()) {
+ notifyItemRangeInserted(newsList.size() - list.size(), list.size());
+ } else {
+ notifyDataSetChanged();
+ }
+
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
game_swipe_refresh.setRefreshing(false);
}
- if (game_pb_loading.getVisibility() == View.VISIBLE) {
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
game_pb_loading.setVisibility(View.GONE);
}
if (list.isEmpty() || (offset == 0 && list.size() < 10)) {
@@ -138,9 +148,6 @@ public class News1FragmentAdapter extends RecyclerView.Adapter {
+public class News2FragmentAdapter extends RecyclerView.Adapter{
private class ITEM_TYPE {
public static final int normal = 0;//正常布局
@@ -61,7 +60,7 @@ public class News2FragmentAdapter extends RecyclerView.Adapter>() {}.getType();
Gson gson = new Gson();
List list = gson.fromJson(response.toString(), listType);
newsList.addAll(list);
- notifyItemRangeInserted(newsList.size() - list.size(), list.size());
- if (offset == 0 && game_swipe_refresh.isRefreshing()) {
+ if (!fragment.isHidden() && !fragment.isEverpause()) {
+ notifyItemRangeInserted(newsList.size() - list.size(), list.size());
+ } else {
+ notifyDataSetChanged();
+ }
+
+ if (game_swipe_refresh != null && game_swipe_refresh.isRefreshing()) {
game_swipe_refresh.setRefreshing(false);
}
- if (game_pb_loading.getVisibility() == View.VISIBLE) {
+ if (game_pb_loading != null && game_pb_loading.getVisibility() == View.VISIBLE) {
game_pb_loading.setVisibility(View.GONE);
}
if (list.isEmpty() || (offset == 0 && list.size() < 10)) {
@@ -144,34 +146,33 @@ public class News2FragmentAdapter extends RecyclerView.Adapter getNewsList() {
return newsList;
}
-
}
diff --git a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java
index 8c265f12f2..c38853a52b 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java
@@ -13,10 +13,14 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.AppController;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBNetworkState;
+import com.gh.gamecenter.eventbus.EBUISwitch;
+
+import de.greenrobot.event.EventBus;
/**
* Created by khy on 2016/6/29.
@@ -27,7 +31,8 @@ public class News3Fragment extends Fragment {
private RecyclerView news_list;
private LinearLayoutManager layoutManager;
private News3FragmentAdapter adapter;
- private LinearLayout news_ll_loading, reuse_no_connection;
+ private ProgressBarCircularIndeterminate news_pb_loading;
+ private LinearLayout reuse_no_connection;
private TextView news_tv_label;
private RelativeLayout news_rl_label;
private RelativeLayout.LayoutParams rparams;
@@ -38,53 +43,39 @@ public class News3Fragment extends Fragment {
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- view = View.inflate(getActivity(), R.layout.fragment_news_or_raiders, null);
+ view = View.inflate(getActivity(), R.layout.fragment_news3, null);
+
+ isDestroy = false;
+
+ news_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.news_pb_loading);
- news_list = (RecyclerView) view.findViewById(R.id.news_list);
- news_ll_loading = (LinearLayout) view.findViewById(R.id.news_ll_loading);
- reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
- news_rl_label = (RelativeLayout) view.findViewById(R.id.news_rl_label);
news_tv_label = (TextView) view.findViewById(R.id.news_tv_label);
+ reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection);
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- news_list.setVisibility(View.GONE);
- news_ll_loading.setVisibility(View.VISIBLE);
+ news_list.setVisibility(View.VISIBLE);
+ news_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.GONE);
- adapter = new News3FragmentAdapter(
- getActivity(), news_list, news_ll_loading,
- reuse_no_connection, "攻略", news_rl_label, news_tv_label);
+ adapter = new News3FragmentAdapter(News3Fragment.this, news_list,
+ news_pb_loading, reuse_no_connection, news_rl_label, news_tv_label, true);
news_list.setAdapter(adapter);
}
});
+ news_rl_label = (RelativeLayout) view.findViewById(R.id.news_rl_label);
rparams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
+ news_list = (RecyclerView) view.findViewById(R.id.news_list);
news_list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager( getActivity());
news_list.setLayoutManager(layoutManager);
-
- adapter = new News3FragmentAdapter(getActivity(), news_list,
- news_ll_loading, reuse_no_connection, "攻略", news_rl_label,
- news_tv_label);
-
+ adapter = new News3FragmentAdapter(News3Fragment.this, news_list,
+ news_pb_loading, reuse_no_connection, news_rl_label, news_tv_label, false);
news_list.setAdapter(adapter);
- news_list.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
-
- if (event.getAction() == MotionEvent.ACTION_UP) {
- v.performClick();
- }
- if (news_ll_loading.getVisibility() == View.VISIBLE) {
- return true;
- } else {
- return false;
- }
- }
- });
+ news_list.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
news_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
@@ -108,8 +99,7 @@ public class News3Fragment extends Fragment {
if (position == adapter.getPosition_today() - 1
|| position == adapter.getPosition_before() - 1) {
- int buttom = layoutManager.findViewByPosition(position)
- .getBottom();
+ int buttom = layoutManager.findViewByPosition(position).getBottom();
if (buttom <= news_rl_label.getHeight()) {
rparams.topMargin = buttom - news_rl_label.getHeight();
news_rl_label.setLayoutParams(rparams);
@@ -124,19 +114,18 @@ public class News3Fragment extends Fragment {
}
@Override
- public void onScrollStateChanged(RecyclerView recyclerView,
- int newState) {
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (!isDestroy && newState == RecyclerView.SCROLL_STATE_IDLE
&& layoutManager.findLastVisibleItemPosition() + 1 == adapter.getItemCount()) {
if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) {
- adapter.addList();
+ adapter.addList(adapter.getAllListSize());
}
}
}
});
- news_list.addItemDecoration(new VerticalItemDecoration(getActivity(), 1));
+ EventBus.getDefault().register(this);
}
@Nullable
@@ -149,20 +138,31 @@ public class News3Fragment extends Fragment {
return view;
}
+ //Fragment界面切换事件
+ public void onEventMainThread(EBUISwitch busNine) {
+ if ("NewsFragment".equals(busNine.getFrom())) {
+ if (busNine.getPosition() == 2) {
+ if (news_pb_loading.getVisibility() == View.VISIBLE) {
+ adapter.load();
+ }
+ }
+ }
+ }
+
+ //连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (reuse_no_connection.getVisibility() == View.VISIBLE) {
news_list.setVisibility(View.GONE);
- news_ll_loading.setVisibility(View.VISIBLE);
+ news_pb_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
- adapter = new News3FragmentAdapter(getActivity(), news_list,
- news_ll_loading, reuse_no_connection, "攻略",
- news_rl_label, news_tv_label);
+ adapter = new News3FragmentAdapter(News3Fragment.this, news_list,
+ news_pb_loading, reuse_no_connection, news_rl_label, news_tv_label, true);
news_list.setAdapter(adapter);
} else if (adapter.isNetworkError()) {
adapter.setNetworkError(false);
adapter.notifyItemChanged(adapter.getItemCount());
- adapter.addList();
+ adapter.addList(adapter.getAllListSize());
}
}
}
@@ -171,11 +171,12 @@ public class News3Fragment extends Fragment {
public void onDestroy() {
super.onDestroy();
isDestroy = true;
- AppController.canclePendingRequests(NewsFragment.class);
+ AppController.canclePendingRequests(News3Fragment.class);
+ EventBus.getDefault().unregister(this);
news_list = null;
layoutManager = null;
adapter = null;
- news_ll_loading = null;
+ news_pb_loading = null;
reuse_no_connection = null;
news_tv_label = null;
news_rl_label = null;
diff --git a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java
index fd0ee71d5d..d9a5a48846 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java
@@ -2,6 +2,7 @@ package com.gh.gamecenter.news;
import android.content.Context;
import android.net.Uri;
+import android.support.v4.widget.ContentLoadingProgressBar;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -10,6 +11,7 @@ import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -18,6 +20,7 @@ import com.android.volley.NoConnectionError;
import com.android.volley.Response;
import com.android.volley.TimeoutError;
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;
@@ -26,7 +29,6 @@ import com.gh.common.util.ImageUtils;
import com.gh.common.util.NewsUtils;
import com.gh.common.util.TimestampUtils;
import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
import com.gh.gamecenter.entity.NewsEntity;
import com.gh.gamecenter.manager.DataCollectionManager;
import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
@@ -63,161 +65,168 @@ public class News3FragmentAdapter extends
private int position_today = -1;// 今天head的位置
private int position_before = -1;// 昨天/以前head的位置
+ private News3Fragment fragment;
+ private Context context;
+
+ private RecyclerView news_list;
+ private ProgressBarCircularIndeterminate news_pb_loading;
+ private LinearLayout ll_noconnection;
+ private RelativeLayout news_rl_label;
+ private TextView news_tv_label;
+
private List