From 627a896ddbc9b98b81c8e9c898ec83d77b0627a9 Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Sat, 2 Jul 2016 18:47:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=B8=B8=E6=88=8F-=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=9B=86=E6=88=90=E4=B8=8B=E8=BD=BD=E6=A8=A1=E5=9D=97=E3=80=81?= =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=B1=8F=E8=94=BD?= =?UTF-8?q?gif=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 6 +- .../main/java/com/gh/base/AppController.java | 4 +- .../com/gh/gamecenter/HotCardActivity.java | 29 +- .../java/com/gh/gamecenter/MainActivity.java | 97 +- .../gh/gamecenter/NewsOrRaidersActivity.java | 186 -- .../com/gh/gamecenter/ViewImageActivity.java | 51 +- .../gh/gamecenter/adapter/HotCardAdapter.java | 163 +- .../gamecenter/adapter/ImagePagerAdapter.java | 178 +- .../gamecenter/adapter/OriginalAdapter.java | 8 +- .../adapter/viewholder/FooterViewHolder.java | 10 +- .../viewholder/GameNormalViewHolder.java | 44 + .../viewholder/GameTestViewHolder.java | 48 + .../adapter/viewholder/GameViewHolder.java | 44 - .../com/gh/gamecenter/game/Game1Fragment.java | 394 +-- .../gamecenter/game/Game1FragmentAdapter.java | 796 ++++-- .../com/gh/gamecenter/game/Game2Fragment.java | 510 +--- .../gamecenter/game/Game2FragmentAdapter.java | 1054 +++----- .../{plugin => game}/Game3Fragment.java | 4 +- .../Game3FragmentAdapter.java | 35 +- .../GameFragment.java} | 19 +- .../gamedetails/GameInformationFragment.java | 3 +- .../com/gh/gamecenter/home/HomeFragment.java | 624 ----- .../gamecenter/home/HomeFragmentAdapter.java | 2393 ----------------- .../com/gh/gamecenter/news/News1Fragment.java | 91 +- .../gamecenter/news/News1FragmentAdapter.java | 8 +- .../com/gh/gamecenter/news/News2Fragment.java | 1 + .../com/gh/gamecenter/news/News3Fragment.java | 16 +- .../News3FragmentAdapter.java} | 32 +- .../com/gh/gamecenter/news/News4Fragment.java | 3 +- .../gamecenter/news/News4FragmentAdapter.java | 22 +- .../com/gh/gamecenter/news/NewsFragment.java | 2 +- .../gh/gamecenter/plugin/Game1Fragment.java | 74 - .../plugin/Game1FragmentAdapter.java | 635 ----- .../plugin/Game1ImagePagerAdapter.java | 125 - .../gh/gamecenter/plugin/Game2Fragment.java | 70 - .../plugin/Game2FragmentAdapter.java | 436 --- .../gh/gamecenter/plugin/Plugin1Fragment.java | 356 --- .../plugin/Plugin1FragmentAdapter.java | 610 ----- .../gh/gamecenter/plugin/Plugin2Fragment.java | 345 --- .../plugin/Plugin2FragmentAdapter.java | 387 --- .../gh/gamecenter/plugin/Plugin3Fragment.java | 345 --- .../plugin/Plugin3FragmentAdapter.java | 401 --- .../search/Search1DetailFragmentAdapter.java | 18 +- .../Search2GameListFragmentAdapter.java | 16 +- app/src/main/res/color/essay_text_style.xml | 7 - .../main/res/drawable-hdpi/account_warn.png | Bin 4112 -> 0 bytes .../res/drawable-hdpi/default_user_icon.png | Bin 5720 -> 0 bytes .../main/res/drawable-hdpi/essay_comment.png | Bin 3391 -> 0 bytes .../main/res/drawable-hdpi/essay_like_dn.png | Bin 3657 -> 0 bytes .../main/res/drawable-hdpi/essay_like_up.png | Bin 3686 -> 0 bytes .../main/res/drawable-hdpi/essay_share.png | Bin 3413 -> 0 bytes .../res/drawable-hdpi/essay_unlike_dn.png | Bin 3510 -> 0 bytes .../res/drawable-hdpi/essay_unlike_up.png | Bin 3647 -> 0 bytes .../essaydetails_comment_dn.9.png | Bin 134 -> 0 bytes .../essaydetails_comment_up.9.png | Bin 140 -> 0 bytes .../res/drawable-hdpi/home_kapaigonglue.png | Bin 3163 -> 0 bytes .../res/drawable-hdpi/home_kapaitoutiao.png | Bin 2958 -> 0 bytes .../res/drawable-hdpi/home_plug_upgrade.png | Bin 0 -> 1008 bytes .../res/drawable-hdpi/home_remenkapai.png | Bin 3035 -> 0 bytes .../res/drawable-hdpi/home_xincekapai.png | Bin 3758 -> 0 bytes .../res/drawable-hdpi/home_yuedujingxuan.png | Bin 2735 -> 0 bytes .../main/res/drawable-hdpi/login_close.png | Bin 3350 -> 0 bytes .../main/res/drawable-hdpi/login_mobile.png | Bin 3868 -> 0 bytes .../res/drawable-hdpi/login_password_dn.png | Bin 3708 -> 0 bytes .../res/drawable-hdpi/login_password_up.png | Bin 3707 -> 0 bytes app/src/main/res/drawable-hdpi/login_user.png | Bin 4278 -> 0 bytes .../res/drawable-hdpi/login_username_dn.png | Bin 3561 -> 0 bytes .../res/drawable-hdpi/login_username_up.png | Bin 4057 -> 0 bytes .../main/res/drawable-hdpi/read_time_ago.png | Bin 3552 -> 0 bytes .../res/drawable-hdpi/register_mobile_dn.png | Bin 3132 -> 0 bytes .../res/drawable-hdpi/register_mobile_up.png | Bin 3358 -> 0 bytes app/src/main/res/drawable-xhdpi/hero.png | Bin 8910 -> 0 bytes .../home_database_navigation.png | Bin 19701 -> 0 bytes .../home_newgame_navigation.png | Bin 19894 -> 0 bytes .../drawable-xhdpi/home_news_navigation.png | Bin 17420 -> 0 bytes .../home_raiders_navigation.png | Bin 19386 -> 0 bytes app/src/main/res/drawable/border_enter_bg.xml | 13 - app/src/main/res/drawable/border_input_dn.xml | 12 - app/src/main/res/drawable/border_input_up.xml | 12 - app/src/main/res/drawable/border_login_bg.xml | 9 - .../main/res/drawable/border_scarlet_bg.xml | 9 - .../res/drawable/essay_comment_liked_dn.xml | 13 - .../drawable/essay_comment_liked_style.xml | 8 - .../res/drawable/essay_comment_liked_up.xml | 13 - .../res/drawable/essay_comment_unliked_dn.xml | 13 - .../drawable/essay_comment_unliked_style.xml | 8 - .../res/drawable/essay_comment_unliked_up.xml | 13 - .../main/res/drawable/essay_like_style.xml | 8 - app/src/main/res/drawable/essay_liked_dn.xml | 11 - .../main/res/drawable/essay_liked_style.xml | 8 - app/src/main/res/drawable/essay_liked_up.xml | 11 - .../main/res/drawable/essay_unlike_style.xml | 8 - .../main/res/drawable/essay_unliked_dn.xml | 11 - .../main/res/drawable/essay_unliked_style.xml | 8 - .../main/res/drawable/essay_unliked_up.xml | 11 - .../main/res/drawable/login_auto_style.xml | 8 - .../main/res/drawable/oval_type_red_bg.xml | 13 - .../main/res/drawable/oval_white_hint_dn.xml | 7 - .../main/res/drawable/oval_white_hint_up.xml | 10 - .../res/drawable/reuse_textview_style.xml | 8 - .../main/res/drawable/textview_again_dn.xml | 23 - .../res/drawable/textview_again_style.xml | 8 - .../main/res/drawable/textview_again_up.xml | 11 - .../res/drawable/textview_color_style.xml | 9 - .../main/res/drawable/textview_login_dn.xml | 27 - .../res/drawable/textview_login_style.xml | 8 - .../main/res/drawable/textview_login_up.xml | 13 - .../main/res/drawable/textview_logout_dn.xml | 19 - .../res/drawable/textview_logout_style.xml | 8 - .../main/res/drawable/textview_logout_up.xml | 9 - .../drawable/textview_onekey_register_dn.xml | 9 - .../textview_onekey_register_style.xml | 8 - .../drawable/textview_onekey_register_up.xml | 13 - .../res/drawable/textview_register_bg.xml | 9 - app/src/main/res/layout/activity_account.xml | 103 - .../main/res/layout/activity_cropimage.xml | 15 - app/src/main/res/layout/activity_database.xml | 76 - app/src/main/res/layout/activity_mobile.xml | 187 -- .../main/res/layout/activity_modifymobile.xml | 242 -- .../res/layout/activity_news_or_raiders.xml | 65 - app/src/main/res/layout/activity_password.xml | 157 -- app/src/main/res/layout/activity_plugin.xml | 55 - app/src/main/res/layout/activity_retrieve.xml | 275 -- app/src/main/res/layout/activity_setting.xml | 53 +- app/src/main/res/layout/activity_userinfo.xml | 158 -- app/src/main/res/layout/datebase_item.xml | 70 - .../main/res/layout/dialog_account_login.xml | 219 -- .../res/layout/dialog_account_register.xml | 208 -- app/src/main/res/layout/dialog_code.xml | 151 -- .../main/res/layout/dialog_essay_comment.xml | 42 - .../main/res/layout/dialog_mobile_login.xml | 151 -- .../res/layout/dialog_modify_nickname.xml | 44 - .../main/res/layout/dialog_modify_select.xml | 38 - .../main/res/layout/dialog_modify_sign.xml | 50 - app/src/main/res/layout/dialog_nickname.xml | 85 - .../res/layout/dialog_onekey_register.xml | 150 -- .../res/layout/dialog_update_download.xml | 91 - .../main/res/layout/dialog_update_info.xml | 92 - .../layout/essaydetails_comment_evaluate.xml | 91 - .../res/layout/essaydetails_comment_item.xml | 106 - .../res/layout/game_new_testgame_fragment.xml | 41 - .../layout/game_plugin_item_gamenormal.xml | 130 - .../res/layout/game_plugin_item_xincegame.xml | 160 -- .../main/res/layout/game_test_list_view.xml | 12 - app/src/main/res/layout/home1_fragment.xml | 21 - app/src/main/res/layout/home2_fragment.xml | 13 - .../res/layout/home_autoscrollviewpager.xml | 24 - .../main/res/layout/home_game_normal_item.xml | 1 + .../main/res/layout/home_game_test_item.xml | 1 + .../layout/home_list_item_gametest_type.xml | 147 - .../home_list_item_genuinenews_type.xml | 43 - .../res/layout/home_list_item_navigation.xml | 91 - app/src/main/res/layout/mygame_block.xml | 18 - app/src/main/res/layout/read_fragment.xml | 77 - app/src/main/res/layout/reuse_ico.xml | 13 - app/src/main/res/layout/splash_item.xml | 49 - app/src/main/res/layout/viewimage_item.xml | 16 +- 157 files changed, 1611 insertions(+), 13339 deletions(-) delete mode 100644 app/src/main/java/com/gh/gamecenter/NewsOrRaidersActivity.java create mode 100644 app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNormalViewHolder.java create mode 100644 app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameTestViewHolder.java delete mode 100644 app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewHolder.java rename app/src/main/java/com/gh/gamecenter/{plugin => game}/Game3Fragment.java (98%) rename app/src/main/java/com/gh/gamecenter/{plugin => game}/Game3FragmentAdapter.java (91%) rename app/src/main/java/com/gh/gamecenter/{plugin/PluginFragment.java => game/GameFragment.java} (96%) delete mode 100644 app/src/main/java/com/gh/gamecenter/home/HomeFragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.java rename app/src/main/java/com/gh/gamecenter/{adapter/NewsOrRaidersListAdapter.java => news/News3FragmentAdapter.java} (97%) delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Game1Fragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Game1FragmentAdapter.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Game1ImagePagerAdapter.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Game2Fragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Game2FragmentAdapter.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Plugin1Fragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Plugin1FragmentAdapter.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Plugin2Fragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Plugin2FragmentAdapter.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Plugin3Fragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/plugin/Plugin3FragmentAdapter.java delete mode 100644 app/src/main/res/color/essay_text_style.xml delete mode 100644 app/src/main/res/drawable-hdpi/account_warn.png delete mode 100644 app/src/main/res/drawable-hdpi/default_user_icon.png delete mode 100644 app/src/main/res/drawable-hdpi/essay_comment.png delete mode 100644 app/src/main/res/drawable-hdpi/essay_like_dn.png delete mode 100644 app/src/main/res/drawable-hdpi/essay_like_up.png delete mode 100644 app/src/main/res/drawable-hdpi/essay_share.png delete mode 100644 app/src/main/res/drawable-hdpi/essay_unlike_dn.png delete mode 100644 app/src/main/res/drawable-hdpi/essay_unlike_up.png delete mode 100644 app/src/main/res/drawable-hdpi/essaydetails_comment_dn.9.png delete mode 100644 app/src/main/res/drawable-hdpi/essaydetails_comment_up.9.png delete mode 100644 app/src/main/res/drawable-hdpi/home_kapaigonglue.png delete mode 100644 app/src/main/res/drawable-hdpi/home_kapaitoutiao.png create mode 100644 app/src/main/res/drawable-hdpi/home_plug_upgrade.png delete mode 100644 app/src/main/res/drawable-hdpi/home_remenkapai.png delete mode 100644 app/src/main/res/drawable-hdpi/home_xincekapai.png delete mode 100644 app/src/main/res/drawable-hdpi/home_yuedujingxuan.png delete mode 100644 app/src/main/res/drawable-hdpi/login_close.png delete mode 100644 app/src/main/res/drawable-hdpi/login_mobile.png delete mode 100644 app/src/main/res/drawable-hdpi/login_password_dn.png delete mode 100644 app/src/main/res/drawable-hdpi/login_password_up.png delete mode 100644 app/src/main/res/drawable-hdpi/login_user.png delete mode 100644 app/src/main/res/drawable-hdpi/login_username_dn.png delete mode 100644 app/src/main/res/drawable-hdpi/login_username_up.png delete mode 100644 app/src/main/res/drawable-hdpi/read_time_ago.png delete mode 100644 app/src/main/res/drawable-hdpi/register_mobile_dn.png delete mode 100644 app/src/main/res/drawable-hdpi/register_mobile_up.png delete mode 100644 app/src/main/res/drawable-xhdpi/hero.png delete mode 100644 app/src/main/res/drawable-xhdpi/home_database_navigation.png delete mode 100644 app/src/main/res/drawable-xhdpi/home_newgame_navigation.png delete mode 100644 app/src/main/res/drawable-xhdpi/home_news_navigation.png delete mode 100644 app/src/main/res/drawable-xhdpi/home_raiders_navigation.png delete mode 100644 app/src/main/res/drawable/border_enter_bg.xml delete mode 100644 app/src/main/res/drawable/border_input_dn.xml delete mode 100644 app/src/main/res/drawable/border_input_up.xml delete mode 100644 app/src/main/res/drawable/border_login_bg.xml delete mode 100644 app/src/main/res/drawable/border_scarlet_bg.xml delete mode 100644 app/src/main/res/drawable/essay_comment_liked_dn.xml delete mode 100644 app/src/main/res/drawable/essay_comment_liked_style.xml delete mode 100644 app/src/main/res/drawable/essay_comment_liked_up.xml delete mode 100644 app/src/main/res/drawable/essay_comment_unliked_dn.xml delete mode 100644 app/src/main/res/drawable/essay_comment_unliked_style.xml delete mode 100644 app/src/main/res/drawable/essay_comment_unliked_up.xml delete mode 100644 app/src/main/res/drawable/essay_like_style.xml delete mode 100644 app/src/main/res/drawable/essay_liked_dn.xml delete mode 100644 app/src/main/res/drawable/essay_liked_style.xml delete mode 100644 app/src/main/res/drawable/essay_liked_up.xml delete mode 100644 app/src/main/res/drawable/essay_unlike_style.xml delete mode 100644 app/src/main/res/drawable/essay_unliked_dn.xml delete mode 100644 app/src/main/res/drawable/essay_unliked_style.xml delete mode 100644 app/src/main/res/drawable/essay_unliked_up.xml delete mode 100644 app/src/main/res/drawable/login_auto_style.xml delete mode 100644 app/src/main/res/drawable/oval_type_red_bg.xml delete mode 100644 app/src/main/res/drawable/oval_white_hint_dn.xml delete mode 100644 app/src/main/res/drawable/oval_white_hint_up.xml delete mode 100644 app/src/main/res/drawable/reuse_textview_style.xml delete mode 100644 app/src/main/res/drawable/textview_again_dn.xml delete mode 100644 app/src/main/res/drawable/textview_again_style.xml delete mode 100644 app/src/main/res/drawable/textview_again_up.xml delete mode 100644 app/src/main/res/drawable/textview_color_style.xml delete mode 100644 app/src/main/res/drawable/textview_login_dn.xml delete mode 100644 app/src/main/res/drawable/textview_login_style.xml delete mode 100644 app/src/main/res/drawable/textview_login_up.xml delete mode 100644 app/src/main/res/drawable/textview_logout_dn.xml delete mode 100644 app/src/main/res/drawable/textview_logout_style.xml delete mode 100644 app/src/main/res/drawable/textview_logout_up.xml delete mode 100644 app/src/main/res/drawable/textview_onekey_register_dn.xml delete mode 100644 app/src/main/res/drawable/textview_onekey_register_style.xml delete mode 100644 app/src/main/res/drawable/textview_onekey_register_up.xml delete mode 100644 app/src/main/res/drawable/textview_register_bg.xml delete mode 100644 app/src/main/res/layout/activity_account.xml delete mode 100644 app/src/main/res/layout/activity_cropimage.xml delete mode 100644 app/src/main/res/layout/activity_database.xml delete mode 100644 app/src/main/res/layout/activity_mobile.xml delete mode 100644 app/src/main/res/layout/activity_modifymobile.xml delete mode 100644 app/src/main/res/layout/activity_news_or_raiders.xml delete mode 100644 app/src/main/res/layout/activity_password.xml delete mode 100644 app/src/main/res/layout/activity_plugin.xml delete mode 100644 app/src/main/res/layout/activity_retrieve.xml delete mode 100644 app/src/main/res/layout/activity_userinfo.xml delete mode 100644 app/src/main/res/layout/datebase_item.xml delete mode 100644 app/src/main/res/layout/dialog_account_login.xml delete mode 100644 app/src/main/res/layout/dialog_account_register.xml delete mode 100644 app/src/main/res/layout/dialog_code.xml delete mode 100644 app/src/main/res/layout/dialog_essay_comment.xml delete mode 100644 app/src/main/res/layout/dialog_mobile_login.xml delete mode 100644 app/src/main/res/layout/dialog_modify_nickname.xml delete mode 100644 app/src/main/res/layout/dialog_modify_select.xml delete mode 100644 app/src/main/res/layout/dialog_modify_sign.xml delete mode 100644 app/src/main/res/layout/dialog_nickname.xml delete mode 100644 app/src/main/res/layout/dialog_onekey_register.xml delete mode 100644 app/src/main/res/layout/dialog_update_download.xml delete mode 100644 app/src/main/res/layout/dialog_update_info.xml delete mode 100644 app/src/main/res/layout/essaydetails_comment_evaluate.xml delete mode 100644 app/src/main/res/layout/essaydetails_comment_item.xml delete mode 100644 app/src/main/res/layout/game_new_testgame_fragment.xml delete mode 100644 app/src/main/res/layout/game_plugin_item_gamenormal.xml delete mode 100644 app/src/main/res/layout/game_plugin_item_xincegame.xml delete mode 100644 app/src/main/res/layout/game_test_list_view.xml delete mode 100644 app/src/main/res/layout/home1_fragment.xml delete mode 100644 app/src/main/res/layout/home2_fragment.xml delete mode 100644 app/src/main/res/layout/home_autoscrollviewpager.xml delete mode 100644 app/src/main/res/layout/home_list_item_gametest_type.xml delete mode 100644 app/src/main/res/layout/home_list_item_genuinenews_type.xml delete mode 100644 app/src/main/res/layout/home_list_item_navigation.xml delete mode 100644 app/src/main/res/layout/mygame_block.xml delete mode 100644 app/src/main/res/layout/read_fragment.xml delete mode 100644 app/src/main/res/layout/reuse_ico.xml delete mode 100644 app/src/main/res/layout/splash_item.xml diff --git a/app/build.gradle b/app/build.gradle index c375588179..2316576b3e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -108,7 +108,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile ('com.facebook.fresco:fresco:0.9.0') { - exclude module: 'support-v4' - } +// compile ('com.facebook.fresco:fresco:0.9.0') { +// exclude module: 'support-v4' +// } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/base/AppController.java b/app/src/main/java/com/gh/base/AppController.java index 5195c38f1d..f81a1ea5ba 100644 --- a/app/src/main/java/com/gh/base/AppController.java +++ b/app/src/main/java/com/gh/base/AppController.java @@ -14,7 +14,7 @@ import android.util.Log; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.toolbox.Volley; -import com.facebook.drawee.backends.pipeline.Fresco; +//import com.facebook.drawee.backends.pipeline.Fresco; import com.gh.base.GHPushMessageReceiver.PushHandler; import com.gh.common.constant.Config; import com.gh.common.util.DataUtils; @@ -103,7 +103,7 @@ public class AppController extends Application { public void onCreate() { super.onCreate(); - Fresco.initialize(getApplicationContext()); +// Fresco.initialize(getApplicationContext()); File dexPath = new File(getDir("dex", Context.MODE_PRIVATE), "hackdex_dex.jar"); DexUtils.prepareAssetsDex(this, dexPath, "hackdex_dex.jar"); HotFix.patch(this, dexPath.getAbsolutePath(), "dodola.hackdex.AntilazyLoad"); diff --git a/app/src/main/java/com/gh/gamecenter/HotCardActivity.java b/app/src/main/java/com/gh/gamecenter/HotCardActivity.java index 888b2ec150..ccd29e1071 100644 --- a/app/src/main/java/com/gh/gamecenter/HotCardActivity.java +++ b/app/src/main/java/com/gh/gamecenter/HotCardActivity.java @@ -6,6 +6,7 @@ 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; @@ -30,7 +31,6 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBPWDismiss; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.manager.GameManager; -import com.gh.gamecenter.plugin.Plugin2Fragment; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -116,9 +116,15 @@ public class HotCardActivity extends BaseActivity { super.onCreate(savedInstanceState); + String id = getIntent().getStringExtra("id"); + String name = getIntent().getStringExtra("name"); + if (TextUtils.isEmpty(name)) { + name = ""; + } + View contentView = View.inflate(this, R.layout.activity_hotcard, null); - init(contentView, "热门卡牌"); + init(contentView, name); dismissEntity = new DismissEntity(false); @@ -139,14 +145,14 @@ public class HotCardActivity extends BaseActivity { hotcard_list.setAdapter(adapter); hotcard_list.addItemDecoration(new VerticalItemDecoration(this, 1)); - addList(); + addList(id); } - private void addList() { + private void addList(String id) { JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( TimestampUtils.addTimestamp(Config.HOST - + "v1d45/game/remenkapai", Constants.GAME_CD), + + "v1d50/game/column/" + id, Constants.GAME_CD), new Response.Listener() { @Override @@ -165,15 +171,14 @@ public class HotCardActivity extends BaseActivity { } }); - AppController.addToRequestQueue(request, Plugin2Fragment.class); + AppController.addToRequestQueue(request, HotCardActivity.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); + List gameList = gson.fromJson(response.toString(), listType); if (gameList != null && !gameList.isEmpty()) { for (GameEntity entity : gameList) { // 黄壮华 初始化游戏状态 修改2015/8/15 @@ -240,8 +245,7 @@ public class HotCardActivity extends BaseActivity { adapter.setList(entities); } isEverpause = false; - DownloadManager.getInstance(getApplicationContext()).addObserver( - dataWatcher); + DownloadManager.getInstance(getApplicationContext()).addObserver(dataWatcher); } @Override @@ -249,15 +253,14 @@ public class HotCardActivity extends BaseActivity { super.onPause(); isEverpause = true; statusMap.clear(); - DownloadManager.getInstance(getApplicationContext()).removeObserver( - dataWatcher); + DownloadManager.getInstance(getApplicationContext()).removeObserver(dataWatcher); } @Override public void onDestroy() { super.onDestroy(); isDestroy = true; - AppController.canclePendingRequests(Plugin2Fragment.class); + AppController.canclePendingRequests(HotCardActivity.class); hotcard_list = null; adapter = null; hotcard_ll_loading = null; diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index a8025eb8bb..874560ced1 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -59,7 +59,7 @@ import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.eventbus.EBSkipNewPlugin; import com.gh.gamecenter.eventbus.EBTopState; import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.gamecenter.home.HomeFragment; +import com.gh.gamecenter.game.GameFragment; import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; @@ -68,7 +68,6 @@ import com.gh.gamecenter.manager.PackageManager; import com.gh.gamecenter.manager.SuspectedGameManager; import com.gh.gamecenter.news.NewsFragment; import com.gh.gamecenter.personal.PersonalFragment; -import com.gh.gamecenter.plugin.PluginFragment; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest; import com.google.gson.Gson; @@ -110,8 +109,7 @@ public class MainActivity extends BaseFragmentActivity implements private NewsFragment newsFragment; -// private HomeFragment home1Fragment; - private PluginFragment pluginFragmentActivity; + private GameFragment pluginFragmentActivity; private PersonalFragment home3Fragment; private View home1Layout, home2Layout, home3Layout; private ImageView home1Image, home2Image, home3Image; @@ -974,55 +972,6 @@ public class MainActivity extends BaseFragmentActivity implements FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); hideFragments(transaction); switch (index) { - case 1: - home2Layout.setClickable(false); - home2Image.setImageResource(R.drawable.home2_selected); - home2Title.setTextColor(getResources().getColor( - R.color.theme_colors)); -// if (home1Fragment == null) { -// List list = getSupportFragmentManager().getFragments(); -// if (list != null) { -// for (Fragment fragment : list) { -// if (fragment.getClass().equals(HomeFragment.class)) { -// home1Fragment = (HomeFragment) fragment; -// transaction.show(home1Fragment); -// break; -// } -// } -// } -// if (home1Fragment == null) { -// home1Fragment = new HomeFragment(); -// transaction.add(R.id.main_content, home1Fragment); -// } -// } else { -// transaction.show(home1Fragment); -// } -// if (newsFragment == null) { -// List list = getSupportFragmentManager().getFragments(); -// if (list != null) { -// for (Fragment fragment : list) { -// if (fragment.getClass().equals(HomeFragment.class)) { -// newsFragment = (NewsFragment) fragment; -// transaction.show(newsFragment); -// break; -// } -// } -// } -// if (newsFragment == null) { -// newsFragment = new NewsFragment(); -// transaction.add(R.id.main_content, newsFragment); -// } -// } else { -// transaction.show(newsFragment); -// } - if (newsFragment == null){ - newsFragment = new NewsFragment(); - transaction.add(R.id.main_content, newsFragment); - }else { - transaction.show(newsFragment); - } - currentTab = 1; - break; case 0: home1Layout.setClickable(false); home1Image.setImageResource(R.drawable.home1_selected); @@ -1032,15 +981,15 @@ public class MainActivity extends BaseFragmentActivity implements List list = getSupportFragmentManager().getFragments(); if (list != null) { for (Fragment fragment : list) { - if (fragment.getClass().equals(PluginFragment.class)) { - pluginFragmentActivity = (PluginFragment) fragment; + if (fragment.getClass().equals(GameFragment.class)) { + pluginFragmentActivity = (GameFragment) fragment; transaction.show(pluginFragmentActivity); break; } } } if (pluginFragmentActivity == null) { - pluginFragmentActivity = new PluginFragment(); + pluginFragmentActivity = new GameFragment(); transaction.add(R.id.main_content, pluginFragmentActivity); } } else { @@ -1048,6 +997,31 @@ public class MainActivity extends BaseFragmentActivity implements } currentTab = 0; break; + case 1: + home2Layout.setClickable(false); + home2Image.setImageResource(R.drawable.home2_selected); + home2Title.setTextColor(getResources().getColor( + R.color.theme_colors)); + if (newsFragment == null) { + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + if (fragment.getClass().equals(NewsFragment.class)) { + newsFragment = (NewsFragment) fragment; + transaction.show(newsFragment); + break; + } + } + } + if (newsFragment == null) { + newsFragment = new NewsFragment(); + transaction.add(R.id.main_content, newsFragment); + } + } else { + transaction.show(newsFragment); + } + currentTab = 1; + break; case 2: home3Layout.setClickable(false); home3Image.setImageResource(R.drawable.home3_selected); @@ -1104,10 +1078,6 @@ public class MainActivity extends BaseFragmentActivity implements if (pluginFragmentActivity != null) { transaction.hide(pluginFragmentActivity); } -// if (home1Fragment != null) { -// transaction.hide(home1Fragment); -// } -// if (newsFragment != null) { transaction.hide(newsFragment); } @@ -1148,7 +1118,7 @@ public class MainActivity extends BaseFragmentActivity implements public void onEventMainThread(EBSkipNewPlugin busFive) { if (busFive.getType() == 0) { if (isFirst) { - PluginFragment.isFirst = true; + GameFragment.isFirst = true; } onClick(home2Layout); EventBus.getDefault().post(new EBSkipNewPlugin(1)); @@ -1270,10 +1240,9 @@ public class MainActivity extends BaseFragmentActivity implements protected void onDestroy() { super.onDestroy(); isDestroy = true; - AppController.canclePendingRequests(HomeFragment.class); - AppController.canclePendingRequests(PluginFragment.class); + AppController.canclePendingRequests(GameFragment.class); + AppController.canclePendingRequests(NewsFragment.class); DownloadManager.getInstance(this).removeObserver(dataWatcher); -// home1Fragment = null; pluginFragmentActivity = null; home3Fragment = null; home1Layout = null; diff --git a/app/src/main/java/com/gh/gamecenter/NewsOrRaidersActivity.java b/app/src/main/java/com/gh/gamecenter/NewsOrRaidersActivity.java deleted file mode 100644 index c19e1a568e..0000000000 --- a/app/src/main/java/com/gh/gamecenter/NewsOrRaidersActivity.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.gh.gamecenter; - -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import com.gh.base.AppController; -import com.gh.base.BaseActivity; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.gamecenter.adapter.NewsOrRaidersListAdapter; -import com.gh.gamecenter.eventbus.EBConcernChanged; -import com.gh.gamecenter.eventbus.EBNetworkState; - -/** - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-10 首页资讯或攻略板块 - */ -public class NewsOrRaidersActivity extends BaseActivity { - - private RecyclerView news_list; - private LinearLayoutManager layoutManager; - private NewsOrRaidersListAdapter adapter; - private LinearLayout news_ll_loading, reuse_no_connection; - private TextView news_tv_label; - private RelativeLayout news_rl_label; - private RelativeLayout.LayoutParams rparams; - - private String type; - - private boolean isDestroy; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - type = getIntent().getStringExtra("type"); - - isDestroy = false; - - View contentView = View.inflate(this, - R.layout.activity_news_or_raiders, null); - - init(contentView, type); - - reuse_no_connection.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - news_list.setVisibility(View.GONE); - news_ll_loading.setVisibility(View.VISIBLE); - reuse_no_connection.setVisibility(View.GONE); - adapter = new NewsOrRaidersListAdapter( - NewsOrRaidersActivity.this, news_list, news_ll_loading, - reuse_no_connection, type, news_rl_label, news_tv_label); - news_list.setAdapter(adapter); - } - }); - - rparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, - LayoutParams.WRAP_CONTENT); - - news_list.setHasFixedSize(true); - layoutManager = new LinearLayoutManager(this); - news_list.setLayoutManager(layoutManager); - - adapter = new NewsOrRaidersListAdapter(this, news_list, - news_ll_loading, reuse_no_connection, type, news_rl_label, - news_tv_label); - - 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.setOnScrollListener(new RecyclerView.OnScrollListener() { - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - - super.onScrolled(recyclerView, dx, dy); - - int position = layoutManager.findFirstVisibleItemPosition(); - - if (adapter.getPosition_today() != -1 - && position >= adapter.getPosition_today() - && position <= adapter.getTodaySize() - + adapter.getPosition_today()) { - news_tv_label.setText("今天"); - news_tv_label.setBackgroundResource(R.drawable.title_red); - } else if (adapter.getPosition_before() != -1 - && position >= adapter.getPosition_before()) { - news_tv_label.setText("昨天/以前"); - news_tv_label.setBackgroundResource(R.drawable.title_gray); - } else if (adapter.getPosition_mygame() != -1) { - news_tv_label.setText("我的游戏"); - news_tv_label.setBackgroundResource(R.drawable.title_blue); - } - - if (position == adapter.getPosition_today() - 1 - || position == adapter.getPosition_before() - 1) { - int buttom = layoutManager.findViewByPosition(position) - .getBottom(); - if (buttom <= news_rl_label.getHeight()) { - rparams.topMargin = buttom - news_rl_label.getHeight(); - news_rl_label.setLayoutParams(rparams); - } else { - rparams.topMargin = 0; - news_rl_label.setLayoutParams(rparams); - } - } else { - rparams.topMargin = 0; - news_rl_label.setLayoutParams(rparams); - } - } - - @Override - 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(); - } - } - } - }); - news_list.addItemDecoration(new VerticalItemDecoration(this, 1)); - } - - public void onEventMainThread(EBConcernChanged busSeven) { - adapter.updateMyGameNews(); - } - - 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); - reuse_no_connection.setVisibility(View.GONE); - adapter = new NewsOrRaidersListAdapter(this, news_list, - news_ll_loading, reuse_no_connection, type, - news_rl_label, news_tv_label); - news_list.setAdapter(adapter); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount()); - adapter.addList(); - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - isDestroy = true; - AppController.canclePendingRequests(NewsOrRaidersActivity.class); - news_list = null; - layoutManager = null; - adapter = null; - news_ll_loading = null; - reuse_no_connection = null; - news_tv_label = null; - news_rl_label = null; - rparams = null; - type = null; - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index 3d515af53a..b10ae05452 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -16,11 +16,12 @@ import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.RelativeLayout; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder; -import com.facebook.drawee.view.SimpleDraweeView; -import com.facebook.imagepipeline.request.ImageRequest; -import com.facebook.imagepipeline.request.ImageRequestBuilder; +//import com.facebook.drawee.backends.pipeline.Fresco; +//import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder; +//import com.facebook.drawee.view.SimpleDraweeView; +//import com.facebook.imagepipeline.request.ImageRequest; +//import com.facebook.imagepipeline.request.ImageRequestBuilder; +import com.android.volley.toolbox.ImageRequest; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseActivity; import com.gh.common.util.DisplayUtils; @@ -138,25 +139,25 @@ public class ViewImageActivity extends BaseActivity implements Gh_ImageLayout view = (Gh_ImageLayout) View.inflate(container.getContext(), R.layout.viewimage_item, null); view.setOnSingleTapListener(this); - if (url.contains(".gif")) { - SimpleDraweeView simpleDraweeView = (SimpleDraweeView) view.findViewById(R.id.test_gif); - ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)) - .build(); - PipelineDraweeControllerBuilder controllerBuilder = Fresco.newDraweeControllerBuilder() - .setAutoPlayAnimations(true) - .setTapToRetryEnabled(true) - .setImageRequest(imageRequest); - simpleDraweeView.setController(controllerBuilder.build()); - ViewParent parent = simpleDraweeView.getParent(); - - if (parent != null) { - ViewGroup parent1 = (ViewGroup) parent; - parent1.removeView(simpleDraweeView); - } - container.addView(simpleDraweeView); - return simpleDraweeView; - - } else { +// if (url.contains(".gif")) { +// SimpleDraweeView simpleDraweeView = (SimpleDraweeView) view.findViewById(R.id.test_gif); +// ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)) +// .build(); +// PipelineDraweeControllerBuilder controllerBuilder = Fresco.newDraweeControllerBuilder() +// .setAutoPlayAnimations(true) +// .setTapToRetryEnabled(true) +// .setImageRequest(imageRequest); +// simpleDraweeView.setController(controllerBuilder.build()); +// ViewParent parent = simpleDraweeView.getParent(); +// +// if (parent != null) { +// ViewGroup parent1 = (ViewGroup) parent; +// parent1.removeView(simpleDraweeView); +// } +// container.addView(simpleDraweeView); +// return simpleDraweeView; +// +// } else { ImageView imageView = (ImageView) view.findViewById(R.id.viewimage_iv_show); if (scaleType != null) { ImageUtils.getInstance(getApplicationContext()).display( @@ -177,7 +178,7 @@ public class ViewImageActivity extends BaseActivity implements view.setTag(position); container.addView(imageView); return imageView; - } +// } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java index 04a8e3f78f..6e05abbdd1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/HotCardAdapter.java @@ -14,12 +14,17 @@ 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.HotCardActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; import com.gh.gamecenter.entity.DismissEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; +import com.gh.gamecenter.game.Game1FragmentAdapter; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -81,48 +86,116 @@ public class HotCardAdapter extends int position) { if (position != list.size()) { - GameViewHolder holder = (GameViewHolder) viewHolder; + if (viewHolder instanceof GameNormalViewHolder) { + GameNormalViewHolder holder = (GameNormalViewHolder) viewHolder; - final GameEntity entity = list.get(position); + final GameEntity entity = list.get(position); - ImageUtils.getInstance(context).display(entity.getIcon(), - holder.gameThumb); - if (entity.getApk() == null || entity.getApk().isEmpty()) { + ImageUtils.getInstance(context).display(entity.getIcon(), + holder.gameThumb); holder.gameNameAndSize.setText(entity.getName()); - } else { - holder.gameNameAndSize.setText(entity.getName() + " | " - + entity.getApk().get(0).getSize()); - } - holder.gameDes.setText(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); + if (entity.getApk() == null || entity.getApk().isEmpty()) { + holder.gameDes.setText(entity.getBrief()); + } else { + holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief()); } - }); - DownloadItemUtils.setOnClickListener(context, holder.downloadBtn, - holder.downloadSpeed, holder.downloadPercentage, - entity, position, this, - statusMap, platformMap, "热门卡牌", dismissEntity, "hotcard:" + entity.getName()); + 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); + } - DownloadItemUtils.updateItem(context, holder.labelList, - holder.gameProgressbar, holder.gameInfo, - holder.downloadSpeed, holder.downloadPercentage, - holder.downloadBtn, entity, platformMap, statusMap); } } @@ -133,15 +206,21 @@ public class HotCardAdapter extends @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - View view; if (i != list.size()) { - view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.home_list_item_gamenormal_type, viewGroup, false); + 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 = LayoutInflater.from(viewGroup.getContext()).inflate( + View view = LayoutInflater.from(viewGroup.getContext()).inflate( R.layout.refresh_footerview, viewGroup, false); + return new FooterViewHolder(view); } - return new GameViewHolder(view); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index ebc18b2432..44a12af9f4 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -11,122 +11,120 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import com.gh.base.AppController; -import com.gh.common.util.DataUtils; import com.gh.common.util.ImageUtils; import com.gh.gamecenter.GameDetailsActivity; +import com.gh.gamecenter.HotCardActivity; +import com.gh.gamecenter.NewsActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.manager.DataCollectionManager; +import com.gh.gamecenter.entity.SlideEntity; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * ImagePagerAdapter - * + * * @author Trinea 2014-2-23 */ public class ImagePagerAdapter extends RecyclingPagerAdapter { - private Context context; - // private List imageIdList; - private List slideList = null; + private Context context; + // private List imageIdList; + private List slideList = null; - private int size; - private boolean isInfiniteLoop; + private int size; + private boolean isInfiniteLoop; - // private ImageIndicator indicator; + // private ImageIndicator indicator; - public ImagePagerAdapter(Context context, List slideList, - boolean isInfiniteLoop) { - this.context = context; - this.slideList = slideList; - this.size = getSize(slideList); - this.isInfiniteLoop = isInfiniteLoop; - } + public ImagePagerAdapter(Context context, List slideList, + boolean isInfiniteLoop) { + this.context = context; + this.slideList = slideList; + this.size = getSize(slideList); + this.isInfiniteLoop = isInfiniteLoop; + } - @Override - public int getCount() { - // Infinite loop - return isInfiniteLoop ? Integer.MAX_VALUE : getSize(slideList); - } + @Override + public int getCount() { + // Infinite loop + return isInfiniteLoop ? Integer.MAX_VALUE : getSize(slideList); + } - public int getSize(List sourceList) { - return sourceList == null ? 0 : sourceList.size(); - } + public int getSize(List sourceList) { + return sourceList == null ? 0 : sourceList.size(); + } - /** - * get really position - * - * @param position - * @return - */ - private int getPosition(int position) { - return isInfiniteLoop ? position % size : position; - } + /** + * get really position + * + * @param position + * @return + */ + private int getPosition(int position) { + return isInfiniteLoop ? position % size : position; + } - @Override - public View getView(int position, View view, ViewGroup container) { - ViewHolder holder; - if (view == null) { - holder = new ViewHolder(); - view = holder.imageView = new ImageView(context); - view.setTag(holder); - } else { - holder = (ViewHolder) view.getTag(); - } + @Override + public View getView(int position, View view, ViewGroup container) { + ViewHolder holder; + if (view == null) { + holder = new ViewHolder(); + view = holder.imageView = new ImageView(context); + view.setTag(holder); + } else { + holder = (ViewHolder) view.getTag(); + } - final GameEntity gameEntity = slideList.get(getPosition(position)); + final SlideEntity slideEntity = slideList.get(getPosition(position)); - ImageUtils.getInstance(context).display(gameEntity.getSlide(), - holder.imageView, R.drawable.preload); - // indicator.setPosition(slideList.size(), getPosition(position)); + ImageUtils.getInstance(context).display(slideEntity.getImage(), + holder.imageView, R.drawable.preload); + // indicator.setPosition(slideList.size(), getPosition(position)); - holder.imageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + holder.imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { - Map kv = new HashMap(); - kv.put("入口", "插件-精品-滚动图"); - DataUtils.onEvent(context, "游戏详情", gameEntity.getName(), kv); + if ("game".equals(slideEntity.getType())) { + Intent intent = new Intent(context, GameDetailsActivity.class); + intent.putExtra("gameId", slideEntity.getLink()); + intent.putExtra("entrance", "插件-滚动图"); + context.startActivity(intent); + } else if ("news".equals(slideEntity.getType())) { + Intent intent = new Intent(context, NewsActivity.class); + intent.putExtra("newsId", slideEntity.getLink()); + intent.putExtra("entrance", "插件-滚动图"); + context.startActivity(intent); + } else if ("column".equals(slideEntity.getType())) { + Intent intent = new Intent(context, HotCardActivity.class); + intent.putExtra("id", slideEntity.getLink()); +// intent.putExtra("name", slideEntity.getType()); + context.startActivity(intent); + } - Map map = new HashMap(); - map.put("location", "精品-滚动图"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", gameEntity.getName()); - map.put("page", "插件"); - DataCollectionManager.onEvent(context, "click-item", map); - - AppController.put("GameEntity", gameEntity); - Intent intent = new Intent(context, GameDetailsActivity.class); - intent.putExtra("entrance", "插件-精品滚动图"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); + } + }); - return view; - } + return view; + } - private static class ViewHolder { - ImageView imageView; - } + private static class ViewHolder { + ImageView imageView; + } - /** - * @return the isInfiniteLoop - */ - public boolean isInfiniteLoop() { - return isInfiniteLoop; - } + /** + * @return the isInfiniteLoop + */ + public boolean isInfiniteLoop() { + return isInfiniteLoop; + } - /** - * @param isInfiniteLoop - * the isInfiniteLoop to set - */ - public ImagePagerAdapter setInfiniteLoop(boolean isInfiniteLoop) { - this.isInfiniteLoop = isInfiniteLoop; - return this; - } + /** + * @param isInfiniteLoop + * the isInfiniteLoop to set + */ + public ImagePagerAdapter setInfiniteLoop(boolean isInfiniteLoop) { + this.isInfiniteLoop = isInfiniteLoop; + return this; + } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/OriginalAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/OriginalAdapter.java index 3ffa4fcc1d..b1ec1bc25c 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/OriginalAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/OriginalAdapter.java @@ -372,8 +372,8 @@ public class OriginalAdapter extends RecyclerView.Adapter locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; + private ArrayMap locationMap; + private ArrayMap statusMap; + private ArrayMap> platformMap; - private boolean isEverpause = false; - private boolean isDestroy = false; + private DismissEntity dismissEntity; - private ArrayMap statusMap; + private boolean isDestroy; - 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 (queue.size() > 1) { + queue.offer(queue.poll()); + Message msg2 = Message.obtain(); + msg2.obj = name; + msg2.what = Constants.DOWNLOAD_ROLL; + sendMessageDelayed(msg2, 3000); + } + } + } + } + } + }; - private Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - if (!isDestroy) { - if (msg.what == Constants.DOWNLOAD_ROLL) { - String name = (String) msg.obj; - if (platformMap != null) { - LinkedBlockingQueue queue = platformMap - .get(name); - if (queue.size() > 1) { - queue.offer(queue.poll()); - Message msg2 = Message.obtain(); - msg2.obj = name; - msg2.what = Constants.DOWNLOAD_ROLL; - sendMessageDelayed(msg2, 3000); - } - } - } - } - } - }; + private DataWatcher dataWatcher = new DataWatcher() { - // 黄壮华 添加观察者 修改2015/8/15 - private DataWatcher dataWatcher = new DataWatcher() { + @Override + public void onDataChanged( + HashMap downloadingEntries) { + for (Map.Entry entry : downloadingEntries + .entrySet()) { + DownloadEntry downloadEntry = entry.getValue(); - @Override - public void onDataChanged( - HashMap downloadingEntries) { - if (!game_swipe_refresh.isRefreshing()) { - for (java.util.Map.Entry entry : downloadingEntries - .entrySet()) { - DownloadEntry downloadEntry = entry.getValue(); - String name = downloadEntry.getName(); - Integer location = locationMap.get(name); - if (location != null) { - int index = location.intValue(); + Integer location = locationMap.get(downloadEntry.getName()); + if (location != null) { + int index = location.intValue(); - GameEntity detailedEntity = adapter.getList() - .get(index); + 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); + } + } + } + } + }; - } - } - } - } - }; + private GameEntity getEntityByLocation(int position) { + List list = adapter.getSubjectList(); - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { + int offset = 1; + GameEntity gameEntity; + for (int i = 0, size = list.size(); i < 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; + } - super.onCreate(savedInstanceState); + return null; + } - view = View.inflate(getActivity(), R.layout.plugin1_fragment, null); + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); - dismissEntity = new DismissEntity(false); + view = View.inflate(getActivity(), R.layout.plugin1_fragment, null); - statusMap = new ArrayMap(); - locationMap = new ArrayMap(); - gameMap = new ArrayMap>(); - platformMap = new ArrayMap>(); - nameMap = new ArrayMap(); + 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); + locationMap = new ArrayMap(); + statusMap = new ArrayMap(); + platformMap = new ArrayMap>(); - recyclerview = (RecyclerView) view.findViewById(R.id.game_list); - recyclerview.setHasFixedSize(true); - layoutManager = new LinearLayoutManager(getActivity()); - recyclerview.setLayoutManager(layoutManager); + dismissEntity = new DismissEntity(false); - // 黄壮华 添加 初始化游戏状态 修改2015/8/21 - DownloadItemUtils.initializeGameMap(getActivity(), gameMap); + mRecyclerView = (RecyclerView) view.findViewById(R.id.game_list); - game_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading); - game_pb_loading.setVisibility(View.GONE); + mSwipeRefreshLayout = (SwipeRefreshLayout) view + .findViewById(R.id.game_swipe_refresh); + mSwipeRefreshLayout.setColorSchemeResources(R.color.theme_colors); + mSwipeRefreshLayout.setOnRefreshListener(this); - 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); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } - }); + mProgressBarCircularIndeterminate = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading); + mProgressBarCircularIndeterminate.setVisibility(View.GONE); - // 黄壮华 传递引用 修改2015/8/15 - adapter = new Game1FragmentAdapter(Game1Fragment.this, locationMap, - gameMap, platformMap, nameMap, recyclerview, - game_swipe_refresh, reuse_no_connection, - statusMap, dismissEntity); - recyclerview.setAdapter(adapter); - recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { + mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + adapter = new Game1FragmentAdapter(getActivity(), locationMap, statusMap, + platformMap, dismissEntity, mSwipeRefreshLayout); + mRecyclerView.setAdapter(adapter); + mRecyclerView.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - @Override - public void onScrollStateChanged(RecyclerView recyclerView, - int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (!isDestroy - && newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == adapter - .getList().size()) { - if (!adapter.isRemove() && !adapter.isLoading()) { - adapter.addList(adapter.getList().size()); - } - } - } - }); - recyclerview.addItemDecoration(new VerticalItemDecoration( - getActivity(), 1)); + EventBus.getDefault().register(this); + } - 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; + } - } + Runnable runnable = new Runnable() { + @Override + public void run() { + mSwipeRefreshLayout.setRefreshing(false); + } + }; - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - if (container != null) { - container.removeView(view); - } - return view; - } + @Override + public void onRefresh() { + handler.postDelayed(runnable, 1000); + } - public void onEventMainThread(EBPWDismiss dismiss) { - if (dismissEntity != null) { - dismissEntity.setShow(false); - } - } + 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) { - int location = locationMap.get(name); - if ("安装".equals(busFour.getType())) { - GameEntity detailedEntity = adapter.getList().get(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(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); + } + } - public void onEventMainThread(EBNetworkState busNetworkState) { - if (busNetworkState.isNetworkConnected()) { - if (reuse_no_connection.getVisibility() == View.VISIBLE) { - game_swipe_refresh.setRefreshing(true); - recyclerview.setVisibility(View.VISIBLE); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getList().size()); - } - } - } + @Override + public void onResume() { + super.onResume(); + DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); + } - @Override - public void onResume() { - super.onResume(); - 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); - } - isEverpause = false; - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - } + @Override + public void onPause() { + super.onPause(); + DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); + } - @Override - public void onPause() { - super.onPause(); - isEverpause = true; - statusMap.clear(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - } - - public boolean isEverpause() { - return isEverpause; - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - if (!isDestroy) { - adapter = new Game1FragmentAdapter(Game1Fragment.this, - locationMap, gameMap, platformMap, nameMap, - recyclerview, game_swipe_refresh, reuse_no_connection, - statusMap, dismissEntity); - recyclerview.setAdapter(adapter); - } - } - }; - - @Override - public void onRefresh() { - handler.postDelayed(runnable, 1000); - } - - @Override - public void onDestroy() { - super.onDestroy(); - isDestroy = true; - adapter.setDestroy(true); - AppController.canclePendingRequests(Game1Fragment.class); - EventBus.getDefault().unregister(this); - view = null; - recyclerview = null; - game_swipe_refresh = null; - adapter = null; - layoutManager = null; - reuse_no_connection = null; - locationMap = null; - gameMap = null; - platformMap = null; - nameMap = null; - statusMap = null; - dismissEntity = null; - handler = null; - dataWatcher = null; - } + @Override + public void onDestroy() { + super.onDestroy(); + isDestroy = true; + } } 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 e15c2aef23..d0390aab1d 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -1,15 +1,20 @@ package com.gh.gamecenter.game; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.support.v4.util.ArrayMap; +import android.support.v4.view.ViewPager; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.TextView; import android.widget.Toast; import com.android.volley.NoConnectionError; @@ -19,22 +24,23 @@ import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.common.constant.Config; import com.gh.common.constant.Constants; -import com.gh.common.util.DataUtils; +import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.TimestampUtils; -import com.gh.download.DownloadEntry; +import com.gh.common.view.AutoScrollViewPager; import com.gh.gamecenter.GameDetailsActivity; +import com.gh.gamecenter.HotCardActivity; +import com.gh.gamecenter.NewsActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; -import com.gh.gamecenter.db.info.GameInfo; -import com.gh.gamecenter.entity.ApkEntity; +import com.gh.gamecenter.adapter.ImagePagerAdapter; +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 com.gh.gamecenter.manager.DataCollectionManager; -import com.gh.gamecenter.manager.GameManager; +import com.gh.gamecenter.entity.SlideEntity; +import com.gh.gamecenter.entity.SubjectEntity; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -43,312 +49,576 @@ import org.json.JSONArray; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.HashMap; +import java.util.Date; import java.util.List; -import java.util.Map; import java.util.concurrent.LinkedBlockingQueue; /** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-10 modified 2015-8-10 新游界面上新游推荐fragment适配器 + * Created by LGT on 2016/7/1. */ -public class Game1FragmentAdapter extends - RecyclerView.Adapter { +public class Game1FragmentAdapter extends RecyclerView.Adapter { - private Game1Fragment fragment; + private class ITEM_TYPE { + public static final int slide = 0;// 滚动图 + public static final int head = 1;// 专题头部 + public static final int game_normal_type = 2;// 游戏布局1 + public static final int game_test_type = 3;// 游戏布局2 + public static final int image = 4;// 大图布局 + } - private Context context; + private Activity mActivity; + private Context mContext; - private RecyclerView recyclerView; - private SwipeRefreshLayout game_swipe_refresh; - private LinearLayout reuse_no_connection; + private SwipeRefreshLayout mSwipeRefreshLayout; - private boolean isRemove; - private boolean isLoading; - private boolean isNetworkError; - private boolean isDestroy; + private List slideList; + private List subjectList; - private List list; + private boolean isSlideError; - // 黄壮华 获取引用 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; + private ArrayMap locationMap; + private ArrayMap statusMap; + private ArrayMap> platformMap; - private ArrayMap statusMap; + private DismissEntity dismissEntity; - private DismissEntity dismissEntity; + public Game1FragmentAdapter(Activity activity, + ArrayMap lMap, + ArrayMap sMap, + ArrayMap> pMap, + DismissEntity dEntity, + SwipeRefreshLayout swipeRefreshLayout) { - // 黄壮华 获取引用 修改2015/8/15 - public Game1FragmentAdapter(Game1Fragment fment, - ArrayMap lMap, - ArrayMap> gMap, - ArrayMap> pMap, - ArrayMap nMap, RecyclerView rView, - SwipeRefreshLayout swipeRefreshLayout, LinearLayout linearLayout, - ArrayMap sMap, DismissEntity dEntity) { + mActivity = activity; + mContext = activity; + locationMap = lMap; + statusMap = sMap; + platformMap = pMap; + dismissEntity = dEntity; + mSwipeRefreshLayout = swipeRefreshLayout; - // 黄壮华 获取引用 修改2015/8/15 - locationMap = lMap; - gameMap = gMap; - platformMap = pMap; - nameMap = nMap; - recyclerView = rView; - game_swipe_refresh = swipeRefreshLayout; - reuse_no_connection = linearLayout; + slideList = new ArrayList(); + subjectList = new ArrayList(); - statusMap = sMap; + isSlideError = false; - dismissEntity = dEntity; + load(); + } - list = new ArrayList(); + public void load() { + new Thread(runnable){}.start(); + } - isRemove = false; - isLoading = false; - isNetworkError = false; - isDestroy = false; + Runnable runnable = new Runnable() { + @Override + public void run() { + initSlide(true); + } + }; - fragment = fment; - context = fment.getActivity(); - - addList(0); - } + private void initSlide(final boolean isFirst) { + JsonArrayExtendedRequest slideRequest = new JsonArrayExtendedRequest( + TimestampUtils.addTimestamp(Config.HOST + "v1d50/index/slides", + Constants.GAME_CD), new Response.Listener() { + @Override + public void onResponse(JSONArray response) { + Type listType = new TypeToken>() {}.getType(); + Gson gson = new Gson(); + slideList = gson.fromJson(response.toString(), listType); + if (slideList != null && !slideList.isEmpty()) { + notifyItemChanged(0); + } + if (isFirst) { + initAlbum(); + } + } - public void addList(final int offset) { - isLoading = true; - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/game/youxituijian", Constants.GAME_CD), - new Response.Listener() { + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + // 无网络连接 + if (error.getClass().equals(NoConnectionError.class) + || error.getClass().equals(TimeoutError.class)) { + isSlideError = true; + Toast.makeText(mContext, "网络错误", Toast.LENGTH_SHORT).show(); + notifyItemChanged(0); + } + if (isFirst) { + initAlbum(); + } + } + }); + AppController.addToRequestQueue(slideRequest, Game1Fragment.class); + } - @Override - public void onResponse(JSONArray response) { - if (!isDestroy) { - processingData(response, offset); - } - isLoading = false; - } + private void initAlbum() { + JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(Config.HOST + "v1d50/game/tuijian", + new Response.Listener() { + @Override + public void onResponse(JSONArray response) { - }, new Response.ErrorListener() { + Type listType = new TypeToken>() {}.getType(); + Gson gson = new Gson(); + List list = gson.fromJson(response.toString(), listType); + if (list != null && !list.isEmpty()) { + subjectList = list; + notifyItemRangeInserted(1, getItemCount() - 1); + initLocationMap(); + } + } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { - @Override - public void onErrorResponse(VolleyError error) { - isLoading = false; - // 无网络连接 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - if (offset == 0) { - if (game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } - recyclerView.setVisibility(View.GONE); - reuse_no_connection.setVisibility(View.VISIBLE); - } else { - Toast.makeText(context, "网络错误", - Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } - } - } + } + }); + AppController.addToRequestQueue(request, Game1Fragment.class); + } - }); - AppController.addToRequestQueue(request, Game1Fragment.class); - } + private void initLocationMap() { + locationMap.clear(); - public void processingData(JSONArray response, int offset) { - Type listType = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - List gameList = gson.fromJson(response.toString(), listType); - GameManager manager = new GameManager(context); - if (gameList != null && !gameList.isEmpty()) { - for (GameEntity entity : gameList) { - // 黄壮华 初始化游戏状态 修改2015/8/15 - if (!TextUtils.isEmpty(entity.getName())) { - entity.setEntryMap(gameMap.get(entity.getName())); - for (ApkEntity apkEntity : entity.getApk()) { - manager.addOrUpdate(new GameInfo( - apkEntity.getPackageName(), entity.getId(), entity - .getName())); - } - } - } - list.addAll(gameList); - if (!fragment.isEverpause()) { - notifyItemRangeInserted(list.size() - gameList.size(), gameList.size()); - } - } + 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(); + } + for (int position = 0; position < count; position++) { + int offset = 1; + 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); + locationMap.put(gameEntity.getName(), position); + break; + } + offset = subjectList.get(i).getData().size() + offset + 1; + } + } + } - if (fragment.isEverpause()) { - notifyDataSetChanged(); - } + } - if (offset == 0 && game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view; + if (viewType == ITEM_TYPE.slide) { + view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.plugin1_autoscrollviewpager_viewholder, parent, + false); + DisplayMetrics outMetrics = new DisplayMetrics(); + mActivity.getWindowManager().getDefaultDisplay() + .getMetrics(outMetrics); + ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + (int) (outMetrics.widthPixels / 16f * 7f)); + view.setLayoutParams(params); + return new AutoScrollViewpagerViewHolder(view); + } else if (viewType == ITEM_TYPE.head) { + view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.home_list_item_head, parent, false); + return new HeadViewHolder(view); + } else if (viewType == ITEM_TYPE.game_normal_type) { + view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.home_game_normal_item, parent, false); + return new GameNormalViewHolder(view); + } else if (viewType == ITEM_TYPE.game_test_type) { + view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.home_game_test_item, parent, false); + return new GameTestViewHolder(view); + } else { + ImageView imageView = new ImageView(parent.getContext()); + ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + imageView.setLayoutParams(params); + imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); + return new ImageViewHolder(imageView); + } + } - if (gameList.isEmpty() || (offset == 0 && gameList.size() < 20)) { - isRemove = true; - notifyItemRemoved(list.size()); - } + private void initGameTestViewHolder(GameTestViewHolder holder, int position) { + int offset = 1; + 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(holder, gameEntity, position - offset - 1, subjectList.get(i).getOrder()); + break; + } + } + offset = subjectList.get(i).getData().size() + offset + 1; + } + } - // 黄壮华 获取游戏位置信息 修改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()); - } - } - } + 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 + ""); + } 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())); + } - @Override - public int getItemCount() { - if (list.size() == 0) { - return 0; - } - if (isRemove) { - return list.size(); - } - return list.size() + 1; - } + final GameEntity entity = gameEntity; - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, - final int position) { - if (viewHolder instanceof GameViewHolder) { + 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); + } + }); - final GameEntity detailedEntity = list.get(position); + 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()); + } + } + } - GameViewHolder holder = (GameViewHolder) viewHolder; + DownloadItemUtils.updateItem(mContext, holder.labelList, + holder.game_progressbar, holder.game_ll_info, holder.download_speed, + holder.download_percentage, holder.downloadBtn, entity, platformMap, + statusMap); + } - ImageUtils.getInstance(context).display(detailedEntity.getIcon(), - holder.gameThumb); - if (detailedEntity.getApk() == null - || detailedEntity.getApk().isEmpty()) { - holder.gameNameAndSize.setText(detailedEntity.getName()); - } else { - holder.gameNameAndSize.setText(detailedEntity.getName() - + " | " + detailedEntity.getApk().get(0).getSize()); - } - holder.gameDes.setText(detailedEntity.getBrief()); + private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) { + int offset = 1; + 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) { + initGameNormal(holder, gameEntity, position - offset - 1, subjectList.get(i).getOrder()); + break; + } + } + offset = subjectList.get(i).getData().size() + offset + 1; + } + } - GameViewUtils.setLabelList(context, holder.labelList, - detailedEntity.getTag()); + 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 + ""); + } else { + holder.home1_game_order.setVisibility(View.GONE); + } + ImageUtils.getInstance(mContext).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(mContext, holder.labelList, entity.getTag()); - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + final GameEntity gameInfoEntity = entity; - Map kv = new HashMap(); - kv.put("入口", "新游-新游推荐"); - DataUtils.onEvent(context, "游戏详情", detailedEntity.getName(), - kv); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AppController.put("GameEntity", gameInfoEntity); + Intent intent = new Intent(mContext, GameDetailsActivity.class); + intent.putExtra("entrance", "游戏-插件"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } + }); - Map map = new HashMap(); - map.put("location", "游戏推荐"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", detailedEntity.getName()); - map.put("page", "游戏"); - DataCollectionManager.onEvent(context, "click-item", map); - - AppController.put("GameEntity", detailedEntity); - Intent intent = new Intent(context, - GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-新游推荐"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); + DownloadItemUtils.setOnClickListener(mContext, holder.downloadBtn, + holder.download_speed, holder.download_percentage, entity, i, + Game1FragmentAdapter.this, + statusMap, platformMap, "游戏-插件", + dismissEntity, "主页:" + entity.getName()); - DownloadItemUtils.setOnClickListener(context, holder.downloadBtn, - holder.downloadSpeed, holder.downloadPercentage, - detailedEntity, position, this, - statusMap, platformMap, "游戏-游戏推荐", dismissEntity, "游戏:" - + detailedEntity.getName()); + DownloadItemUtils.updateItem(mContext, holder.labelList, + holder.game_progressbar, holder.game_ll_info, holder.download_speed, + holder.download_percentage, holder.downloadBtn, entity, platformMap, + statusMap); + } - DownloadItemUtils.updateItem(context, holder.labelList, - holder.gameProgressbar, holder.gameInfo, - holder.downloadSpeed, holder.downloadPercentage, - holder.downloadBtn, detailedEntity, platformMap, statusMap); - } else if (viewHolder instanceof FooterViewHolder) { - FooterViewHolder holder = (FooterViewHolder) viewHolder; - if (isNetworkError) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(list.size()); - } - }); - } else { - holder.footerview_progressbar.setVisibility(View.VISIBLE); - holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); - } - } - } + public class ImageViewHolder extends RecyclerView.ViewHolder { - @Override - public int getItemViewType(int position) { - return position; - } + private ImageView imageView; - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - if (i == list.size()) { - return new FooterViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.refresh_footerview, viewGroup, false)); - } else { - return new GameViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.home_list_item_gamenormal_type, viewGroup, false)); - } - } + public ImageViewHolder(View itemView) { + super(itemView); - public List getList() { - return list; - } + imageView = (ImageView) itemView; + } - public void setList(List list) { - this.list = list; - notifyDataSetChanged(); - } + public void initViewHolder(int position) { + int offset = 1; + 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(), imageView, -1); + imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { - public boolean isRemove() { - return isRemove; - } + 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); + } - public void setRemove(boolean isRemove) { - this.isRemove = isRemove; - } + } + }); + break; + } + } + offset = subjectList.get(i).getData().size() + offset + 1; + } + } + } - public boolean isLoading() { - return isLoading; - } + public class HeadViewHolder extends RecyclerView.ViewHolder { + public ImageView thumb; + public TextView title; + public LinearLayout link; - public void setLoading(boolean isLoading) { - this.isLoading = isLoading; - } + public HeadViewHolder(View view) { + super(view); + this.thumb = (ImageView) view.findViewById(R.id.head_thumb); + this.title = (TextView) view.findViewById(R.id.head_title); + this.link = (LinearLayout) view.findViewById(R.id.head_link); + } - public void setDestroy(boolean isDestroy) { - this.isDestroy = isDestroy; - } + public void initViewHolder(int position) { + int offset = 1; + for (int i = 0, size = subjectList.size(); i < size; i++) { + if (position == offset) { + thumb.setVisibility(View.GONE); + title.setText(subjectList.get(i).getName()); + final int ii = i; + link.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { - public boolean isNetworkError() { - return isNetworkError; - } + Intent intent = new Intent(mContext, HotCardActivity.class); + intent.putExtra("id", subjectList.get(ii).getId()); + intent.putExtra("name", subjectList.get(ii).getName()); + mContext.startActivity(intent); - public void setNetworkError(boolean isNetworkError) { - this.isNetworkError = isNetworkError; - } + } + }); + 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 HeadViewHolder) { + ((HeadViewHolder) holder).initViewHolder(position); + } else if (holder instanceof ImageViewHolder) { + ((ImageViewHolder) holder).initViewHolder(position); + } else if (holder instanceof GameNormalViewHolder) { + initGameNormalViewHolder((GameNormalViewHolder) holder, position); + } else if (holder instanceof GameTestViewHolder) { + initGameTestViewHolder((GameTestViewHolder) holder, position); + } + } + + @Override + public int getItemCount() { + int subjectSize = 0; + if (!subjectList.isEmpty()) { + SubjectEntity subjectEntity; + for (int i = 0, size = subjectList.size(); i < size; i++) { + subjectEntity = subjectList.get(i); + subjectSize += 1 + subjectEntity.getData().size(); + } + } + return 1 + subjectSize; + } + + @Override + public int getItemViewType(int position) { + + if (position == 0) { + return ITEM_TYPE.slide; + } + + int offset = 1; + GameEntity gameEntity; + for (int i = 0, size = subjectList.size(); i < size; i++) { + if (position == offset) { + return ITEM_TYPE.head; + } + if (position > offset && position <= subjectList.get(i).getData().size() + offset) { + gameEntity = subjectList.get(i).getData().get(position - offset - 1); + if (!TextUtils.isEmpty(gameEntity.getImage())) { + return ITEM_TYPE.image; + } + if (gameEntity.getTest() != null) { + return ITEM_TYPE.game_test_type; + } + return ITEM_TYPE.game_normal_type; + } + offset = subjectList.get(i).getData().size() + offset + 1; + } + + return -1; + } + + public List getSubjectList() { + return subjectList; + } } 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 5f6bd1872b..a82bb7395d 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java @@ -4,487 +4,67 @@ import android.os.Bundle; import android.os.Handler; 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.v4.widget.SwipeRefreshLayout.OnRefreshListener; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; -import com.gh.base.AppController; -import com.gh.common.util.DownloadItemUtils; +import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; 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.GameActivity; 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.eventbus.EBNetworkState; -import com.gh.gamecenter.eventbus.EBPWDismiss; -import com.gh.gamecenter.eventbus.EBPackage; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.concurrent.LinkedBlockingQueue; +/** + * 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; -import de.greenrobot.event.EventBus; + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); -public class Game2Fragment extends Fragment implements OnRefreshListener { + view = View.inflate(getActivity(), R.layout.plugin1_fragment, null); + mRecyclerView = (RecyclerView) view.findViewById(R.id.game_list); - private View view; - private RecyclerView recyclerview; - private SwipeRefreshLayout game_swipe_refresh; - private Game2FragmentAdapter adapter; - private LinearLayoutManager layoutManager; - private TextView game_tv_label; - private RelativeLayout game_rl_label; - private RelativeLayout.LayoutParams rparams; - private LinearLayout reuse_no_connection; + mSwipeRefreshLayout = (SwipeRefreshLayout) view + .findViewById(R.id.game_swipe_refresh); + mSwipeRefreshLayout.setColorSchemeResources(R.color.theme_colors); + mSwipeRefreshLayout.setOnRefreshListener(this); - // 黄壮华 添加 记录信息的map 修改2015/8/18 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap nameMap; - private ArrayMap> platformMap; + mProgressBarCircularIndeterminate = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading); + mProgressBarCircularIndeterminate.setVisibility(View.GONE); + mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + game2FragmentAdapter = new Game2FragmentAdapter(getActivity(),this); + mRecyclerView.setAdapter(game2FragmentAdapter); + mRecyclerView.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); + } - private boolean isEverpause = false; + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + if(container != null){ + container.removeView(view); + } + return view; + } - private boolean isDestroy = false; + private Handler handler = new Handler(); - private ArrayMap statusMap; + Runnable runnable = new Runnable() { + @Override + public void run() { + mSwipeRefreshLayout.setRefreshing(false); + } + }; - private DismissEntity dismissEntity; - - private Handler handler = new Handler(); - - // 黄壮华 添加观察者 修改2015/8/15 - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged( - HashMap downloadingEntries) { - if (!game_swipe_refresh.isRefreshing()) { - for (java.util.Map.Entry entry : downloadingEntries - .entrySet()) { - DownloadEntry downloadEntry = entry.getValue(); - Integer location = locationMap.get(downloadEntry.getName()); - if (location != null) { - int index = location.intValue(); - String platform = downloadEntry.getMeta().get( - "platform"); - - LinkedBlockingQueue queue = platformMap - .get(downloadEntry.getName()); - if (queue == null) { - queue = new LinkedBlockingQueue(); - queue.offer(platform); - platformMap.put(downloadEntry.getName(), queue); - } - - GameEntity detailedEntity = getEntityByLocation(index); - - if (detailedEntity != null) { - if (!"pause".equals(statusMap.get(entry.getValue() - .getUrl()))) { - ArrayMap entryMap = detailedEntity - .getEntryMap(); - if (entryMap == null) { - entryMap = new ArrayMap(); - detailedEntity.setEntryMap(entryMap); - } - entryMap.put(platform, downloadEntry); - adapter.notifyItemChanged(index); - } - } - } - } - } - } - }; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - - view = View.inflate(getActivity(), R.layout.game_new_testgame_fragment, - null); - - dismissEntity = new DismissEntity(false); - - statusMap = new ArrayMap(); - locationMap = new ArrayMap(); - gameMap = new ArrayMap>(); - nameMap = new ArrayMap(); - platformMap = new ArrayMap>(); - - // 黄壮华 添加 初始化游戏状态 修改2015/8/21 - DownloadItemUtils.initializeGameMap(getActivity(), gameMap); - - game_rl_label = (RelativeLayout) view.findViewById(R.id.game_rl_label); - game_tv_label = (TextView) view.findViewById(R.id.game_tv_label); - - rparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, - LayoutParams.WRAP_CONTENT); - - game_swipe_refresh = (SwipeRefreshLayout) view - .findViewById(R.id.game_swipe_refresh); - game_swipe_refresh.setColorSchemeResources(R.color.theme_colors); - game_swipe_refresh.setOnRefreshListener(this); - - 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); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } - }); - - recyclerview = (RecyclerView) view.findViewById(R.id.game_list); - recyclerview.setHasFixedSize(true); - layoutManager = new LinearLayoutManager(getActivity()); - recyclerview.setLayoutManager(layoutManager); - adapter = new Game2FragmentAdapter(getActivity(), locationMap, gameMap, - nameMap, platformMap, game_tv_label, recyclerview, - game_swipe_refresh, reuse_no_connection, - statusMap, dismissEntity); - recyclerview.setAdapter(adapter); - recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - - super.onScrolled(recyclerView, dx, dy); - - int position = layoutManager.findFirstVisibleItemPosition(); - - if (position == 0 - && layoutManager.findViewByPosition(position).getTop() == 0) { - game_rl_label.setVisibility(View.GONE); - } else { - if (!game_swipe_refresh.isRefreshing()) { - game_rl_label.setVisibility(View.VISIBLE); - } - } - - if (adapter.getPosition_tomorrow() != -1 - && position >= adapter.getPosition_tomorrow() - && position <= adapter.getTomorrowList().size() - + adapter.getPosition_tomorrow()) { - game_tv_label.setText("明天"); - game_tv_label.setBackgroundResource(R.drawable.title_red); - } else if (adapter.getPosition_aftertomorrow() != -1 - && position >= adapter.getPosition_aftertomorrow() - && position <= adapter.getTheDayAfterTomorrowList() - .size() + adapter.getPosition_aftertomorrow()) { - game_tv_label.setText("后天"); - game_tv_label - .setBackgroundResource(R.drawable.title_orange); - } else if (adapter.getPosition_before() != -1 - && position >= adapter.getPosition_before() - && position <= adapter.getBeforeList().size() - + adapter.getPosition_before()) { - game_tv_label.setText("昨天/以前"); - game_tv_label.setBackgroundResource(R.drawable.title_gray); - } else if (adapter.getPosition_today() != -1) { - game_tv_label.setText("今天"); - game_tv_label.setBackgroundResource(R.drawable.title_blue); - } - - if (position == adapter.getPosition_tomorrow() - 1 - || position == adapter.getPosition_aftertomorrow() - 1 - || position == adapter.getPosition_before() - 1) { - int buttom = layoutManager.findViewByPosition(position) - .getBottom(); - if (buttom <= game_rl_label.getHeight()) { - rparams.topMargin = buttom - game_rl_label.getHeight(); - game_rl_label.setLayoutParams(rparams); - } else { - rparams.topMargin = 0; - game_rl_label.setLayoutParams(rparams); - } - } else { - rparams.topMargin = 0; - game_rl_label.setLayoutParams(rparams); - } - } - - @Override - public void onScrollStateChanged(RecyclerView recyclerView, - int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (!isDestroy - && newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == adapter - .getItemCount() - 1) { - if (!adapter.isRemove() && !adapter.isLoading()) { - adapter.addList(adapter.getTotalSize()); - } - } - } - - }); - recyclerview.addItemDecoration(new VerticalItemDecoration( - getActivity(), 1)); - - EventBus.getDefault().register(this); - - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - if (container != null) { - container.removeView(view); - } - return view; - } - - public void onEventMainThread(EBPackage busFour) { - String name = nameMap.get(busFour.getPackageName()); - if (name != null) { - int location = locationMap.get(name); - if ("安装".equals(busFour.getType())) { - GameEntity detailedEntity = getEntityByLocation(location); - if (detailedEntity != null) { - 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); - } - } - } - - private GameEntity getEntityByLocation(int location) { - GameEntity entity = null; - int tdSize = adapter.getTodayList().size(); - int tmSize = adapter.getTomorrowList().size(); - int tdfSize = adapter.getTheDayAfterTomorrowList().size(); - int bfSize = adapter.getBeforeList().size(); - if (tdSize != 0 && tmSize == 0 && tdfSize == 0 && bfSize == 0) { - entity = adapter.getTodayList().get(location - 1); - } else if (tdSize == 0 && tmSize != 0 && tdfSize == 0 && bfSize == 0) { - entity = adapter.getTomorrowList().get(location - 1); - } else if (tdSize == 0 && tmSize == 0 && tdfSize != 0 && bfSize == 0) { - entity = adapter.getTheDayAfterTomorrowList().get(location - 1); - } else if (tdSize == 0 && tmSize == 0 && tdfSize == 0 && bfSize != 0) { - entity = adapter.getBeforeList().get(location - 1); - } else if (tdSize != 0 && tmSize != 0 && tdfSize == 0 && bfSize == 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else { - entity = adapter.getTomorrowList().get(location - tdSize - 2); - } - } else if (tdSize != 0 && tmSize == 0 && tdfSize != 0 && bfSize == 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else { - entity = adapter.getTheDayAfterTomorrowList().get( - location - tdSize - 2); - } - } else if (tdSize != 0 && tmSize == 0 && tdfSize == 0 && bfSize != 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else { - entity = adapter.getBeforeList().get(location - tdSize - 2); - } - } else if (tdSize == 0 && tmSize != 0 && tdfSize != 0 && bfSize == 0) { - if (location <= tmSize) { - entity = adapter.getTomorrowList().get(location - 1); - } else { - entity = adapter.getTheDayAfterTomorrowList().get( - location - tmSize - 2); - } - } else if (tdSize == 0 && tmSize != 0 && tdfSize == 0 && bfSize != 0) { - if (location <= tmSize) { - entity = adapter.getTomorrowList().get(location - 1); - } else { - entity = adapter.getBeforeList().get(location - tmSize - 2); - } - } else if (tdSize == 0 && tmSize == 0 && tdfSize != 0 && bfSize != 0) { - if (location <= tdfSize) { - entity = adapter.getTheDayAfterTomorrowList().get(location - 1); - } else { - entity = adapter.getBeforeList().get(location - tdfSize - 2); - } - } else if (tdSize != 0 && tmSize != 0 && tdfSize != 0 && bfSize == 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else if (location > tdSize + 1 && location <= tdSize + tmSize + 1) { - entity = adapter.getTomorrowList().get(location - tdSize - 2); - } else { - entity = adapter.getTheDayAfterTomorrowList().get( - location - tdSize - tmSize - 3); - } - } else if (tdSize != 0 && tmSize != 0 && tdfSize == 0 && bfSize != 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else if (location > tdSize + 1 && location <= tdSize + tmSize + 1) { - entity = adapter.getTomorrowList().get(location - tdSize - 2); - } else { - entity = adapter.getBeforeList().get( - location - tdSize - tmSize - 3); - } - } else if (tdSize != 0 && tmSize == 0 && tdfSize != 0 && bfSize != 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else if (location > tdSize + 1 - && location <= tdSize + tdfSize + 1) { - entity = adapter.getTomorrowList().get(location - tdSize - 2); - } else { - entity = adapter.getBeforeList().get( - location - tdSize - tdfSize - 3); - } - } else if (tdSize == 0 && tmSize != 0 && tdfSize != 0 && bfSize != 0) { - if (location <= tmSize) { - entity = adapter.getTomorrowList().get(location - 1); - } else if (location > tmSize + 1 - && location <= tmSize + tdfSize + 1) { - entity = adapter.getTheDayAfterTomorrowList().get( - location - tmSize - 2); - } else { - entity = adapter.getBeforeList().get( - location - tmSize - tdfSize - 3); - } - } else if (tdSize != 0 && tmSize != 0 && tdfSize != 0 && bfSize != 0) { - if (location <= tdSize) { - entity = adapter.getTodayList().get(location - 1); - } else if (location > tdSize + 1 && location <= tdSize + tmSize + 1) { - entity = adapter.getTomorrowList().get(location - tdSize - 2); - } else if (location > tdSize + tmSize + 2 - && location <= tdSize + tmSize + tdfSize + 2) { - entity = adapter.getTheDayAfterTomorrowList().get( - location - tdSize - tmSize - 3); - } else { - entity = adapter.getBeforeList().get( - location - tdSize - tmSize - tdfSize - 4); - } - } - return entity; - } - - public void onEventMainThread(EBPWDismiss dismiss) { - if (dismissEntity != null) { - dismissEntity.setShow(false); - } - } - - public void onEventMainThread(EBNetworkState busNetworkState) { - if (busNetworkState.isNetworkConnected()) { - if (reuse_no_connection.getVisibility() == View.VISIBLE) { - game_swipe_refresh.setRefreshing(true); - recyclerview.setVisibility(View.VISIBLE); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getTotalSize()); - } - } - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - if (!isDestroy) { - adapter = new Game2FragmentAdapter(getActivity(), locationMap, - gameMap, nameMap, platformMap, game_tv_label, - recyclerview, game_swipe_refresh, reuse_no_connection, - statusMap, dismissEntity); - recyclerview.setAdapter(adapter); - } - } - }; - - @Override - public void onRefresh() { - handler.postDelayed(runnable, 1000); - } - - @Override - public void onResume() { - super.onResume(); - if (isEverpause) { - // 黄壮华 添加 初始化游戏状态 修改2015/8/21 - DownloadItemUtils.initializeGameMap(getActivity(), gameMap); - ArrayList tdList = new ArrayList(); - for (GameEntity entity : adapter.getTodayList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - tdList.add(entity); - } - ArrayList tmList = new ArrayList(); - for (GameEntity entity : adapter.getTomorrowList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - tmList.add(entity); - } - ArrayList dftList = new ArrayList(); - for (GameEntity entity : adapter.getTheDayAfterTomorrowList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - dftList.add(entity); - } - ArrayList bftList = new ArrayList(); - for (GameEntity entity : adapter.getBeforeList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - bftList.add(entity); - } - adapter.setGameList(tdList, tmList, dftList, bftList); - } - isEverpause = false; - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - } - - @Override - public void onPause() { - super.onPause(); - isEverpause = true; - statusMap.clear(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - } - - @Override - public void onDestroy() { - super.onDestroy(); - isDestroy = true; - adapter.setDestory(true); - AppController.canclePendingRequests(GameActivity.class); - EventBus.getDefault().unregister(this); - view = null; - recyclerview = null; - game_swipe_refresh = null; - adapter = null; - layoutManager = null; - game_tv_label = null; - game_rl_label = null; - rparams = null; - reuse_no_connection = null; - locationMap = null; - gameMap = null; - nameMap = null; - platformMap = null; - statusMap = null; - dismissEntity = null; - handler = null; - dataWatcher = null; - } + @Override + public void onRefresh() { + handler.postDelayed(runnable, 1000); + } } 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 18d472cdd7..e0982cd43f 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java @@ -2,10 +2,9 @@ package com.gh.gamecenter.game; import android.content.Context; import android.content.Intent; -import android.support.v4.util.ArrayMap; -import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v4.app.FragmentActivity; import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.RecyclerView.ViewHolder; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -13,30 +12,24 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; -import android.widget.Toast; -import com.android.volley.NoConnectionError; import com.android.volley.Response; -import com.android.volley.TimeoutError; import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.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.NewsActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.db.info.GameInfo; -import com.gh.gamecenter.entity.ApkEntity; -import com.gh.gamecenter.entity.DismissEntity; +import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; +import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.SubjectEntity; import com.gh.gamecenter.manager.DataCollectionManager; -import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -45,725 +38,326 @@ import org.json.JSONArray; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.LinkedBlockingQueue; - -public class Game2FragmentAdapter extends - RecyclerView.Adapter { - - public class ITEM_TYPE { - public static final int head = 0; - public static final int game_layout = 1; - public static final int refresh_footer = 2; - } - - private int position_today = -1;// 今天的position - private int position_tomorrow = -1;// 明天的position - private int position_aftertomorrow = -1;// 后天的position - private int position_before = -1;// 昨天和以前的position - - private List todayGameList; - private List tomorrowGameList; - private List dayAfterTomorrowGameList; - private List beforeGameList; - - private Context context; - private LayoutInflater layoutInflater; - - private RecyclerView recyclerView; - private SwipeRefreshLayout game_swipe_refresh; - private LinearLayout reuse_no_connection; - private TextView game_tv_label; - - private boolean isRemove; - private boolean isLoading; -// private boolean isLoaded; - private boolean isNetworkError; - private boolean isDestory; - - // 黄壮华 添加 记录信息的map 修改2015/8/18 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap nameMap; - private ArrayMap> platformMap; - - private ArrayMap statusMap; - - private DismissEntity dismissEntity; - - public Game2FragmentAdapter(Context con, ArrayMap lMap, - ArrayMap> gMap, - ArrayMap nMap, - ArrayMap> pMap, - TextView textView, RecyclerView rView, - SwipeRefreshLayout swipeRefreshLayout, LinearLayout linearLayout, - ArrayMap sMap, DismissEntity dEntity) { - - locationMap = lMap; - gameMap = gMap; - nameMap = nMap; - platformMap = pMap; - game_tv_label = textView; - recyclerView = rView; - game_swipe_refresh = swipeRefreshLayout; - reuse_no_connection = linearLayout; - - statusMap = sMap; - - dismissEntity = dEntity; - - context = con; - layoutInflater = LayoutInflater.from(context); - - todayGameList = new ArrayList(); - tomorrowGameList = new ArrayList(); - dayAfterTomorrowGameList = new ArrayList(); - beforeGameList = new ArrayList(); - - isRemove = false; - isLoading = false; -// isLoaded = false; - isNetworkError = false; - isDestory = false; - - addList(0); - } - - public void addList(final int offset) { - if (isLoading) { - return; - } - isLoading = true; - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/game/xincekapai?limit=10&offset=" + offset, - Constants.GAME_CD), new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - if (!isDestory) { - processingData(response, offset); - } - isLoading = false; -// isLoaded = true; -// notifyItemChanged(getItemCount() - 1); - } - - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - isLoading = false; - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - if (offset == 0) { - if (game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } - recyclerView.setVisibility(View.GONE); - reuse_no_connection.setVisibility(View.VISIBLE); - } else { - Toast.makeText(context, "网络错误", - Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } - } - } - - }); - AppController.addToRequestQueue(request, Game2Fragment.class); - } - - private void processingData(JSONArray response, int offset) { - Type listType = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - GameManager manager = new GameManager(context); - // 黄壮华 初始化游戏状态 修改2015/8/15 - List list = gson.fromJson(response.toString(), listType); - if (list != null && !list.isEmpty()) { - for (GameEntity entity : list) { - entity.setEntryMap(gameMap.get(entity.getName())); - if (entity.getApk() != null) { - for (ApkEntity apkEntity : entity.getApk()) { - manager.addOrUpdate(new GameInfo( - apkEntity.getPackageName(), entity.getId(), entity - .getName())); - } - } - } - initDatas(list, offset); - } - - if (offset == 0 && game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } - - if (list.isEmpty() || (offset == 0 && list.size() < 10)) { - isRemove = true; - notifyItemChanged(getItemCount() - 1); - } - - // 黄壮华 获取游戏位置信息 修改2015/8/19 - for (int i = 0, size = list.size(); i < size; i++) { - GameEntity entity = list.get(i); - if (entity.getApk() != null) { - for (ApkEntity apkEntity : entity.getApk()) { - nameMap.put(apkEntity.getPackageName(), entity.getName()); - } - } - } - - } - - public void initDatas(List datas, int offset) { - // 去重 - for (int i = 0; i < datas.size(); i++) { - String id = datas.get(i).getId(); - int index = i; - - if (!todayGameList.isEmpty()) { - for (int j = 0; j < todayGameList.size(); j++) { - if (todayGameList.get(j).getId().equals(id)) { - datas.remove(i); - i--; - break; - } - } - if (i != index) { - continue; - } - } - - if (!tomorrowGameList.isEmpty()) { - for (int j = 0; j < tomorrowGameList.size(); j++) { - if (tomorrowGameList.get(j).getId().equals(id)) { - datas.remove(i); - i--; - break; - } - } - if (i != index) { - continue; - } - } - - if (!dayAfterTomorrowGameList.isEmpty()) { - for (int j = 0; j < dayAfterTomorrowGameList.size(); j++) { - if (dayAfterTomorrowGameList.get(j).getId().equals(id)) { - datas.remove(i); - i--; - break; - } - } - if (i != index) { - continue; - } - } - - if (!beforeGameList.isEmpty()) { - for (int j = 0; j < beforeGameList.size(); j++) { - if (beforeGameList.get(j).getId().equals(id)) { - datas.remove(i); - i--; - break; - } - } - if (i != index) { - continue; - } - } - } - - Calendar date = Calendar.getInstance(); - int today = date.get(Calendar.DAY_OF_MONTH); - for (int i = 0; i < datas.size(); i++) { - date.setTimeInMillis(Long.parseLong(datas.get(i).getTest() - .getStart() - + "000")); - - int currDay = date.get(Calendar.DAY_OF_MONTH); - - if (currDay == today) { - todayGameList.add(datas.get(i)); - } else if (currDay == today + 1) { - tomorrowGameList.add(datas.get(i)); - } else if (currDay == today + 2) { - dayAfterTomorrowGameList.add(datas.get(i)); - } else { - beforeGameList.add(datas.get(i)); - } - } - - // 黄壮华 2015/8/18 初始游戏位置状态 - int interval = 1; - for (int i = 0, size = todayGameList.size(); i < size; i++) { - locationMap.put(todayGameList.get(i).getName(), i + interval); - } - if (todayGameList.size() != 0) { - interval += (todayGameList.size() + 1); - } - for (int i = 0, size = tomorrowGameList.size(); i < size; i++) { - locationMap.put(tomorrowGameList.get(i).getName(), i + interval); - } - if (tomorrowGameList.size() != 0) { - interval += (tomorrowGameList.size() + 1); - } - for (int i = 0, size = dayAfterTomorrowGameList.size(); i < size; i++) { - locationMap.put(dayAfterTomorrowGameList.get(i).getName(), i - + interval); - } - if (dayAfterTomorrowGameList.size() != 0) { - interval += (dayAfterTomorrowGameList.size() + 1); - } - for (int i = 0, size = beforeGameList.size(); i < size; i++) { - locationMap.put(beforeGameList.get(i).getName(), i + interval); - } - - if (!todayGameList.isEmpty()) { - position_today = 0; - } - if (!tomorrowGameList.isEmpty()) { - if (position_today != -1) { - position_tomorrow = todayGameList.size() + 1; - } else { - position_tomorrow = 0; - } - } - if (!dayAfterTomorrowGameList.isEmpty()) { - if (position_today != -1 && position_tomorrow != -1) { - position_aftertomorrow = position_tomorrow - + tomorrowGameList.size() + 1; - } else if (position_today == -1 && position_tomorrow != -1) { - position_aftertomorrow = tomorrowGameList.size() + 1; - } else if (position_today != -1 && position_tomorrow == -1) { - position_aftertomorrow = todayGameList.size() + 1; - } else if (position_today == -1 && position_tomorrow == -1) { - position_aftertomorrow = 0; - } - } - if (!beforeGameList.isEmpty()) { - if (position_today != -1 && position_tomorrow != -1 - && position_aftertomorrow != -1) { - position_before = position_aftertomorrow - + dayAfterTomorrowGameList.size() + 1; - } else if (position_today != -1 && position_tomorrow != -1 - && position_aftertomorrow == -1) { - position_before = position_tomorrow + tomorrowGameList.size() - + 1; - } else if (position_today != -1 && position_tomorrow == -1 - && position_aftertomorrow != -1) { - position_before = position_aftertomorrow - + dayAfterTomorrowGameList.size() + 1; - } else if (position_today == -1 && position_tomorrow != -1 - && position_aftertomorrow != -1) { - position_before = position_aftertomorrow - + dayAfterTomorrowGameList.size() + 1; - } else if (position_today != -1 && position_tomorrow == -1 - && position_aftertomorrow == -1) { - position_before = todayGameList.size() + 1; - } else if (position_today == -1 && position_tomorrow == -1 - && position_aftertomorrow != -1) { - position_before = dayAfterTomorrowGameList.size() + 1; - } else if (position_today == -1 && position_tomorrow != -1 - && position_aftertomorrow == -1) { - position_before = tomorrowGameList.size() + 1; - } else if (position_today == -1 && position_tomorrow == -1 - && position_aftertomorrow == -1) { - position_before = 0; - } - } - if (offset == 0) { - if (position_today != -1) { - game_tv_label.setText("今天"); - game_tv_label.setBackgroundResource(R.drawable.title_blue); - } else if (position_tomorrow != -1) { - game_tv_label.setText("明天"); - game_tv_label.setBackgroundResource(R.drawable.title_red); - } else if (position_aftertomorrow != -1) { - game_tv_label.setText("后天"); - game_tv_label.setBackgroundResource(R.drawable.title_orange); - } else if (position_before != -1) { - game_tv_label.setText("昨天/以前"); - game_tv_label.setBackgroundResource(R.drawable.title_gray); - } - } - notifyDataSetChanged(); - } - - @Override - public int getItemViewType(int position) { - if (position_today != -1) { - if (position == position_today) { - return ITEM_TYPE.head; - } - if (position > position_today && position <= todayGameList.size()) { - return ITEM_TYPE.game_layout; - } - } - - if (position_tomorrow != -1) { - if (position == position_tomorrow) { - return ITEM_TYPE.head; - } - if (position > position_tomorrow - && position <= tomorrowGameList.size() + position_tomorrow) { - return ITEM_TYPE.game_layout; - } - } - - if (position_aftertomorrow != -1) { - if (position == position_aftertomorrow) { - return ITEM_TYPE.head; - } - if (position > position_aftertomorrow - && position <= dayAfterTomorrowGameList.size() - + position_aftertomorrow) { - return ITEM_TYPE.game_layout; - } - } - - if (position_before != -1) { - if (position == position_before) { - return ITEM_TYPE.head; - } - if (position > position_before - && position <= beforeGameList.size() + position_before) { - return ITEM_TYPE.game_layout; - } - } - - return ITEM_TYPE.refresh_footer; - } - - @Override - public int getItemCount() { - if (getTotalSize() == 0) { - return 0; - } - - int head = 0; - if (position_today != -1) { - head++; - } - if (position_tomorrow != -1) { - head++; - } - if (position_aftertomorrow != -1) { - head++; - } - if (position_before != -1) { - head++; - } - return head + todayGameList.size() + tomorrowGameList.size() - + dayAfterTomorrowGameList.size() + beforeGameList.size() + 1; - } - - @Override - public void onBindViewHolder(ViewHolder viewHolder, int position) { - if (viewHolder instanceof HeadViewHolder) { - ((HeadViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof GameTestViewHolder) { - ((GameTestViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof FooterViewHolder) { - FooterViewHolder holder = (FooterViewHolder) viewHolder; - if (isNetworkError) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(getTotalSize()); - } - }); - } else if (isRemove) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载完毕"); - holder.rootView.setClickable(false); - } -// else if (isLoaded) { -// holder.footerview_progressbar.setVisibility(View.GONE); -// holder.footerview_tv_loading.setText("点击加载更多"); -// holder.rootView.setClickable(true); -// holder.rootView.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// isLoaded = false; -// notifyItemChanged(getItemCount() - 1); -// addList(getTotalSize()); -// } -// }); -// } - else { - holder.footerview_progressbar.setVisibility(View.VISIBLE); - holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); - } - } - } - - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == ITEM_TYPE.head) { - return new HeadViewHolder(layoutInflater.inflate( - R.layout.news_list_item_category, parent, false)); - } else if (viewType == ITEM_TYPE.game_layout) { - return new GameTestViewHolder(layoutInflater.inflate( - R.layout.home_list_item_gametest_type, parent, false)); - } - return new FooterViewHolder(layoutInflater.inflate( - R.layout.refresh_footerview, parent, false)); - } - - public class HeadViewHolder extends ViewHolder { - public TextView headType; - - public HeadViewHolder(View v) { - super(v); - headType = (TextView) v.findViewById(R.id.tv_label); - } - - public void initViewHolder(int position) { - if (position == position_today) { - headType.setText("今天"); - headType.setBackgroundResource(R.drawable.title_blue); - } - - if (position == position_tomorrow) { - headType.setText("明天"); - headType.setBackgroundResource(R.drawable.title_red); - } - - if (position == position_aftertomorrow) { - headType.setText("后天"); - headType.setBackgroundResource(R.drawable.title_orange); - } - - if (position == position_before) { - headType.setText("昨天/以前"); - headType.setBackgroundResource(R.drawable.title_gray); - } - } - } - - public class GameTestViewHolder extends ViewHolder { - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView downloadBtn; - public TextView gameDes; - public TextView gameTestType; - public TextView gameTestTime; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed, download_percentage; - - private View rootItem; - - public GameTestViewHolder(View v) { - super(v); - this.rootItem = v; - gameThumb = (ImageView) v.findViewById(R.id.home2_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home2_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home2_download_btn); - gameDes = (TextView) v.findViewById(R.id.home2_game_des); - gameTestType = (TextView) v.findViewById(R.id.home2_test_type); - gameTestTime = (TextView) v.findViewById(R.id.home2_test_time); - labelList = (LinearLayout) v.findViewById(R.id.home2_label_list); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home2_game_progressbar); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home2_game_ll_info); - download_speed = (TextView) v - .findViewById(R.id.home2_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home2_download_percentage); - } - - public void initViewHolder(int position) { - - GameEntity entity = null; - - if (position > position_today - && position <= todayGameList.size() + position_today) { - entity = todayGameList.get(position - position_today - 1); - } else if (position > position_tomorrow - && position <= tomorrowGameList.size() + position_tomorrow) { - entity = tomorrowGameList.get(position - position_tomorrow - 1); - } else if (position > position_aftertomorrow - && position <= dayAfterTomorrowGameList.size() - + position_aftertomorrow) { - entity = dayAfterTomorrowGameList.get(position - - position_aftertomorrow - 1); - } else if (position > position_before - && position <= beforeGameList.size() + position_before) { - entity = beforeGameList.get(position - position_before - 1); - } - - if (entity != null) { - if (entity.getApk() == null || entity.getApk().isEmpty()) { - gameNameAndSize.setText(entity.getName()); - } else { - gameNameAndSize.setText(entity.getName() + " | " - + entity.getApk().get(0).getSize()); - } - ImageUtils.getInstance(context).display(entity.getIcon(), - gameThumb); - gameDes.setText(entity.getBrief()); - gameTestType.setText(entity.getTest().getType()); - if (entity.getTest().getStart() == 0) { - gameTestTime.setVisibility(View.GONE); - } else { - gameTestTime.setText(GameViewUtils.getGameTestDate(entity - .getTest().getStart())); - } - - final GameEntity gameEntity = entity; - - rootItem.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "新游-新测卡牌"); - DataUtils.onEvent(context, "游戏详情", gameEntity.getName(), - kv); - - Map map = new HashMap(); - map.put("location", "新测卡牌"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", gameEntity.getName()); - map.put("page", "游戏"); - DataCollectionManager.onEvent(context, "click-item", map); - - AppController.put("GameEntity", gameEntity); - Intent intent = new Intent(context, - GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-新测卡牌"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - - boolean isGone = false; - - if (entity.getApk() == null || entity.getApk().isEmpty()) { - downloadBtn.setVisibility(View.GONE); - isGone = true; - } else { - if (entity.getTest().getEnd() == 0) { - downloadBtn.setVisibility(View.VISIBLE); - DownloadItemUtils.setOnClickListener(context, - downloadBtn, download_speed, - download_percentage, entity, position, - Game2FragmentAdapter.this, statusMap, platformMap, "游戏-新测卡牌", - dismissEntity, "新游:" + entity.getName()); - } else { - long endTime = Long.valueOf(entity.getTest().getEnd() - + "000"); - long todayTime = new Date().getTime(); - if (todayTime > endTime) { - // 测试时间已过 - downloadBtn.setVisibility(View.GONE); - isGone = true; - } else { - // 测试时间未过 - downloadBtn.setVisibility(View.VISIBLE); - DownloadItemUtils.setOnClickListener(context, - downloadBtn, download_speed, - download_percentage, entity, position, - Game2FragmentAdapter.this, statusMap, platformMap, - "游戏-新测卡牌", dismissEntity, - "新游:" + entity.getName()); - } - } - } - - DownloadItemUtils.updateItem(context, labelList, - game_progressbar, game_ll_info, download_speed, - download_percentage, downloadBtn, entity, platformMap, - statusMap); - - if (Config.isShow && isGone) { - downloadBtn.setVisibility(View.GONE); - } - } - } - } - - public int getTotalSize() { - return todayGameList.size() + tomorrowGameList.size() - + dayAfterTomorrowGameList.size() + beforeGameList.size(); - } - - public boolean isRemove() { - return isRemove; - } - - public boolean isLoading() { - return isLoading; - } - - public List getTodayList() { - return todayGameList; - } - - public List getTomorrowList() { - return tomorrowGameList; - } - - public List getTheDayAfterTomorrowList() { - return dayAfterTomorrowGameList; - } - - public List getBeforeList() { - return beforeGameList; - } - - public int getPosition_today() { - return position_today; - } - - public int getPosition_tomorrow() { - return position_tomorrow; - } - - public int getPosition_aftertomorrow() { - return position_aftertomorrow; - } - - public int getPosition_before() { - return position_before; - } - - public void setGameList(List tdList, List tmList, - List dftList, List bftList) { - todayGameList = tdList; - tomorrowGameList = tmList; - dayAfterTomorrowGameList = dftList; - beforeGameList = bftList; - notifyDataSetChanged(); - } - - public void setDestory(boolean isDestory) { - this.isDestory = isDestory; - } - - public boolean isNetworkError() { - return isNetworkError; - } - - public void setNetworkError(boolean isNetworkError) { - this.isNetworkError = isNetworkError; - } +/** + * 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 entity2List; + private Context mContext; + private int position_one = -1; + private int position_two = -1; + private int position_three = -1; + private int imgPosition = -1; + + public Game2FragmentAdapter(FragmentActivity activity, Game2Fragment game2Fragment) { + this.mContext = activity; + LoadData2(); + } + + private void LoadData2() { + JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( + TimestampUtils.addTimestamp(Config.HOST + "v1d50/game/tuijian", + Constants.GAME_CD), new Response.Listener() { + + @Override + public void onResponse(JSONArray response) { + Type listType = new TypeToken>() { + }.getType(); + Gson gson = new Gson(); + entity2List = gson.fromJson(response.toString(), listType); + getDataPosition(); + notifyDataSetChanged(); + + } + + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + + } + + }); + AppController.addToRequestQueue(request, GameFragment.class); + } + + //确定内容位置 + private void getDataPosition() { + if (entity2List.size() > 0) { + if (entity2List.size() == 1) { + position_one = entity2List.get(0).getData().size() + 1; + } + if (entity2List.size() == 2) { + position_one = entity2List.get(0).getData().size() + 1; + position_two = entity2List.get(1).getData().size() + position_one + 1; + } + if (entity2List.size() == 3) { + position_one = entity2List.get(0).getData().size() + 1; + position_two = entity2List.get(1).getData().size() + position_one + 1; + position_three = entity2List.get(2).getData().size() + position_two + 1; + } + } + + } + + @Override + public int getItemViewType(int position) { + if (position_one != -1) { + if (position == 0) { + return ITEM_HEAD; + } + if (position == 1 && entity2List.get(0).getData().get(0).getImage() != null) { + imgPosition = 0; + return ITEM_PIC; + } + if (position > 0 && position < position_one) { + if ("新测卡牌".equals(entity2List.get(0).getName())) { + return ITEM_XINCE; + } + return ITEM; + } + } + if (position_two != -1) { + if (position == position_two - entity2List.get(1).getData().size() - 1) { + return ITEM_HEAD; + } + if (position == position_two - entity2List.get(1).getData().size() && entity2List.get(1).getData().get(0).getImage() != null) { + imgPosition = 1; + return ITEM_PIC; + } + if (position > position_two - entity2List.get(1).getData().size() - 1 && position < position_two) { + if ("新测卡牌".equals(entity2List.get(1).getName())) { + return ITEM_XINCE; + } + return ITEM; + } + } + if (position_three != -1) { + if (position == position_three - entity2List.get(2).getData().size() - 1) { + return ITEM_HEAD; + } + if (position == position_three - entity2List.get(2).getData().size() && entity2List.get(2).getData().get(0).getImage() != null) { + imgPosition = 2; + return ITEM_PIC; + } + if (position > position_three - entity2List.get(2).getData().size() - 1 && position < position_three) { + if ("新测卡牌".equals(entity2List.get(2).getName())) { + return ITEM_XINCE; + } + return ITEM; + } + } + + Log.e("Game2FragmentAdapter", "存在未知类型");//位置判定失败,默认返回大图布局 + return ITEM_PIC; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view; + switch (viewType) { + case ITEM_HEAD: + view = LayoutInflater.from(mContext).inflate(R.layout.home_list_item_head, parent, false); + return new HeadViewHolder(view); + case ITEM: + view = LayoutInflater.from(mContext).inflate(R.layout.home_game_normal_item, parent, false); + return new GameNormalViewHolder(view); + case ITEM_PIC: + view = LayoutInflater.from(mContext).inflate(R.layout.game_tuijian_img, parent, false); + return new ReMenPicViewHolder(view); + case ITEM_XINCE: + view = LayoutInflater.from(mContext).inflate(R.layout.home_game_test_item, parent, false); + return new GameTestViewHolder(view); + default: + return null; + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + GameEntity gameEntity = null; + int index = 0; + int arrId = -1;//记录专题位置 + if (position_one != -1 && position > 0 && position < position_one) { + index = position - 1; + arrId = 0; + gameEntity = entity2List.get(0).getData().get(index); + } else if (position_two != -1 && position > position_two - entity2List.get(1).getData().size() - 1 && position < position_two) { + index = position - position_one - 1; + arrId = 1; + gameEntity = entity2List.get(1).getData().get(index); + } else if (position_three != -1 && position > position_three - entity2List.get(2).getData().size() - 1 && position < position_three) { + index = position - position_two - 1; + arrId = 2; + gameEntity = entity2List.get(2).getData().get(index); + } + + + if (holder instanceof HeadViewHolder) { + if (position == 0) { + ((HeadViewHolder) holder).title.setText(entity2List.get(0).getName()); + } else if (position == position_two - entity2List.get(1).getData().size() - 1) { + ((HeadViewHolder) holder).title.setText(entity2List.get(1).getName()); + } else if (position == position_three - entity2List.get(2).getData().size() - 1) { + ((HeadViewHolder) holder).title.setText(entity2List.get(2).getName()); + } + } else if (holder instanceof GameNormalViewHolder) { + if (gameEntity != null) { + ((GameNormalViewHolder) holder).home1_game_order.setVisibility(View.GONE); + ImageUtils.getInstance(mContext).display(gameEntity.getIcon(), ((GameNormalViewHolder) holder).gameThumb); + GameViewUtils.setLabelList(mContext, ((GameNormalViewHolder) holder).labelList, gameEntity.getTag()); + ((GameNormalViewHolder) holder).gameNameAndSize.setText(gameEntity.getName()); + ((GameNormalViewHolder) holder).gameDes.setText(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief()); + if (arrId != -1 && entity2List.get(arrId).getOrder()) { + ((GameNormalViewHolder) holder).home1_game_order.setVisibility(View.VISIBLE); + if (gameEntity.getName() == null) { + index = index + 1; + } + ((GameNormalViewHolder) holder).home1_game_order.setText(index + ""); + } + } + final GameEntity finalGameEntity = gameEntity; + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + Map kv = new HashMap(); + kv.put("入口", "游戏-推荐-列表"); + DataUtils.onEvent(mContext, "游戏详情", finalGameEntity.getName(), + kv); + + Map map = new HashMap(); + map.put("location", "推荐-列表"); + map.put("createOn", System.currentTimeMillis() / 1000); + map.put("game", finalGameEntity.getName()); + map.put("page", "游戏"); + DataCollectionManager.onEvent(mContext, "click-item", map); + + AppController.put("GameEntity", finalGameEntity); + Intent intent = new Intent(mContext, + GameDetailsActivity.class); + intent.putExtra("entrance", "游戏-推荐列表"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } + }); + } else if (holder instanceof GameTestViewHolder) { + ((GameTestViewHolder) holder).home2_game_order.setVisibility(View.GONE); + ((GameTestViewHolder) holder).gameDes.setText(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief()); + ((GameTestViewHolder) holder).gameNameAndSize.setText(gameEntity.getName()); + ((GameTestViewHolder) holder).gameTestType.setText(gameEntity.getTest().getType()); + ((GameTestViewHolder) holder).gameTestTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart())); + ImageUtils.getInstance(mContext).display(gameEntity.getIcon(), ((GameTestViewHolder) holder).gameThumb); + if (arrId != -1 && entity2List.get(arrId).getOrder()) { + ((GameTestViewHolder) holder).home2_game_order.setVisibility(View.VISIBLE); + if (gameEntity.getName() == null) { + index = index + 1; + } + ((GameTestViewHolder) holder).home2_game_order.setText(index + ""); + } + final GameEntity finalGameEntity1 = gameEntity; + final int i = index; + ((GameTestViewHolder) holder).itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + Map kv = new HashMap(); + kv.put("入口", "主页-新测卡牌"); + DataUtils.onEvent(mContext, "游戏详情", finalGameEntity1.getName(), kv); + + Map kv2 = new HashMap(); + kv2.put(finalGameEntity1.getName(), "点击量"); + DataUtils.onEvent(mContext, "主页数据", "新测卡牌", kv2); + + Map kv3 = new HashMap(); + kv3.put("新测卡牌", i + ""); + DataUtils.onEvent(mContext, "主页数据", "位置数据", kv3); + + Map map = new HashMap(); + map.put("location", "新测卡牌"); + map.put("createOn", System.currentTimeMillis() / 1000); + map.put("game", finalGameEntity1.getName()); + map.put("page", "主页"); + DataCollectionManager.onEvent(mContext, "click-item", + map); + + AppController.put("GameEntity", finalGameEntity1); + Intent intent = new Intent(mContext, + GameDetailsActivity.class); + intent.putExtra("entrance", "主页-新测卡牌"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } + }); + } else if (holder instanceof ReMenPicViewHolder) { + final String id = gameEntity.getId(); + final String type = gameEntity.getType(); + ((ReMenPicViewHolder) holder).imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if ("game".equals(type)) { + Intent intent = new Intent(mContext, GameDetailsActivity.class); + intent.putExtra("gameId", id); + intent.putExtra("entrance", "插件-大图"); + mContext.startActivity(intent); + } else if ("news".equals(type)) { + Intent intent = new Intent(mContext, NewsActivity.class); + intent.putExtra("newsId", id); + intent.putExtra("entrance", "插件-大图"); + mContext.startActivity(intent); + } + } + }); + } + + } + + @Override + public int getItemCount() { + if (position_three != -1) { + return position_three; + } else if (position_two != -1) { + return position_two; + } else if (position_one != -1) { + return position_one; + } + return 0; + } + + public class HeadViewHolder extends RecyclerView.ViewHolder { + public ImageView thumb; + public TextView title; + public LinearLayout link; + + public HeadViewHolder(View view) { + super(view); + this.thumb = (ImageView) view.findViewById(R.id.head_thumb); + this.title = (TextView) view.findViewById(R.id.head_title); + this.link = (LinearLayout) view.findViewById(R.id.head_link); + } + } + + public class ReMenPicViewHolder extends RecyclerView.ViewHolder { + View view; + ImageView imageView; + + public ReMenPicViewHolder(View itemView) { + super(itemView); + view = itemView; + imageView = (ImageView) view.findViewById(R.id.tuijian_img); + ImageUtils.getInstance(mContext).display(entity2List.get(imgPosition).getData().get(0).getImage(), imageView); + + } + } + + public interface OnGamePluginCallBackListener { + void onRefreshEnabled(boolean isEnabled); + } } diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game3Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java similarity index 98% rename from app/src/main/java/com/gh/gamecenter/plugin/Game3Fragment.java rename to app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java index 36792e4e3f..701c481bae 100644 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.plugin; +package com.gh.gamecenter.game; import android.os.Bundle; import android.os.Handler; @@ -275,7 +275,7 @@ public class Game3Fragment extends Fragment implements OnRefreshListener { if (busNine.getPosition() != 1) { statusMap.clear(); } - } else if ("PluginFragment".equals(busNine.getFrom()) && busNine.getPosition() == 2 + } else if ("GameFragment".equals(busNine.getFrom()) && busNine.getPosition() == 2 && game_pb_loading.getVisibility() == View.VISIBLE) { adapter.load(); } diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java similarity index 91% rename from app/src/main/java/com/gh/gamecenter/plugin/Game3FragmentAdapter.java rename to app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java index a43664a794..5a69fa0061 100644 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.plugin; +package com.gh.gamecenter.game; import android.content.Context; import android.content.Intent; @@ -28,7 +28,7 @@ import com.gh.download.DownloadEntry; import com.gh.gamecenter.GameDetailsActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; +import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.DismissEntity; @@ -187,7 +187,7 @@ public class Game3FragmentAdapter extends } }); - AppController.addToRequestQueue(request, Plugin3Fragment.class); + AppController.addToRequestQueue(request, GameFragment.class); } private void processingData(JSONArray response, int offset) { @@ -267,9 +267,9 @@ public class Game3FragmentAdapter extends @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { - if (viewHolder instanceof GameViewHolder) { + if (viewHolder instanceof GameNormalViewHolder) { - GameViewHolder holder = (GameViewHolder) viewHolder; + GameNormalViewHolder holder = (GameNormalViewHolder) viewHolder; final GameEntity detailedEntity = list.get(position); @@ -277,13 +277,12 @@ public class Game3FragmentAdapter extends ImageUtils.getInstance(context).display(detailedEntity.getIcon(), holder.gameThumb); - if (detailedEntity.getApk() == null - || detailedEntity.getApk().isEmpty()) { - holder.gameNameAndSize.setText(detailedEntity.getName()); + holder.gameNameAndSize.setText(detailedEntity.getName()); + if (detailedEntity.getApk() == null || detailedEntity.getApk().isEmpty()) { + holder.gameDes.setText(detailedEntity.getBrief()); } else { - holder.gameNameAndSize.setText(detailedEntity.getName()); + holder.gameDes.setText(detailedEntity.getApk().get(0).getSize() + " | " + detailedEntity.getBrief()); } - holder.gameDes.setText(detailedEntity.getApk().get(0).getSize()+ " | " +detailedEntity.getBrief()); GameViewUtils.setLabelList(context, holder.labelList, detailedEntity.getTag()); @@ -314,14 +313,14 @@ public class Game3FragmentAdapter extends }); DownloadItemUtils.setOnClickListener(context, holder.downloadBtn, - holder.downloadSpeed, holder.downloadPercentage, + holder.download_speed, holder.download_percentage, detailedEntity, position, this, statusMap, platformMap, "游戏-单机", false, dismissEntity, "单机:" + detailedEntity.getName()); DownloadItemUtils.updateItem(context, holder.labelList, - holder.gameProgressbar, holder.gameInfo, - holder.downloadSpeed, holder.downloadPercentage, + holder.game_progressbar, holder.game_ll_info, + holder.download_speed, holder.download_percentage, holder.downloadBtn, detailedEntity, platformMap, statusMap, false); } else if (viewHolder instanceof FooterViewHolder) { @@ -329,8 +328,8 @@ public class Game3FragmentAdapter extends if (isNetworkError) { holder.footerview_progressbar.setVisibility(View.GONE); holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new View.OnClickListener() { + holder.itemView.setClickable(true); + holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isNetworkError = false; @@ -341,7 +340,7 @@ public class Game3FragmentAdapter extends } else { holder.footerview_progressbar.setVisibility(View.VISIBLE); holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); + holder.itemView.setClickable(false); } } } @@ -358,9 +357,9 @@ public class Game3FragmentAdapter extends viewGroup.getContext()).inflate( R.layout.refresh_footerview, viewGroup, false)); } else { - return new GameViewHolder(LayoutInflater.from( + return new GameNormalViewHolder(LayoutInflater.from( viewGroup.getContext()).inflate( - R.layout.game_plugin_item_gamenormal, viewGroup, false)); + R.layout.home_game_normal_item, viewGroup, false)); } } diff --git a/app/src/main/java/com/gh/gamecenter/plugin/PluginFragment.java b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java similarity index 96% rename from app/src/main/java/com/gh/gamecenter/plugin/PluginFragment.java rename to app/src/main/java/com/gh/gamecenter/game/GameFragment.java index 6245845d06..c7276c6e87 100644 --- a/app/src/main/java/com/gh/gamecenter/plugin/PluginFragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.plugin; +package com.gh.gamecenter.game; import android.content.Context; import android.content.Intent; @@ -57,7 +57,7 @@ import de.greenrobot.event.EventBus; * @email 294299195@qq.com * @date 2015-8-8 主页fragment3页面 */ -public class PluginFragment extends Fragment implements OnClickListener, +public class GameFragment extends Fragment implements OnClickListener, OnPageChangeListener { private View view, slideLine; @@ -77,8 +77,7 @@ public class PluginFragment extends Fragment implements OnClickListener, super.onCreate(savedInstanceState); - view = View.inflate(getActivity(), R.layout.plugin_container_fragments, - null); + view = View.inflate(getActivity(), R.layout.plugin_container_fragments, null); SharedPreferences sp = getActivity().getSharedPreferences( Config.PREFERENCE, Context.MODE_PRIVATE); @@ -145,7 +144,7 @@ public class PluginFragment extends Fragment implements OnClickListener, handler.postDelayed(new Runnable() { @Override public void run() { - EventBus.getDefault().post(new EBUISwitch("PluginFragment", viewPager.getCurrentItem())); + EventBus.getDefault().post(new EBUISwitch("GameFragment", viewPager.getCurrentItem())); } }, 100); } @@ -389,7 +388,6 @@ public class PluginFragment extends Fragment implements OnClickListener, jingpinText.setTextColor(getResources().getColor(R.color.theme_colors)); zuixinText.setTextColor(0xFF333333); danjiText.setTextColor(0xFF333333); -// EventBus.getDefault().post(new EBUISwitch("PluginFragment", 0)); } else if (position == 1) { jingpinText.setClickable(true); zuixinText.setClickable(false); @@ -397,7 +395,6 @@ public class PluginFragment extends Fragment implements OnClickListener, jingpinText.setTextColor(0xFF333333); zuixinText.setTextColor(getResources().getColor(R.color.theme_colors)); danjiText.setTextColor(0xFF333333); -// EventBus.getDefault().post(new EBUISwitch("PluginFragment", 1)); } else if (position == 2) { jingpinText.setClickable(true); zuixinText.setClickable(true); @@ -405,7 +402,6 @@ public class PluginFragment extends Fragment implements OnClickListener, jingpinText.setTextColor(0xFF333333); zuixinText.setTextColor(0xFF333333); danjiText.setTextColor(getResources().getColor(R.color.theme_colors)); -// EventBus.getDefault().post(new EBUISwitch("PluginFragment", 2)); } } @@ -419,7 +415,7 @@ public class PluginFragment extends Fragment implements OnClickListener, if (currentItem != viewPager.getCurrentItem()) { currentItem = viewPager.getCurrentItem(); Utils.log("currentItem = " + currentItem); - EventBus.getDefault().post(new EBUISwitch("PluginFragment", currentItem)); + EventBus.getDefault().post(new EBUISwitch("GameFragment", currentItem)); } } } @@ -433,8 +429,7 @@ public class PluginFragment extends Fragment implements OnClickListener, if ("MainActivity".equals(busNine.getFrom())) { if (busNine.getPosition() == 1) { EventBus.getDefault().post( - new EBUISwitch("PluginFragment", viewPager - .getCurrentItem())); + new EBUISwitch("GameFragment", viewPager.getCurrentItem())); } } } @@ -462,7 +457,6 @@ public class PluginFragment extends Fragment implements OnClickListener, @Override public void onHiddenChanged(boolean hidden) { - super.onHiddenChanged(hidden); FragmentTransaction transaction = getChildFragmentManager() .beginTransaction(); @@ -485,7 +479,6 @@ public class PluginFragment extends Fragment implements OnClickListener, @Override public void onDestroy() { - super.onDestroy(); EventBus.getDefault().unregister(this); view = null; diff --git a/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java index e4fa22644c..9b1d0f7279 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java @@ -665,8 +665,7 @@ public class GameInformationFragment extends Fragment { } @Override - public void onBindViewHolder(GameInformationViewHolder viewHolder, - int position) { + public void onBindViewHolder(GameInformationViewHolder viewHolder, int position) { if (!isNull && position == 2) { if (currentPosition == -1) { viewHolder.item_et_search.setText(keyword); diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.java b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.java deleted file mode 100644 index 645faadb70..0000000000 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.java +++ /dev/null @@ -1,624 +0,0 @@ -package com.gh.gamecenter.home; - -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.graphics.Rect; -import android.os.Build; -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.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; -import android.util.Log; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; -import android.widget.PopupWindow; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import com.gh.base.AppController; -import com.gh.common.constant.Config; -import com.gh.common.constant.Constants; -import com.gh.common.util.DataUtils; -import com.gh.common.util.DisplayUtils; -import com.gh.common.util.DownloadItemUtils; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; -import com.gh.download.DownloadManager; -import com.gh.gamecenter.ConcernActivity; -import com.gh.gamecenter.DownloadManagerActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.SearchActivity; -import com.gh.gamecenter.SettingActivity; -import com.gh.gamecenter.entity.ApkEntity; -import com.gh.gamecenter.entity.DismissEntity; -import com.gh.gamecenter.entity.GameEntity; -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.EBRedDot; -import com.gh.gamecenter.eventbus.EBTopState; -import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.gamecenter.manager.DataCollectionManager; -import com.gh.gamecenter.manager.PackageManager; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.LinkedBlockingQueue; - -import de.greenrobot.event.EventBus; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-11 - * @des 主页fragment页面 - */ -public class HomeFragment extends Fragment implements OnClickListener { - - private View view; - private RecyclerView recyclerview; - private HomeFragmentAdapter adapter; - private TextView downloadHint, searchHint; - private LinearLayout reuse_no_connection; - - // 黄壮华 添加 记录信息的map 修改2015/8/19 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - private boolean isEverpause; - private boolean isDestroy = false; - - private int currentItem = 0; - - private String hint; - - private ArrayMap statusMap; - - private DismissEntity dismissEntity; - - private PopupWindow popWindow; - - private Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - if (!isDestroy) { - if (msg.what == Constants.DOWNLOAD_ROLL) { - String name = (String) msg.obj; - if (platformMap != null) { - LinkedBlockingQueue queue = platformMap - .get(name); - if (queue.size() > 1) { - queue.offer(queue.poll()); - Message msg2 = Message.obtain(); - msg2.obj = name; - msg2.what = Constants.DOWNLOAD_ROLL; - sendMessageDelayed(msg2, 3000); - } - } - } - } - } - }; - - // 黄壮华 添加观察者 修改2015/8/19 - private DataWatcher dataWatcher = new DataWatcher() { - - @Override - public void onDataChanged( - HashMap downloadingEntries) { - for (Map.Entry entry : downloadingEntries - .entrySet()) { - DownloadEntry downloadEntry = entry.getValue(); - - Integer location = locationMap.get(downloadEntry.getName()); - if (location != null) { - int index = location.intValue(); - Log.e("index",index+""); - 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.home1_fragment, null); - - SharedPreferences sp = getActivity().getSharedPreferences( - Config.PREFERENCE, Context.MODE_PRIVATE); - - LinearLayout home_actionbar = (LinearLayout) view - .findViewById(R.id.home_actionbar); - LayoutParams lparams = 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"); - home_actionbar.setPadding(0, top, 0, 0); - lparams.height += top; - } - - home_actionbar.setLayoutParams(lparams); - - initActionBar(); - - statusMap = new ArrayMap(); - locationMap = new ArrayMap(); - gameMap = new ArrayMap>(); - platformMap = new ArrayMap>(); - nameMap = new ArrayMap(); - - dismissEntity = new DismissEntity(false); - - isEverpause = false; - - recyclerview = (RecyclerView) view.findViewById(R.id.home_list); - recyclerview.setHasFixedSize(true); - LinearLayoutManager llm = new LinearLayoutManager(getActivity()); - llm.setOrientation(LinearLayoutManager.VERTICAL); - recyclerview.setLayoutManager(llm); - - // 黄壮华 添加 初始化游戏状态 修改2015/8/21 - DownloadItemUtils.initializeGameMap(getActivity(), gameMap); - - reuse_no_connection = (LinearLayout) view - .findViewById(R.id.reuse_no_connection); - reuse_no_connection.setOnClickListener(this); - - adapter = new HomeFragmentAdapter(getActivity(), gameMap, locationMap, - nameMap, platformMap, reuse_no_connection, recyclerview, - statusMap, dismissEntity); - recyclerview.setAdapter(adapter); - - recyclerview.addItemDecoration(new VerticalItemDecoration( - getActivity(), 1)); - - EventBus.getDefault().register(this); - } - - @Override - 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); - - view.findViewById(R.id.actionbar_iv_search).setOnClickListener(this); - - if (Config.isShow) { - view.findViewById(R.id.actionbar_rl_download).setVisibility( - View.VISIBLE); - } else { - 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(); - if (downloadSize != 0) { - downloadHint.setVisibility(View.VISIBLE); - downloadHint.setText(downloadSize + ""); - 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 (updateSize != 0) { - 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); - } - - searchHint = (TextView) view.findViewById(R.id.actionbar_search_input); - searchHint.setOnClickListener(this); - - view.findViewById(R.id.actionbar_notification).setOnClickListener(this); - - view.findViewById(R.id.actionbar_overflow).setOnClickListener(this); - } - - @Override - public void onClick(View v) { - final int id = v.getId(); - if (id == R.id.actionbar_notification) { - DataUtils.onEvent(getActivity(), "主页", "关注图标"); - - Map map = new HashMap(); - map.put("location", "关注图标"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); - - startActivity(new Intent(getActivity(), ConcernActivity.class)); - } else if (id == R.id.actionbar_rl_download) { - DataUtils.onEvent(getActivity(), "主页", "下载图标"); - - Map map = new HashMap(); - map.put("location", "下载图标"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); - - if (downloadHint != null - && downloadHint.getVisibility() == View.VISIBLE) { - downloadHint.setVisibility(View.GONE); - EventBus.getDefault().post(new EBTopState("隐藏", null)); - } - startActivity(new Intent(getActivity(), - DownloadManagerActivity.class)); - } else if (id == R.id.actionbar_search_input) { - DataUtils.onEvent(getActivity(), "主页", "搜索框"); - - Map map = new HashMap(); - map.put("location", "搜索框"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); - - Intent goSearch = new Intent(getActivity(), SearchActivity.class); - goSearch.putExtra("clicked", false); - goSearch.putExtra("hint", hint); - startActivity(goSearch); - } else if (id == R.id.actionbar_iv_search) { - DataUtils.onEvent(getActivity(), "主页", "搜索图标"); - - Map map = new HashMap(); - map.put("location", "搜索图标"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); - - Intent searchIntent = new Intent(getActivity(), - SearchActivity.class); - searchIntent.putExtra("clicked", true); - searchIntent.putExtra("hint", hint); - startActivity(searchIntent); - } else if (id == R.id.actionbar_overflow) { - DataUtils.onEvent(getActivity(), "主页", "更多图标"); - - Map map = new HashMap(); - map.put("location", "更多图标"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(getActivity(), "click-item", map); - - popUpOverflow(v); - } else if (id == R.id.menu_rl_set) { - popWindow.dismiss(); - startActivity(new Intent(getActivity(), SettingActivity.class)); - } else if (id == R.id.reuse_no_connection) { - reuse_no_connection.setVisibility(View.GONE); - recyclerview.setVisibility(View.VISIBLE); - adapter = new HomeFragmentAdapter(getActivity(), gameMap, - locationMap, nameMap, platformMap, reuse_no_connection, - recyclerview, statusMap, - dismissEntity); - recyclerview.setAdapter(adapter); - } - } - - 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) + ""); - } - } - - private void popUpOverflow(View view) { - - Rect frame = new Rect(); - getActivity().getWindow().getDecorView() - .getWindowVisibleDisplayFrame(frame); - - int xOffset = DisplayUtils.dip2px(getActivity(), 5); - int yOffset = frame.top + DisplayUtils.dip2px(getActivity(), 48) - + xOffset; - - View popView = View.inflate(getActivity(), R.layout.menu_popwindow, - null); - popView.findViewById(R.id.menu_rl_set).setOnClickListener(this); - 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.showAtLocation(view, Gravity.TOP | Gravity.RIGHT, xOffset, - yOffset); - - } - - 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); - } - boolean isRemove = false; - for (GameEntity detailedEntity : adapter.getZuixinchajianList()) { - if (detailedEntity.getName().equals(busThree.getName())) { - if (TextUtils.isEmpty(busThree.getPlatform())) { - detailedEntity.getEntryMap().remove("官方版"); - } else { - detailedEntity.getEntryMap().remove(busThree.getPlatform()); - } - isRemove = true; - break; - } - } - if (!isRemove) { - for (GameEntity detailedEntity : adapter.getRemenkapaiList()) { - if (detailedEntity.getName().equals(busThree.getName())) { - if (TextUtils.isEmpty(busThree.getPlatform())) { - detailedEntity.getEntryMap().remove("官方版"); - } else { - detailedEntity.getEntryMap().remove( - busThree.getPlatform()); - } - isRemove = true; - break; - } - } - } - if (!isRemove) { - for (GameEntity detailedEntity : adapter.getXincekapaiList()) { - if (detailedEntity.getName().equals(busThree.getName())) { - if (TextUtils.isEmpty(busThree.getPlatform())) { - detailedEntity.getEntryMap().remove("官方版"); - } else { - detailedEntity.getEntryMap().remove( - busThree.getPlatform()); - } - isRemove = true; - break; - } - } - } - Integer location = locationMap.get(busThree.getName()); - if (location != null) { - adapter.notifyItemChanged(location.intValue()); - } - } - - public void onEventMainThread(EBTopState busTen) { - if ("搜索".equals(busTen.getType())) { - hint = busTen.getSearchHint(); - searchHint.setHint(busTen.getSearchHint()); - } else if ("显示".equals(busTen.getType())) { - if (downloadHint != null) { - downloadHint.setVisibility(View.VISIBLE); - } - } else { - if (downloadHint != null) { - downloadHint.setVisibility(View.GONE); - } - } - } - - public void onEventMainThread(EBRedDot busEight) { - updateRedDot(busEight.getType()); - } - - public void onEventMainThread(EBNetworkState busNetworkState) { - if (busNetworkState.isNetworkConnected() - && reuse_no_connection.getVisibility() == View.VISIBLE) { - reuse_no_connection.setVisibility(View.GONE); - recyclerview.setVisibility(View.VISIBLE); - adapter = new HomeFragmentAdapter(getActivity(), gameMap, - locationMap, nameMap, platformMap, reuse_no_connection, - recyclerview, statusMap, - dismissEntity); - recyclerview.setAdapter(adapter); - } - } - - public void onEventMainThread(EBUISwitch busNine) { - if ("MainActivity".equals(busNine.getFrom())) { - currentItem = busNine.getPosition(); - if (busNine.getPosition() == 0) { - adapter.startAutoScroll(); - } else { - adapter.stopAutoScroll(); - statusMap.clear(); - } - } - } - - public void onEventMainThread(EBPackage busFour) { - String name = nameMap.get(busFour.getPackageName()); - if (name != null) { - int location = locationMap.get(name).intValue(); - if ("安装".equals(busFour.getType())) { - GameEntity detailedEntity = getEntityByLocation(location); - for (ApkEntity apkEntity : detailedEntity.getApk()) { - if (apkEntity.getPackageName().equals( - busFour.getPackageName())) { - if (detailedEntity.getEntryMap() != null) { - detailedEntity.getEntryMap().remove( - apkEntity.getPlatform()); - adapter.notifyItemChanged(location); - return; - } - } - } - } else if ("卸载".equals(busFour.getType())) { - adapter.notifyItemChanged(location); - } - } - } - - private GameEntity getEntityByLocation(int location) { - GameEntity entity = null; - if (location > adapter.getPosition_zuixinchajian() - && location <= adapter.getZuixinchajianListSize() - + adapter.getPosition_zuixinchajian()) { - entity = adapter.getZuixinchajianList().get( - location - adapter.getPosition_zuixinchajian() - 1); - } else if (location > adapter.getPosition_remenkapai() - && location <= adapter.getRemenkapaiListSize() - + adapter.getPosition_remenkapai()) { - entity = adapter.getRemenkapaiList().get( - location - adapter.getPosition_remenkapai() - 1); - } else if (location > adapter.getPosition_xincekapai() - && location <= adapter.getXincekapaiListSize() - + adapter.getPosition_xincekapai()) { - entity = adapter.getXincekapaiList().get( - location - adapter.getPosition_xincekapai() - 1); - } - return entity; - } - - @Override - public void onResume() { - - super.onResume(); - if (isEverpause) { - // 黄壮华 添加 初始化游戏状态 修改2015/8/20 - DownloadItemUtils.initializeGameMap(getActivity(), gameMap); - List zList = new ArrayList(); - if (adapter.getZuixinchajianList() != null) { - for (GameEntity entity : adapter.getZuixinchajianList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - zList.add(entity); - } - } - List rList = new ArrayList(); - if (adapter.getRemenkapaiList() != null) { - for (GameEntity entity : adapter.getRemenkapaiList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - rList.add(entity); - } - } - List xList = new ArrayList(); - if (adapter.getXincekapaiList() != null) { - for (GameEntity entity : adapter.getXincekapaiList()) { - entity.setEntryMap(gameMap.get(entity.getName())); - xList.add(entity); - } - } - adapter.setList(zList, rList, xList); - } - isEverpause = false; - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - if (currentItem == 0) { - adapter.startAutoScroll(); - } - } - - @Override - public void onPause() { - super.onPause(); - isEverpause = true; - statusMap.clear(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - if (currentItem == 0) { - adapter.stopAutoScroll(); - } - } - - @Override - public void onDestroy() { - - super.onDestroy(); - isDestroy = true; - AppController.canclePendingRequests(HomeFragment.class); - EventBus.getDefault().unregister(this); - view = null; - recyclerview = null; - adapter = null; - downloadHint = null; - searchHint = null; - reuse_no_connection = null; - locationMap = null; - gameMap = null; - platformMap = null; - nameMap = null; - hint = null; - statusMap = null; - dismissEntity = null; - popWindow = null; - handler = null; - dataWatcher = null; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.java deleted file mode 100644 index f8cdbea458..0000000000 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.java +++ /dev/null @@ -1,2393 +0,0 @@ -package com.gh.gamecenter.home; - -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.support.v4.app.FragmentActivity; -import android.support.v4.util.ArrayMap; -import android.support.v4.view.ViewPager; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; -import android.util.DisplayMetrics; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.ImageView.ScaleType; -import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.android.volley.NoConnectionError; -import com.android.volley.Response; -import com.android.volley.TimeoutError; -import com.android.volley.VolleyError; -import com.gh.base.AppController; -import com.gh.common.constant.Config; -import com.gh.common.constant.Constants; -import com.gh.common.util.DataUtils; -import com.gh.common.util.DisplayUtils; -import com.gh.common.util.DownloadItemUtils; -import com.gh.common.util.GameViewUtils; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.NewsUtils; -import com.gh.common.util.RandomUtils; -import com.gh.common.util.TimestampUtils; -import com.gh.common.view.AutoScrollViewPager; -import com.gh.download.DownloadEntry; -import com.gh.gamecenter.GameActivity; -import com.gh.gamecenter.GameDetailsActivity; -import com.gh.gamecenter.HotCardActivity; -import com.gh.gamecenter.NewsOrRaidersActivity; -import com.gh.gamecenter.OriginalActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.RecyclingPagerAdapter; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -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.NewsEntity; -import com.gh.gamecenter.eventbus.EBSkipNewPlugin; -import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.DataCollectionManager; -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.Random; -import java.util.concurrent.LinkedBlockingQueue; - -import de.greenrobot.event.EventBus; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-20 - * @des 首页fragment适配器 - */ - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-20 - * @des 首页fragment适配器 - */ -public class HomeFragmentAdapter extends - RecyclerView.Adapter { - - private FragmentActivity activity; - private Context context; - private LayoutInflater layoutInflater; - - private class ITEM_TYPE { - public static final int navigation = 0;// 导航栏布局 - public static final int head = 1;// 首部简介布局 - public static final int news_image_type1 = 2;// 图片新闻类型 - public static final int news_image_type2 = 3;// 图片新闻类型 - public static final int news_text_type = 4;// 标题新闻类型 - public static final int game_type1 = 5; - public static final int game_type2 = 6; - public static final int loading = 7; - } - - private int position_kapaitoutiao = -1;// 卡牌头条版块的position - private int position_zuixinchajian = -1;// 最新插件版块的position - private int position_yuedujingxuan = -1;// 阅读精选版块的position - private int position_remenkapai = -1;// 热门卡牌版块的position - private int position_kapaigonglue = -1;// 卡牌攻略版块的position - private int position_xincekapai = -1;// 新测头条版块的position - - private int kapaitoutiaoSize = 0; - private List shoulanKapaitoutiaoList; - private List cilanKapaitoutiaoList; - private List zuixinchajianList; - private List yuedujingxuanList; - private List remenkapaiList; - private List kapaigonglueList; - private List xincekapaiList; - - private List allKapaigonglueList; - private List allNewsList; - private List concernList; - private ArrayMap> allKapaigonglueMap; - - // 黄壮华 获取引用 修改2015/8/19 - private ArrayMap> gameMap; - private ArrayMap locationMap; - private ArrayMap nameMap; - private ArrayMap> platformMap; - - private RecyclerView recyclerview; - private LinearLayout reuse_no_connection; - - private int flag; - private int width; - - private boolean isRemove; - - private ArrayMap statusMap; - - private DismissEntity dismissEntity; - - public HomeFragmentAdapter(FragmentActivity act, - ArrayMap> gMap, - ArrayMap lMap, ArrayMap nMap, - ArrayMap> pMap, - LinearLayout linearLayout, RecyclerView recyclerview, - ArrayMap sMap, DismissEntity dEntity) { - - flag = 6; - isRemove = false; - - shoulanKapaitoutiaoList = new ArrayList(); - cilanKapaitoutiaoList = new ArrayList(); - zuixinchajianList = new ArrayList(); - yuedujingxuanList = new ArrayList(); - remenkapaiList = new ArrayList(); - kapaigonglueList = new ArrayList(); - xincekapaiList = new ArrayList(); - - // 黄壮华 获取引用 修改2015/8/19 - statusMap = sMap; - gameMap = gMap; - locationMap = lMap; - nameMap = nMap; - platformMap = pMap; - - dismissEntity = dEntity; - - reuse_no_connection = linearLayout; - this.recyclerview = recyclerview; - - activity = act; - context = act; - layoutInflater = LayoutInflater.from(act); - - DisplayMetrics outMetrics = new DisplayMetrics(); - activity.getWindowManager().getDefaultDisplay().getMetrics(outMetrics); - width = outMetrics.widthPixels; - - initKapaitoutiao(); - - initZuixinchajian(); - - initYuedujingxuan(); - - initRemenkapai(); - - initKapaigonglue(); - - initXincekapai(); - } - - public void initKapaitoutiao() { - JsonArrayExtendedRequest kapaitoutiaoRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/index/kapaitoutiao", Constants.NEWS_CD), - new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - Type listType = new TypeToken>() { - }.getType(); - Gson gson = new Gson(); - List list = gson.fromJson( - response.toString(), listType); - for (int i = 0; i < list.size(); i++) { - if (list.get(i).getThumb() != null) { - shoulanKapaitoutiaoList.add(list.get(i)); - } else { - cilanKapaitoutiaoList.add(list.get(i)); - } - } - kapaitoutiaoSize = cilanKapaitoutiaoList.size() - + (shoulanKapaitoutiaoList.isEmpty() ? 0 : 1); - refreshCounts(); - - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT) - .show(); - reuse_no_connection.setVisibility(View.VISIBLE); - recyclerview.setVisibility(View.GONE); - } - } - }); - AppController - .addToRequestQueue(kapaitoutiaoRequest, HomeFragment.class); - } - - private void initZuixinchajian() { - JsonArrayExtendedRequest zuixinchajianRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/index/zuixinchajian", Constants.GAME_CD), - new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - - GameManager manager = new GameManager(context); - initZuixinchajianList(response, manager); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT) - .show(); - reuse_no_connection.setVisibility(View.VISIBLE); - recyclerview.setVisibility(View.GONE); - } - } - }); - AppController.addToRequestQueue(zuixinchajianRequest, - HomeFragment.class); - } - - private void initYuedujingxuan() { - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/index/yuedujingxuan", Constants.NEWS_CD), - new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - Type listType = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - yuedujingxuanList = gson.fromJson(response.toString(), listType); - - refreshCounts(); - - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT) - .show(); - reuse_no_connection.setVisibility(View.VISIBLE); - recyclerview.setVisibility(View.GONE); - } - } - }); - AppController.addToRequestQueue(request, HomeFragment.class); - } - - private void initRemenkapai() { - JsonArrayExtendedRequest remenkapaiRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/index/remenkapai", Constants.GAME_CD), - new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - - GameManager manager = new GameManager(context); - initRemenkapaiList(response, manager); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT) - .show(); - reuse_no_connection.setVisibility(View.VISIBLE); - recyclerview.setVisibility(View.GONE); - } - } - }); - AppController.addToRequestQueue(remenkapaiRequest, HomeFragment.class); - } - - private void initXincekapai() { - JsonArrayExtendedRequest xincekapaiRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/index/xincekapai", Constants.GAME_CD), - new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - - GameManager manager = new GameManager(context); - initXincekapaiList(response, manager); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT) - .show(); - reuse_no_connection.setVisibility(View.VISIBLE); - recyclerview.setVisibility(View.GONE); - } - } - }); - AppController.addToRequestQueue(xincekapaiRequest, HomeFragment.class); - } - - private void initKapaigonglue() { - ConcernManager concernManager = new ConcernManager(context); - List list = concernManager.getAllConcernBySort(); - if (list.size() > 5) { - concernList = new ArrayList(); - for (int i = 0; i < 3; i++) { - concernList.add(list.remove(0)); - } - int[] index = RandomUtils.getRandomArray(2, list.size()); - concernList.add(list.get(index[0])); - concernList.add(list.get(index[1])); - } else { - concernList = list; - } - - if (concernList.isEmpty()) { - getKaipaigonglueByUrl(); - } else { - getKaipaigonglueByList(); - } - - } - - private int count; - - private void getKaipaigonglueByList() { - allKapaigonglueList = new ArrayList(); - allKapaigonglueMap = new ArrayMap>(); - count = concernList.size(); - for (int i = 0, size = concernList.size(); i < size; i++) { - final int index = i; - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp( - Config.HOST + "v1d45/game/" - + concernList.get(i).getId() - + "/news?limit=5&offset=0&type_group=" - + Uri.encode("攻略"), Constants.NEWS_CD), - new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - - Gson gson = new Gson(); - Type listType = new TypeToken>() { - }.getType(); - List newsList = gson.fromJson( - response.toString(), listType); - if (!newsList.isEmpty()) { - allKapaigonglueMap.put(concernList.get(index) - .getGameName(), newsList); - allKapaigonglueList.addAll(newsList); - } - refresh(); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - // 无网络连接和访问超时 - if (error.getClass() - .equals(NoConnectionError.class) - || error.getClass().equals( - TimeoutError.class)) { - Toast.makeText(context, "网络错误", - Toast.LENGTH_SHORT).show(); - reuse_no_connection.setVisibility(View.VISIBLE); - recyclerview.setVisibility(View.GONE); - } - } - }); - AppController.addToRequestQueue(request, HomeFragment.class); - } - } - - private void refresh() { - if (count != 1) { - count--; - } else { - if (allKapaigonglueList.isEmpty() || allKapaigonglueList.size() < 5) { - getKaipaigonglueByUrl(); - } else { - if (allKapaigonglueList.size() > 5) { - ArrayMap> kapaigonglueMap = new ArrayMap>(); - Random random = new Random(System.currentTimeMillis()); - ArrayMap> map = new ArrayMap>(); - for (String key : allKapaigonglueMap.keySet()) { - List list = new ArrayList(); - for (NewsEntity entity : allKapaigonglueMap.get(key)) { - list.add(entity); - } - map.put(key, list); - } - int number = 0; - while (number < 5) { - for (int i = 0; i < concernList.size(); i++) { - List list = map.get(concernList.get(i) - .getGameName()); - if (list != null && !list.isEmpty() && number < 5) { - List entities = kapaigonglueMap - .get(concernList.get(i).getGameName()); - if (entities == null) { - entities = new ArrayList(); - kapaigonglueMap.put(concernList.get(i) - .getGameName(), entities); - } - entities.add(list.remove(random.nextInt(list.size()))); - number++; - if (number == 5) { - break; - } - } - } - } - for (int i = 0; i < concernList.size(); i++) { - List list = kapaigonglueMap.get(concernList - .get(i).getGameName()); - if (list != null && !list.isEmpty()) { - kapaigonglueList.addAll(list); - } - } - } else { - kapaigonglueList.addAll(allKapaigonglueList); - } - refreshCounts(); - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - } - } - - private void refreshCounts() { - - // 卡牌头条 - if (kapaitoutiaoSize != 0) { - position_kapaitoutiao = 1; - } - - // 最新插件 - if (zuixinchajianList != null && !zuixinchajianList.isEmpty()) { - if (position_kapaitoutiao != -1) { - position_zuixinchajian = position_kapaitoutiao - + kapaitoutiaoSize + 1; - } else { - position_zuixinchajian = 1; - } - } - - // 阅读精选 - if (yuedujingxuanList != null && !yuedujingxuanList.isEmpty()) { - if (position_kapaitoutiao != -1 && position_zuixinchajian != -1) { - position_yuedujingxuan = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1) { - position_yuedujingxuan = position_kapaitoutiao - + kapaitoutiaoSize + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1) { - position_yuedujingxuan = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1) { - position_yuedujingxuan = 1; - } - } - - // 热门卡牌 - if (remenkapaiList != null && !remenkapaiList.isEmpty()) { - if (position_kapaitoutiao != -1 && position_zuixinchajian != -1 - && position_yuedujingxuan != -1) { - position_remenkapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1) { - position_remenkapai = position_kapaitoutiao + kapaitoutiaoSize - + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1) { - position_remenkapai = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1) { - position_remenkapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1) { - position_remenkapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1) { - position_remenkapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1) { - position_remenkapai = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1) { - position_remenkapai = 1; - } - } - - // 卡牌攻略 - if (kapaigonglueList != null && !kapaigonglueList.isEmpty()) { - if (position_kapaitoutiao != -1 && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_kapaitoutiao - + kapaitoutiaoSize + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1) { - position_kapaigonglue = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1) { - position_kapaigonglue = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1) { - position_kapaigonglue = 1; - } - } - - // 新测卡牌 - if (xincekapaiList != null && !xincekapaiList.isEmpty()) { - if (position_kapaitoutiao != -1 && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_kapaitoutiao + kapaitoutiaoSize - + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_zuixinchajian - + zuixinchajianList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = position_yuedujingxuan + 1 + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan == -1 - && position_remenkapai != -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai == -1 && position_kapaigonglue != -1) { - position_xincekapai = position_kapaigonglue - + kapaigonglueList.size() + 1; - } else if (position_kapaitoutiao != -1 - && position_zuixinchajian != -1 - && position_yuedujingxuan != -1 - && position_remenkapai != -1 && position_kapaigonglue == -1) { - position_xincekapai = position_remenkapai - + remenkapaiList.size() + 1; - } else if (position_kapaitoutiao == -1 - && position_zuixinchajian == -1 - && position_yuedujingxuan == -1 - && position_remenkapai == -1 && position_kapaigonglue == -1) { - position_xincekapai = 1; - } - } - - notifyDataSetChanged(); - } - - protected void initXincekapaiList(JSONArray response, GameManager manager) { - Type listType = new TypeToken>() { - }.getType(); - Gson gson = new Gson(); - - // 黄壮华 初始化游戏状态 修改2015/8/19 - xincekapaiList = new ArrayList(); - List list = gson.fromJson(response.toString(), listType); - for (GameEntity entity : list) { - entity.setEntryMap(gameMap.get(entity.getName())); - xincekapaiList.add(entity); - if (entity.getApk() != null) { - for (ApkEntity apkEntity : entity.getApk()) { - manager.addOrUpdate(new GameInfo( - apkEntity.getPackageName(), entity.getId(), entity - .getName())); - } - } - } - - // 去除重复游戏 - for (int i = 0; i < xincekapaiList.size(); i++) { - String name = xincekapaiList.get(i).getName(); - for (int j = 0; j < remenkapaiList.size(); j++) { - if (name.equals(remenkapaiList.get(j).getName())) { - remenkapaiList.remove(j); - break; - } - } - } - - refreshCounts(); - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - - private void getKaipaigonglueByUrl() { - JsonArrayExtendedRequest kapaigonglueRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp( - Config.HOST - + "v1d45/news?limit=20&offset=0&type_group=" - + Uri.encode("攻略"), Constants.NEWS_CD), - new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - - Type listType = new TypeToken>() { - }.getType(); - Gson gson = new Gson(); - allNewsList = gson.fromJson(response.toString(), - listType); - if (allKapaigonglueList == null - || allKapaigonglueList.isEmpty()) { - if (allNewsList.size() > 5) { - Random random = new Random(System - .currentTimeMillis()); - int[] index = new int[5]; - for (int i = 0; i < index.length; i++) { - if (i == 0) { - index[i] = random.nextInt(allNewsList - .size()); - } else { - index[i] = random(random, index, i, - allNewsList.size()); - } - } - for (int i = 0; i < index.length; i++) { - kapaigonglueList.add(allNewsList - .get(index[i])); - } - } else { - kapaigonglueList.addAll(allNewsList); - } - } else { - kapaigonglueList.addAll(allKapaigonglueList); - for (int i = 0; i < allKapaigonglueList.size(); i++) { - for (int j = 0; j < allNewsList.size(); j++) { - if (allKapaigonglueList.get(i).getId() - .equals(allNewsList.get(j).getId())) { - allNewsList.remove(j); - j--; - break; - } - } - } - if (allNewsList.size() > 5 - allKapaigonglueList - .size()) { - Random random = new Random(System - .currentTimeMillis()); - int[] index = new int[5 - allKapaigonglueList - .size()]; - for (int i = 0; i < index.length; i++) { - if (i == 0) { - index[i] = random.nextInt(allNewsList - .size()); - } else { - index[i] = random(random, index, i, - allNewsList.size()); - } - } - for (int i = 0; i < index.length; i++) { - kapaigonglueList.add(allNewsList - .get(index[i])); - } - } else { - kapaigonglueList.addAll(allNewsList); - } - } - refreshCounts(); - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - - } - }); - AppController - .addToRequestQueue(kapaigonglueRequest, HomeFragment.class); - } - - public List getKapaigonglueList() { - return kapaigonglueList; - } - - public void refreshKapaigonglueList() { - kapaigonglueList.clear(); - if (allKapaigonglueList == null || allKapaigonglueList.isEmpty()) { - if (allNewsList.size() > 5) { - int[] index = RandomUtils.getRandomArray(5, allNewsList.size()); - for (int i = 0; i < index.length; i++) { - kapaigonglueList.add(allNewsList.get(index[i])); - } - refreshCounts(); - } - } else if (allKapaigonglueList.size() < 5) { - if (allNewsList.size() > 5 - allKapaigonglueList.size()) { - kapaigonglueList.addAll(allKapaigonglueList); - int[] index = RandomUtils.getRandomArray(5 - allKapaigonglueList.size(), allNewsList.size()); - for (int i = 0; i < index.length; i++) { - kapaigonglueList.add(allNewsList.get(index[i])); - } - refreshCounts(); - } - } else { - ArrayMap> kapaigonglueMap = new ArrayMap>(); - Random random = new Random(System.currentTimeMillis()); - ArrayMap> map = new ArrayMap>(); - for (String key : allKapaigonglueMap.keySet()) { - List list = new ArrayList(); - for (NewsEntity entity : allKapaigonglueMap.get(key)) { - list.add(entity); - } - map.put(key, list); - } - int number = 0; - while (number < 5) { - for (int i = 0; i < concernList.size(); i++) { - List list = map.get(concernList.get(i) - .getGameName()); - if (list != null && !list.isEmpty() && number < 5) { - List entities = kapaigonglueMap - .get(concernList.get(i).getGameName()); - if (entities == null) { - entities = new ArrayList(); - kapaigonglueMap.put(concernList.get(i) - .getGameName(), entities); - } - entities.add(list.remove(random.nextInt(list.size()))); - number++; - if (number == 5) { - break; - } - } - } - } - for (int i = 0; i < concernList.size(); i++) { - List list = kapaigonglueMap.get(concernList.get(i) - .getGameName()); - if (list != null && !list.isEmpty()) { - kapaigonglueList.addAll(list); - } - } - refreshCounts(); - } - } - - private int random(Random random, int[] index, int i, int size) { - int seed = random.nextInt(size); - for (int j = 0; j < i; j++) { - if (index[j] == seed) { - return random(random, index, i, size); - } - } - return seed; - } - - protected void initRemenkapaiList(JSONArray response, GameManager manager) { - Type listType = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - - // 黄壮华 初始化游戏状态 修改2015/8/19 - remenkapaiList = new ArrayList(); - List list = gson.fromJson(response.toString(), listType); - for (GameEntity entity : list) { - entity.setEntryMap(gameMap.get(entity.getName())); - remenkapaiList.add(entity); - for (ApkEntity apkEntity : entity.getApk()) { - manager.addOrUpdate(new GameInfo(apkEntity.getPackageName(), - entity.getId(), entity.getName())); - } - } - - // 去除重复游戏 - for (int i = 0; i < zuixinchajianList.size(); i++) { - String name = zuixinchajianList.get(i).getName(); - for (int j = 0; j < remenkapaiList.size(); j++) { - if (name.equals(remenkapaiList.get(j).getName())) { - remenkapaiList.remove(j); - break; - } - } - } - for (int i = 0; i < xincekapaiList.size(); i++) { - String name = xincekapaiList.get(i).getName(); - for (int j = 0; j < remenkapaiList.size(); j++) { - if (name.equals(remenkapaiList.get(j).getName())) { - remenkapaiList.remove(j); - break; - } - } - } - - refreshCounts(); - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - - protected void initZuixinchajianList(JSONArray response, GameManager manager) { - Type listType = new TypeToken>() { - }.getType(); - Gson gson = new Gson(); - - // 黄壮华 初始化游戏状态 修改2015/8/19 - zuixinchajianList = new ArrayList(); - List list = gson.fromJson(response.toString(), listType); - for (GameEntity entity : list) { - entity.setEntryMap(gameMap.get(entity.getName())); - zuixinchajianList.add(entity); - for (ApkEntity apkEntity : entity.getApk()) { - manager.addOrUpdate(new GameInfo(apkEntity.getPackageName(), - entity.getId(), entity.getName())); - } - } - - // 去除重复游戏 - for (int i = 0; i < zuixinchajianList.size(); i++) { - String name = zuixinchajianList.get(i).getName(); - for (int j = 0; j < remenkapaiList.size(); j++) { - if (name.equals(remenkapaiList.get(j).getName())) { - remenkapaiList.remove(j); - break; - } - } - } - - refreshCounts(); - if (flag != 1) { - flag--; - } else { - isRemove = true; - notifyItemRemoved(getItemCount()); - initLocationMap(); - } - } - - private void initLocationMap() { - locationMap.clear(); - GameEntity detailedEntity; - for (int i = 0, size = zuixinchajianList.size(); i < size; i++) { - detailedEntity = zuixinchajianList.get(i); - locationMap.put(detailedEntity.getName(), i - + position_zuixinchajian + 1); - for (ApkEntity apkEntity : detailedEntity.getApk()) { - nameMap.put(apkEntity.getPackageName(), - detailedEntity.getName()); - } - } - for (int i = 0, size = remenkapaiList.size(); i < size; i++) { - detailedEntity = remenkapaiList.get(i); - locationMap.put(detailedEntity.getName(), i + position_remenkapai - + 1); - for (ApkEntity apkEntity : detailedEntity.getApk()) { - nameMap.put(apkEntity.getPackageName(), - detailedEntity.getName()); - } - } - for (int i = 0, size = xincekapaiList.size(); i < size; i++) { - detailedEntity = xincekapaiList.get(i); - locationMap.put(detailedEntity.getName(), i + position_xincekapai - + 1); - for (ApkEntity apkEntity : detailedEntity.getApk()) { - nameMap.put(apkEntity.getPackageName(), - detailedEntity.getName()); - } - } - } - - @Override - public int getItemCount() { - int head = 0; - if (position_kapaitoutiao != -1) { - head++; - } - if (position_zuixinchajian != -1) { - head++; - } - if (position_yuedujingxuan != -1) { - head += 2; - } - if (position_remenkapai != -1) { - head++; - } - if (position_kapaigonglue != -1) { - head++; - } - if (position_xincekapai != -1) { - head++; - } - - if (isRemove) { - return 1 + head + kapaitoutiaoSize + zuixinchajianList.size() - + remenkapaiList.size() + kapaigonglueList.size() - + xincekapaiList.size(); - } else { - return 1 + head + kapaitoutiaoSize + zuixinchajianList.size() - + remenkapaiList.size() + kapaigonglueList.size() - + xincekapaiList.size() + 1; - } - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, - int viewType) { - if (viewType == ITEM_TYPE.navigation) { - return new NavigationViewHolder(layoutInflater.inflate( - R.layout.home_list_item_navigation, parent, false)); - } else if (viewType == ITEM_TYPE.head) { - return new HeadViewHolder(layoutInflater.inflate( - R.layout.home_list_item_head, parent, false)); - } else if (viewType == ITEM_TYPE.news_image_type1) { - return new ImageNewsTypeViewHolder(layoutInflater.inflate( - R.layout.home_autoscrollviewpager, parent, false)); - } else if (viewType == ITEM_TYPE.news_image_type2) { - View view = layoutInflater.inflate( - R.layout.home_autoscrollviewpager, parent, false); - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( - LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(context, 92)); - view.setLayoutParams(params); - return new GenuineNewsTypeViewHolder(view); - } else if (viewType == ITEM_TYPE.news_text_type) { - return new TextNewsTypeViewHolder(layoutInflater.inflate( - R.layout.home_list_item_newsnormal_type, parent, false)); - } else if (viewType == ITEM_TYPE.game_type1) { - return new GameNormalViewHolder(layoutInflater.inflate( - R.layout.home_list_item_gamenormal_type, parent, false)); - } else if (viewType == ITEM_TYPE.game_type2) { - return new GameTestViewHolder(layoutInflater.inflate( - R.layout.home_list_item_gametest_type, parent, false)); - } else { - return new FooterViewHolder(layoutInflater.inflate( - R.layout.refresh_footerview, parent, false)); - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, - int position) { - if (viewHolder instanceof HeadViewHolder) { - ((HeadViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof ImageNewsTypeViewHolder) { - ((ImageNewsTypeViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof GenuineNewsTypeViewHolder) { - ((GenuineNewsTypeViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof TextNewsTypeViewHolder) { - ((TextNewsTypeViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof GameNormalViewHolder) { - ((GameNormalViewHolder) viewHolder).initViewHolder(position); - } else if (viewHolder instanceof GameTestViewHolder) { - ((GameTestViewHolder) viewHolder).initViewHolder(position); - } - } - - @Override - public int getItemViewType(int position) { - if (position == 0) - return ITEM_TYPE.navigation; - - if (position_kapaitoutiao != -1) { - // 卡牌头条有数据 - if (position == position_kapaitoutiao) { - return ITEM_TYPE.head; - } - if (shoulanKapaitoutiaoList.isEmpty()) { - if (position > position_kapaitoutiao - && position <= position_kapaitoutiao + kapaitoutiaoSize) { - return ITEM_TYPE.news_text_type; - } - } else { - if (position == position_kapaitoutiao + 1) { - return ITEM_TYPE.news_image_type1; - } - if (position > position_kapaitoutiao + 1 - && position <= position_kapaitoutiao + kapaitoutiaoSize) { - return ITEM_TYPE.news_text_type; - } - } - } - - if (position_zuixinchajian != -1) { - // 最新插件有数量 - if (position == position_zuixinchajian) { - return ITEM_TYPE.head; - } - if (position > position_zuixinchajian - && position <= position_zuixinchajian - + zuixinchajianList.size()) { - return ITEM_TYPE.game_type1; - } - } - - if (position_yuedujingxuan != -1) { - // 阅读精选有数据 - if (position == position_yuedujingxuan) { - return ITEM_TYPE.head; - } - if (position == position_yuedujingxuan + 1) { - return ITEM_TYPE.news_image_type2; - } - } - - if (position_remenkapai != -1) { - // 热门卡牌有数据 - if (position == position_remenkapai) { - return ITEM_TYPE.head; - } - if (position > position_remenkapai - && position <= position_remenkapai + remenkapaiList.size()) { - return ITEM_TYPE.game_type1; - } - } - - if (position_kapaigonglue != -1) { - // 卡牌攻略有数据 - if (position == position_kapaigonglue) { - return ITEM_TYPE.head; - } - if (position > position_kapaigonglue - && position <= position_kapaigonglue - + kapaigonglueList.size()) { - return ITEM_TYPE.news_text_type; - } - } - - if (position_xincekapai != -1) { - // 新测卡牌有数据 - if (position == position_xincekapai) { - return ITEM_TYPE.head; - } - if (position > position_xincekapai - && position <= position_xincekapai + xincekapaiList.size()) { - return ITEM_TYPE.game_type2; - } - } - return ITEM_TYPE.loading; - } - - public class NavigationViewHolder extends RecyclerView.ViewHolder { - public ImageView gameImg; - public ImageView newsImg; - public ImageView gonglueImg; - public ImageView databaseImg; - - public NavigationViewHolder(View v) { - super(v); - gameImg = (ImageView) v.findViewById(R.id.game_img); - newsImg = (ImageView) v.findViewById(R.id.news_img); - gonglueImg = (ImageView) v.findViewById(R.id.gonglue_img); - databaseImg = (ImageView) v.findViewById(R.id.database_img); - - gameImg.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "主页", "游戏栏目"); - - Map map = new HashMap(); - map.put("location", "游戏"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - Intent intent = new Intent(context, GameActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - newsImg.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "主页", "资讯栏目"); - - Map map = new HashMap(); - map.put("location", "资讯"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - Intent intent = new Intent(context, - NewsOrRaidersActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra("type", "资讯"); - context.startActivity(intent); - - } - }); - gonglueImg.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "主页", "攻略栏目"); - - Map map = new HashMap(); - map.put("location", "攻略"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - Intent intent = new Intent(context, - NewsOrRaidersActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra("type", "攻略"); - context.startActivity(intent); - } - }); - databaseImg.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "主页", "原创栏目"); - - Map map = new HashMap(); - map.put("location", "原创"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - Intent intent = new Intent(context, OriginalActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - } - } - - public class HeadViewHolder extends RecyclerView.ViewHolder { - public ImageView thumb; - public TextView title; - public LinearLayout link; - - public HeadViewHolder(View view) { - super(view); - this.thumb = (ImageView) view.findViewById(R.id.head_thumb); - this.title = (TextView) view.findViewById(R.id.head_title); - this.link = (LinearLayout) view.findViewById(R.id.head_link); - } - - public void initViewHolder(int position) { - if (position == position_kapaitoutiao) { - title.setText("卡牌头条"); - thumb.setBackgroundResource(R.drawable.home_kapaitoutiao); - link.setVisibility(View.VISIBLE); - link.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "更多>", "卡牌头条"); - - Map map = new HashMap(); - map.put("location", "卡牌头条-更多"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - Intent intent = new Intent(context, - NewsOrRaidersActivity.class); - intent.putExtra("type", "资讯"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - } else if (position == position_zuixinchajian) { - title.setText("最新插件"); - thumb.setBackgroundResource(R.drawable.home_zuixinchajian); - link.setVisibility(View.VISIBLE); - link.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "更多>", "最新插件"); - - Map map = new HashMap(); - map.put("location", "最新插件-更多"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - EventBus.getDefault().post(new EBSkipNewPlugin(0)); - } - }); - } else if (position == position_yuedujingxuan) { - title.setText("阅读精选"); - thumb.setBackgroundResource(R.drawable.home_yuedujingxuan); - link.setVisibility(View.VISIBLE); - link.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "更多>", "阅读精选"); - - Map map = new HashMap(); - map.put("location", "阅读精选-更多"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - Intent intent = new Intent(context, OriginalActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - } else if (position == position_remenkapai) { - title.setText("热门卡牌"); - thumb.setBackgroundResource(R.drawable.home_remenkapai); - link.setVisibility(View.VISIBLE); - link.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "更多>", "热门卡牌"); - - Map map = new HashMap(); - map.put("location", "热门卡牌-更多"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - Intent intent = new Intent(context, - HotCardActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - } else if (position == position_kapaigonglue) { - title.setText("卡牌攻略"); - thumb.setBackgroundResource(R.drawable.home_kapaigonglue); - link.setVisibility(View.VISIBLE); - link.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "更多>", "卡牌攻略"); - - Map map = new HashMap(); - map.put("location", "卡牌攻略-更多"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - Intent intent = new Intent(context, - NewsOrRaidersActivity.class); - intent.putExtra("type", "攻略"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - } else if (position == position_xincekapai) { - thumb.setBackgroundResource(R.drawable.home_xincekapai); - title.setText("新测卡牌"); - link.setVisibility(View.VISIBLE); - link.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - DataUtils.onEvent(context, "更多>", "新测卡牌"); - - Map map = new HashMap(); - map.put("location", "新测卡牌-更多"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - Intent intent = new Intent(context, GameActivity.class); - intent.putExtra("tab", 1); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - } - } - } - - public class ImageNewsTypeViewHolder extends RecyclerView.ViewHolder { - private AutoScrollViewPager home_viewpager; - private LinearLayout home_viewpager_ll_hint; - - public ImageNewsTypeViewHolder(View v) { - super(v); - home_viewpager = (AutoScrollViewPager) v - .findViewById(R.id.home_viewpager); - home_viewpager_ll_hint = (LinearLayout) v - .findViewById(R.id.home_viewpager_ll_hint); - - autoScrollViewPager = home_viewpager; - } - - public void initViewHolder(int position) { - if (!shoulanKapaitoutiaoList.isEmpty()) { - int currentItem = 0; - if (home_viewpager.getAdapter() != null) { - currentItem = home_viewpager.getCurrentItem(); - } - home_viewpager_ll_hint.removeAllViews(); - for (int i = 0; i < shoulanKapaitoutiaoList.size(); i++) { - TextView tv = new TextView(context); - LayoutParams lparams = new LayoutParams( - DisplayUtils.dip2px(context, 8), - DisplayUtils.dip2px(context, 8)); - if (i != currentItem) { - tv.setBackgroundResource(R.drawable.oval_hint_up); - } else { - tv.setBackgroundResource(R.drawable.oval_hint_dn); - } - if (i != 0) { - lparams.leftMargin = DisplayUtils.dip2px(context, 5); - } - tv.setLayoutParams(lparams); - home_viewpager_ll_hint.addView(tv); - } - - home_viewpager.setAdapter(new AutoScrollViewPagerAdapter()); - home_viewpager - .addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - - @Override - public void onPageSelected(int position) { - - for (int i = 0; i < home_viewpager_ll_hint - .getChildCount(); i++) { - TextView tv = (TextView) home_viewpager_ll_hint - .getChildAt(i); - if (i == position - % shoulanKapaitoutiaoList.size()) { - tv.setTextColor(0xffffffff); - tv.setBackgroundResource(R.drawable.oval_hint_dn); - } else { - tv.setTextColor(0xff333333); - tv.setBackgroundResource(R.drawable.oval_hint_up); - } - } - - } - - @Override - public void onPageScrolled(int position, - float positionOffset, - int positionOffsetPixels) { - - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - - home_viewpager.setCurrentItem(currentItem); - home_viewpager.setInterval(3000); - home_viewpager.startAutoScroll(); - } - } - - } - - public class AutoScrollViewPagerHolder { - - private ImageView news_thumb; - private TextView news_main_title, news_sub_title; - - public AutoScrollViewPagerHolder(View v) { - news_thumb = (ImageView) v.findViewById(R.id.news_thumb); - news_main_title = (TextView) v.findViewById(R.id.news_main_title); - news_sub_title = (TextView) v.findViewById(R.id.news_sub_title); - } - } - - public class AutoScrollViewPagerAdapter extends RecyclingPagerAdapter { - - @Override - public View getView(int position, View convertView, ViewGroup container) { - View view; - AutoScrollViewPagerHolder holder; - final int i = position % shoulanKapaitoutiaoList.size(); - final NewsEntity newsEntity = shoulanKapaitoutiaoList.get(i); - - if (convertView != null) { - view = convertView; - holder = (AutoScrollViewPagerHolder) convertView.getTag(); - } else { - view = View.inflate(context, - R.layout.home_list_item_newsimage_type, null); - holder = new AutoScrollViewPagerHolder(view); - view.setTag(holder); - } - if (TextUtils.isEmpty(newsEntity.getThumb())) { - holder.news_thumb.setImageResource(R.drawable.preload); - holder.news_thumb.setScaleType(ScaleType.CENTER_INSIDE); - } else { - ImageUtils.getInstance(context).display(newsEntity.getThumb(), - holder.news_thumb); - } - String title = newsEntity.getTitle(); - String key = null; - if (title.contains("》")) { - key = "》"; - } else if (title.contains(" ")) { - key = " "; - } - if (key != null) { - int index = title.indexOf(key); - String mainTitle = title.substring(0, index + 1); - String subTitle = title.substring(index + 1); - - int left = (mainTitle.length() - 2) - * DisplayUtils.sp2px(context, 16) - + DisplayUtils.dip2px(context, 4); - int right = DisplayUtils.sp2px(context, - shoulanKapaitoutiaoList.size() * 13); - int length = subTitle.length() - * DisplayUtils.sp2px(context, 16); - int max = width - right - DisplayUtils.sp2px(context, 96); - if (left + length > max) { - holder.news_sub_title.setGravity(Gravity.RIGHT); - LayoutParams lparams = new LayoutParams( - LayoutParams.MATCH_PARENT, - LayoutParams.WRAP_CONTENT); - lparams.rightMargin = right; - holder.news_sub_title.setLayoutParams(lparams); - } else { - holder.news_sub_title.setGravity(Gravity.LEFT); - LayoutParams lparams = new LayoutParams( - LayoutParams.MATCH_PARENT, - LayoutParams.WRAP_CONTENT); - lparams.leftMargin = left; - holder.news_sub_title.setLayoutParams(lparams); - } - - holder.news_main_title.setText(mainTitle); - holder.news_sub_title.setVisibility(View.VISIBLE); - holder.news_sub_title.setText(subTitle); - } else { - holder.news_main_title.setText(title); - holder.news_sub_title.setVisibility(View.GONE); - } - view.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - Map kv = new HashMap(); - kv.put("文章类型", newsEntity.getType()); - kv.put("入口", "主页-卡牌头条"); - DataUtils.onEvent(context, "文章阅读-资讯", newsEntity.getTitle(), kv); - - Map kv2 = new HashMap(); - kv2.put(newsEntity.getTitle(), "点击量"); - DataUtils.onEvent(context, "主页数据", "卡牌头条", kv2); - - Map kv3 = new HashMap(); - kv3.put("卡牌头条-首栏", i + ""); - DataUtils.onEvent(context, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", "卡牌头条-首栏"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("news", newsEntity.getTitle()); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - NewsUtils.startNewsActivity(context, newsEntity, "主页-卡牌头条"); - } - }); - return view; - } - - @Override - public int getCount() { - return Integer.MAX_VALUE; - } - - } - - public class GenuineNewsTypeViewHolder extends RecyclerView.ViewHolder { - private AutoScrollViewPager home_viewpager; - private LinearLayout home_viewpager_ll_hint; - - public GenuineNewsTypeViewHolder(View v) { - super(v); - home_viewpager = (AutoScrollViewPager) v - .findViewById(R.id.home_viewpager); - home_viewpager_ll_hint = (LinearLayout) v - .findViewById(R.id.home_viewpager_ll_hint); - - genuineNewsViewPager = home_viewpager; - } - - public void initViewHolder(int position) { - if (!yuedujingxuanList.isEmpty()) { - int currentItem = 0; - if (home_viewpager.getAdapter() != null) { - currentItem = home_viewpager.getCurrentItem(); - } - home_viewpager_ll_hint.removeAllViews(); - for (int i = 0; i < yuedujingxuanList.size(); i++) { - TextView tv = new TextView(context); - LayoutParams lparams = new LayoutParams( - DisplayUtils.dip2px(context, 8), - DisplayUtils.dip2px(context, 8)); - if (i != currentItem) { - tv.setBackgroundResource(R.drawable.oval_hint_up); - } else { - tv.setBackgroundResource(R.drawable.oval_hint_dn); - } - if (i != 0) { - lparams.leftMargin = DisplayUtils.dip2px(context, 5); - } - tv.setLayoutParams(lparams); - home_viewpager_ll_hint.addView(tv); - } - - home_viewpager.setAdapter(new GenuineNewsAdapter()); - home_viewpager - .addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - - @Override - public void onPageSelected(int position) { - - for (int i = 0; i < home_viewpager_ll_hint - .getChildCount(); i++) { - TextView tv = (TextView) home_viewpager_ll_hint - .getChildAt(i); - if (i == position - % yuedujingxuanList.size()) { - tv.setTextColor(0xffffffff); - tv.setBackgroundResource(R.drawable.oval_hint_dn); - } else { - tv.setTextColor(0xff333333); - tv.setBackgroundResource(R.drawable.oval_hint_up); - } - } - - } - - @Override - public void onPageScrolled(int position, - float positionOffset, - int positionOffsetPixels) { - - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - - home_viewpager.setCurrentItem(currentItem); - home_viewpager.setInterval(6000); - home_viewpager.startAutoScroll(); - } - } - - } - - public class GenuineNewsHolder { - private ImageView genuinenews_thumb; - private TextView genuinenews_title, genuinenews_intro; - - public GenuineNewsHolder(View v) { - genuinenews_thumb = (ImageView) v - .findViewById(R.id.genuinenews_thumb); - genuinenews_title = (TextView) v - .findViewById(R.id.genuinenews_title); - genuinenews_intro = (TextView) v - .findViewById(R.id.genuinenews_intro); - } - } - - public class GenuineNewsAdapter extends RecyclingPagerAdapter { - - @Override - public View getView(int position, View convertView, ViewGroup container) { - View view; - GenuineNewsHolder holder; - final int i = position % yuedujingxuanList.size(); - final NewsEntity newsEntity = yuedujingxuanList.get(i); - - if (convertView != null) { - view = convertView; - holder = (GenuineNewsHolder) convertView.getTag(); - } else { - view = View.inflate(context, - R.layout.home_list_item_genuinenews_type, null); - holder = new GenuineNewsHolder(view); - view.setTag(holder); - } - - if (TextUtils.isEmpty(newsEntity.getThumb())) { - holder.genuinenews_thumb.setImageResource(R.drawable.preload); - holder.genuinenews_thumb.setScaleType(ScaleType.CENTER_INSIDE); - } else { - ImageUtils.getInstance(context).display(newsEntity.getThumb(), - holder.genuinenews_thumb); - } - - holder.genuinenews_title.setText(newsEntity.getTitle()); - - LayoutParams lparams = new LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - lparams.leftMargin = DisplayUtils.sp2px(context, 8); - lparams.rightMargin = DisplayUtils.sp2px(context, - yuedujingxuanList.size() * 13 - 3); - holder.genuinenews_intro.setLayoutParams(lparams); - holder.genuinenews_intro.setText("\u3000\u3000" - + newsEntity.getIntro()); - - view.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - - Map kv2 = new HashMap(); - kv2.put(newsEntity.getTitle(), "点击量"); - DataUtils.onEvent(context, "主页数据", "阅读精品", kv2); - - Map kv3 = new HashMap(); - kv3.put("阅读精品", i + ""); - DataUtils.onEvent(context, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", "阅读精品"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("news", newsEntity.getTitle()); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - NewsUtils.startNewsActivity(context, newsEntity, "主页-阅读精品"); - } - }); - - return view; - } - - @Override - public int getCount() { - return Integer.MAX_VALUE; - } - - } - - public class TextNewsTypeViewHolder extends RecyclerView.ViewHolder { - public TextView newsType; - public TextView newsTitle; - public View rootItem; - - public TextNewsTypeViewHolder(View v) { - super(v); - rootItem = v; - newsType = (TextView) v.findViewById(R.id.news_type); - newsTitle = (TextView) v.findViewById(R.id.news_title); - } - - public void initViewHolder(final int position) { - if (position_kapaitoutiao != -1 - && position > position_kapaitoutiao - + (shoulanKapaitoutiaoList.isEmpty() ? 0 : 1) - && position <= position_kapaitoutiao + 1 + kapaitoutiaoSize) { - final int i = position - (shoulanKapaitoutiaoList.isEmpty() ? 2 : 3); - final NewsEntity newsEntity = cilanKapaitoutiaoList.get(i); - newsType.setBackgroundResource(NewsUtils - .getDrawableIdByType(newsEntity.getType())); - newsType.setText(newsEntity.getType()); - newsTitle.setText(newsEntity.getTitle()); - rootItem.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - Map kv = new HashMap(); - kv.put("文章类型", newsEntity.getType()); - kv.put("入口", "主页-卡牌头条"); - DataUtils.onEvent(context, "文章阅读-资讯", newsEntity.getTitle(), kv); - - Map kv2 = new HashMap(); - kv2.put(newsEntity.getTitle(), "点击量"); - DataUtils.onEvent(context, "主页数据", "卡牌头条", kv2); - - Map kv3 = new HashMap(); - kv3.put("卡牌头条-次栏", i + ""); - DataUtils.onEvent(context, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", "卡牌头条-次栏"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("news", newsEntity.getTitle()); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - NewsUtils.startNewsActivity(context, newsEntity, - "主页-卡牌头条"); - } - }); - } else if (position_kapaigonglue != -1 - && position > position_kapaigonglue - && position <= position_kapaigonglue - + kapaigonglueList.size()) { - final int i = position - position_kapaigonglue - 1; - final NewsEntity newsEntity = kapaigonglueList.get(i); - newsType.setBackgroundResource(NewsUtils - .getDrawableIdByType(newsEntity.getType())); - newsType.setText(newsEntity.getType()); - newsTitle.setText(newsEntity.getTitle()); - rootItem.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - Map kv = new HashMap(); - kv.put("文章类型", newsEntity.getType()); - kv.put("入口", "主页-卡牌攻略"); - DataUtils.onEvent(context, "文章阅读-攻略", newsEntity.getTitle(), kv); - - Map kv2 = new HashMap(); - kv2.put(newsEntity.getTitle(), "点击量"); - DataUtils.onEvent(context, "主页数据", "卡牌攻略", kv2); - - Map kv3 = new HashMap(); - kv3.put("卡牌攻略", i + ""); - DataUtils.onEvent(context, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", "卡牌攻略"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("news", newsEntity.getTitle()); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", map); - - NewsUtils.startNewsActivity(context, newsEntity, "主页-卡牌攻略"); - } - }); - } - } - - } - - public class GameNormalViewHolder extends RecyclerView.ViewHolder { - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView downloadBtn; - public TextView gameDes; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed; - public TextView download_percentage; - - public View rootItem; - - /** - * - * @param v - * @param column - * column == zuixinchajian,表示是最新插件板块, column == - * remenkapai,表示热门版块 - */ - public GameNormalViewHolder(View v) { - super(v); - rootItem = v; - gameThumb = (ImageView) v.findViewById(R.id.home1_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home1_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home1_download_btn); - gameDes = (TextView) v.findViewById(R.id.home1_game_des); - labelList = (LinearLayout) v.findViewById(R.id.home1_label_list); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home1_game_ll_info); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home1_game_progressbar); - download_speed = (TextView) v - .findViewById(R.id.home1_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home1_download_percentage); - } - - public void initViewHolder(int position) { - - GameEntity entity = null; - String from = null; - int i = 0; - if (position > position_zuixinchajian - && position <= position_zuixinchajian - + zuixinchajianList.size()) { - i = position - position_zuixinchajian - 1; - entity = zuixinchajianList.get(i); - from = "最新插件"; - } else if (position > position_remenkapai - && position <= position_remenkapai + remenkapaiList.size()) { - i = position - position_remenkapai - 1; - entity = remenkapaiList.get(i); - from = "热门卡牌"; - } - if (entity != null) { - - ImageUtils.getInstance(context).display(entity.getIcon(), - gameThumb); - if (entity.getApk() == null || entity.getApk().isEmpty()) { - gameNameAndSize.setText(entity.getName()); - } else { - gameNameAndSize.setText(entity.getName() + " | " + entity.getApk().get(0).getSize()); - } - gameDes.setText(entity.getBrief()); - GameViewUtils.setLabelList(context, labelList, entity.getTag()); - - final GameEntity gameInfoEntity = entity; - final String entrance = from; - final int ii = i; - - rootItem.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "主页-" + entrance); - DataUtils.onEvent(context, "游戏详情", gameInfoEntity.getName(), kv); - - Map kv2 = new HashMap(); - kv2.put(gameInfoEntity.getName(), "点击量"); - DataUtils.onEvent(context, "主页数据", entrance, kv2); - - Map kv3 = new HashMap(); - kv3.put(entrance, ii + ""); - DataUtils.onEvent(context, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", entrance); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", gameInfoEntity.getName()); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - AppController.put("GameEntity", gameInfoEntity); - Intent intent = new Intent(context, - GameDetailsActivity.class); - intent.putExtra("entrance", "主页-" + entrance); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - }); - - DownloadItemUtils.setOnClickListener(context, downloadBtn, - download_speed, download_percentage, entity, position, - HomeFragmentAdapter.this, - statusMap, platformMap, "主页-" + entrance, - dismissEntity, "主页:" + entity.getName()); - - DownloadItemUtils.updateItem(context, labelList, - game_progressbar, game_ll_info, download_speed, - download_percentage, downloadBtn, entity, platformMap, - statusMap); - - } - } - } - - public class GameTestViewHolder extends RecyclerView.ViewHolder { - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView gameSize; - public TextView downloadBtn; - public TextView gameDes; - public TextView gameTestType; - public TextView gameTestTime; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed; - public TextView download_percentage; - - private View rootItem; - - public GameTestViewHolder(View v) { - super(v); - this.rootItem = v; - gameThumb = (ImageView) v.findViewById(R.id.home2_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home2_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home2_download_btn); - gameDes = (TextView) v.findViewById(R.id.home2_game_des); - gameTestType = (TextView) v.findViewById(R.id.home2_test_type); - gameTestTime = (TextView) v.findViewById(R.id.home2_test_time); - labelList = (LinearLayout) v.findViewById(R.id.home2_label_list); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home2_game_ll_info); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home2_game_progressbar); - download_speed = (TextView) v - .findViewById(R.id.home2_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home2_download_percentage); - } - - public void initViewHolder(int position) { - if (position_xincekapai != -1) { - - final int i = position - position_xincekapai - 1; - final GameEntity entity = xincekapaiList.get(i); - - ImageUtils.getInstance(context).display(entity.getIcon(), - gameThumb); - if (entity.getApk() == null || entity.getApk().isEmpty()) { - gameNameAndSize.setText(entity.getName()); - } else { - gameNameAndSize.setText(entity.getName() + " | " - + entity.getApk().get(0).getSize()); - } - gameDes.setText(entity.getBrief()); - gameTestType.setText(xincekapaiList - .get(position - position_xincekapai - 1).getTest() - .getType()); - if (entity.getTest().getStart() == 0) { - gameTestTime.setVisibility(View.GONE); - } else { - gameTestTime.setText(GameViewUtils.getGameTestDate(entity - .getTest().getStart())); - } - - rootItem.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "主页-新测卡牌"); - DataUtils.onEvent(context, "游戏详情", entity.getName(), kv); - - Map kv2 = new HashMap(); - kv2.put(entity.getName(), "点击量"); - DataUtils.onEvent(context, "主页数据", "新测卡牌", kv2); - - Map kv3 = new HashMap(); - kv3.put("新测卡牌", i + ""); - DataUtils.onEvent(context, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", "新测卡牌"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", entity.getName()); - map.put("page", "主页"); - DataCollectionManager.onEvent(context, "click-item", - map); - - 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()) { - downloadBtn.setVisibility(View.GONE); - } else { - if (entity.getTest().getEnd() == 0) { - downloadBtn.setVisibility(View.VISIBLE); - DownloadItemUtils.setOnClickListener(context, - downloadBtn, download_speed, - download_percentage, entity, position, - HomeFragmentAdapter.this, - statusMap, platformMap, "主页-新测卡牌", - dismissEntity, "主页:" + entity.getName()); - } else { - long endTime = Long.valueOf(entity.getTest().getEnd() - + "000"); - long todayTime = new Date().getTime(); - if (todayTime > endTime) { - // 测试时间已过 - downloadBtn.setVisibility(View.GONE); - } else { - // 测试时间未过 - downloadBtn.setVisibility(View.VISIBLE); - DownloadItemUtils.setOnClickListener(context, - downloadBtn, download_speed, - download_percentage, entity, position, - HomeFragmentAdapter.this, statusMap, platformMap, - "主页-新测卡牌", dismissEntity, - "主页:" + entity.getName()); - } - } - } - - DownloadItemUtils.updateItem(context, labelList, - game_progressbar, game_ll_info, download_speed, - download_percentage, downloadBtn, entity, platformMap, - statusMap); - } - } - - } - - private AutoScrollViewPager autoScrollViewPager; - private AutoScrollViewPager genuineNewsViewPager; - - public void startAutoScroll() { - if (autoScrollViewPager != null) { - autoScrollViewPager.startAutoScroll(); - } - if (genuineNewsViewPager != null) { - genuineNewsViewPager.startAutoScroll(); - } - } - - public void stopAutoScroll() { - if (autoScrollViewPager != null) { - autoScrollViewPager.stopAutoScroll(); - } - if (genuineNewsViewPager != null) { - genuineNewsViewPager.stopAutoScroll(); - } - } - - public void setList(List zList, List rList, - List xList) { - zuixinchajianList = zList; - remenkapaiList = rList; - xincekapaiList = xList; - notifyDataSetChanged(); - } - - public int getKapaitoutiaoListSize() { - return kapaitoutiaoSize; - } - - public int getKapaigonglueListSize() { - return kapaigonglueList.size(); - } - - public int getZuixinchajianListSize() { - return zuixinchajianList.size(); - } - - public int getRemenkapaiListSize() { - return remenkapaiList.size(); - } - - public int getXincekapaiListSize() { - return xincekapaiList.size(); - } - - public List getZuixinchajianList() { - return zuixinchajianList; - } - - public List getRemenkapaiList() { - return remenkapaiList; - } - - public List getXincekapaiList() { - return xincekapaiList; - } - - public int getPosition_kapaitoutiao() { - return position_kapaitoutiao; - } - - public int getPosition_zuixinchajian() { - return position_zuixinchajian; - } - - public int getPosition_remenkapai() { - return position_remenkapai; - } - - public int getPosition_kapaigonglue() { - return position_kapaigonglue; - } - - public int getPosition_xincekapai() { - return position_xincekapai; - } - -} 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 320310b91c..1cf1ac7a33 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java @@ -20,6 +20,9 @@ import com.gh.gamecenter.R; * Created by khy on 2016/6/29. */ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { + + private View view; + private SwipeRefreshLayout original_swipe_refresh; private RecyclerView original_list; private LinearLayoutManager layoutManager; @@ -28,53 +31,65 @@ public class News1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr private LinearLayout reuse_no_connection; private boolean isDestroy; - View view; - @Nullable + @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - if (view == null){ - view = inflater.inflate(R.layout.fragment_original, container, false); - isDestroy = 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); + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); - reuse_no_connection.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - original_swipe_refresh.setRefreshing(true); - original_list.setVisibility(View.VISIBLE); - original_pb_loading.setVisibility(View.VISIBLE); - reuse_no_connection.setVisibility(View.GONE); - } - }); + view = View.inflate(getActivity(), R.layout.fragment_original, null); - 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); - original_list.setAdapter(adapter); - original_list.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - original_list.setOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); + isDestroy = false; - if (!isDestroy && newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() + 1 == adapter.getItemCount()) { - if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) { - adapter.addList(adapter.getNewsList().size()); - } + 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); + + reuse_no_connection.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + original_swipe_refresh.setRefreshing(true); + original_list.setVisibility(View.VISIBLE); + original_pb_loading.setVisibility(View.VISIBLE); + reuse_no_connection.setVisibility(View.GONE); + } + }); + + 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); + original_list.setAdapter(adapter); + original_list.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); + original_list.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + 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.getNewsList().size()); } } - }); + } + }); + + } + + @Nullable + @Override + 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() { 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 991e3054ce..f7ea8de7d3 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -373,8 +373,8 @@ public class News1FragmentAdapter extends RecyclerView.Adapter { public static class ITEM_TYPE { @@ -109,9 +108,9 @@ public class NewsOrRaidersListAdapter extends private String type; - public NewsOrRaidersListAdapter(Context con, RecyclerView recyclerView, - LinearLayout linearLayout1, LinearLayout linearLayout2, String str, - RelativeLayout relativeLayout, TextView textView) { + public News3FragmentAdapter(Context con, RecyclerView recyclerView, + LinearLayout linearLayout1, LinearLayout linearLayout2, String str, + RelativeLayout relativeLayout, TextView textView) { context = con; type = str; @@ -234,8 +233,7 @@ public class NewsOrRaidersListAdapter extends } } }); - AppController.addToRequestQueue(request, - NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } } @@ -318,7 +316,7 @@ public class NewsOrRaidersListAdapter extends } }); - AppController.addToRequestQueue(request, NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } public void addList() { @@ -361,7 +359,7 @@ public class NewsOrRaidersListAdapter extends } }); - AppController.addToRequestQueue(request, NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } private void addDatas(List datas) { @@ -486,8 +484,7 @@ public class NewsOrRaidersListAdapter extends } } }); - AppController.addToRequestQueue(request, - NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } } @@ -547,8 +544,7 @@ public class NewsOrRaidersListAdapter extends } }); - AppController.addToRequestQueue(gameObjectRequest, - NewsOrRaidersActivity.class); + AppController.addToRequestQueue(gameObjectRequest, NewsFragment.class); } } @@ -752,8 +748,8 @@ public class NewsOrRaidersListAdapter extends if (isNetworkError) { holder.footerview_progressbar.setVisibility(View.GONE); holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new OnClickListener() { + holder.itemView.setClickable(true); + holder.itemView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { isNetworkError = false; @@ -764,7 +760,7 @@ public class NewsOrRaidersListAdapter extends } else if (isRemove) { holder.footerview_progressbar.setVisibility(View.GONE); holder.footerview_tv_loading.setText("加载完毕"); - holder.rootView.setClickable(false); + holder.itemView.setClickable(false); } // else if (isLoaded) { // holder.footerview_progressbar.setVisibility(View.GONE); @@ -782,7 +778,7 @@ public class NewsOrRaidersListAdapter extends else { holder.footerview_progressbar.setVisibility(View.VISIBLE); holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); + holder.itemView.setClickable(false); } } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java index ecddccd742..16a6f84d2d 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -13,7 +13,6 @@ import android.widget.LinearLayout; import com.gh.base.AppController; import com.gh.common.view.VerticalItemDecoration; -import com.gh.gamecenter.NewsOrRaidersActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBConcernChanged; import com.gh.gamecenter.eventbus.EBNetworkState; @@ -128,7 +127,7 @@ public class News4Fragment extends Fragment { public void onDestroy() { super.onDestroy(); isDestroy = true; - AppController.canclePendingRequests(NewsOrRaidersActivity.class); + AppController.canclePendingRequests(NewsFragment.class); news_list = null; layoutManager = null; adapter = null; diff --git a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java index 85db5dab6b..c210d5c89b 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -26,7 +26,6 @@ import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.TimestampUtils; import com.gh.gamecenter.GameDetailsActivity; -import com.gh.gamecenter.NewsOrRaidersActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.db.info.ConcernInfo; @@ -219,8 +218,7 @@ public class News4FragmentAdapter extends } } }); - AppController.addToRequestQueue(request, - NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } } @@ -307,7 +305,7 @@ public class News4FragmentAdapter extends } }); - AppController.addToRequestQueue(request, NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } public void addList() { @@ -349,7 +347,7 @@ public class News4FragmentAdapter extends } }); - AppController.addToRequestQueue(request, NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } private void addDatas(List datas) { @@ -473,8 +471,7 @@ public class News4FragmentAdapter extends } } }); - AppController.addToRequestQueue(request, - NewsOrRaidersActivity.class); + AppController.addToRequestQueue(request, NewsFragment.class); } } @@ -534,8 +531,7 @@ public class News4FragmentAdapter extends } }); - AppController.addToRequestQueue(gameObjectRequest, - NewsOrRaidersActivity.class); + AppController.addToRequestQueue(gameObjectRequest, NewsFragment.class); } } @@ -689,8 +685,8 @@ public class News4FragmentAdapter extends if (isNetworkError) { holder.footerview_progressbar.setVisibility(View.GONE); holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new OnClickListener() { + holder.itemView.setClickable(true); + holder.itemView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { isNetworkError = false; @@ -701,7 +697,7 @@ public class News4FragmentAdapter extends } else if (isRemove) { holder.footerview_progressbar.setVisibility(View.GONE); holder.footerview_tv_loading.setText("加载完毕"); - holder.rootView.setClickable(false); + holder.itemView.setClickable(false); } // else if (isLoaded) { // holder.footerview_progressbar.setVisibility(View.GONE); @@ -719,7 +715,7 @@ public class News4FragmentAdapter extends else { holder.footerview_progressbar.setVisibility(View.VISIBLE); holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); + holder.itemView.setClickable(false); } } } diff --git a/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java b/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java index 0c3b3d07b4..89d7857806 100644 --- a/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java @@ -304,7 +304,7 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View if (currentItem != mViewPager.getCurrentItem()) { currentItem = mViewPager.getCurrentItem(); Utils.log("currentItem = " + currentItem); - EventBus.getDefault().post(new EBUISwitch("PluginFragment", currentItem)); + EventBus.getDefault().post(new EBUISwitch("GameFragment", currentItem)); } } } diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game1Fragment.java b/app/src/main/java/com/gh/gamecenter/plugin/Game1Fragment.java deleted file mode 100644 index 85dcdd1afc..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game1Fragment.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.os.Bundle; -import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.gamecenter.R; - -/** - * Created by khy on 2016/6/27. - */ -public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { - - private View view; - private RecyclerView mRecyclerView; - private Game1FragmentAdapter pluginFragmentAdapter; - private SwipeRefreshLayout mSwipeRefreshLayout; - private ProgressBarCircularIndeterminate mProgressBarCircularIndeterminate; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - view = View.inflate(getActivity(), R.layout.plugin1_fragment, null); - - 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())); - pluginFragmentAdapter = new Game1FragmentAdapter(getActivity(), mSwipeRefreshLayout); - mRecyclerView.setAdapter(pluginFragmentAdapter); - mRecyclerView.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - } - - @Nullable - @Override - 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); - } - }; - - @Override - public void onRefresh() { - handler.postDelayed(runnable, 1000); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/plugin/Game1FragmentAdapter.java deleted file mode 100644 index 4bee2bb94c..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game1FragmentAdapter.java +++ /dev/null @@ -1,635 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.support.v4.view.ViewPager; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; -import android.util.DisplayMetrics; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.android.volley.NoConnectionError; -import com.android.volley.Response; -import com.android.volley.TimeoutError; -import com.android.volley.VolleyError; -import com.gh.base.AppController; -import com.gh.common.constant.Config; -import com.gh.common.constant.Constants; -import com.gh.common.util.DisplayUtils; -import com.gh.common.util.GameViewUtils; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.TimestampUtils; -import com.gh.common.view.AutoScrollViewPager; -import com.gh.gamecenter.GameDetailsActivity; -import com.gh.gamecenter.NewsActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.entity.SlideEntity; -import com.gh.gamecenter.entity.SubjectEntity; -import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import org.json.JSONArray; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * Created by LGT on 2016/7/1. - */ -public class Game1FragmentAdapter extends RecyclerView.Adapter { - - private class ITEM_TYPE { - public static final int slide = 0;// 滚动图 - public static final int head = 1;// 专题头部 - public static final int game_normal_type = 2;// 游戏布局1 - public static final int game_test_type = 3;// 游戏布局2 - public static final int image = 4;// 大图布局 - } - - private Activity mActivity; - private Context mContext; - - private SwipeRefreshLayout mSwipeRefreshLayout; - - private List slideList; - private List subjectList; - - private boolean isSlideError; - - public Game1FragmentAdapter(Activity activity, SwipeRefreshLayout swipeRefreshLayout) { - - mActivity = activity; - mContext = activity; - mSwipeRefreshLayout = swipeRefreshLayout; - - slideList = new ArrayList(); - subjectList = new ArrayList(); - - isSlideError = false; - - load(); - } - - public void load() { - new Thread(runnable){}.start(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - initSlide(true); - } - }; - - private void initSlide(final boolean isFirst) { - JsonArrayExtendedRequest slideRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST + "v1d50/index/slides", - Constants.GAME_CD), new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - Type listType = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - slideList = gson.fromJson(response.toString(), listType); - if (slideList != null && !slideList.isEmpty()) { - notifyItemChanged(0); - } - if (isFirst) { - initAlbum(); - } - } - - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - // 无网络连接 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - isSlideError = true; - Toast.makeText(mContext, "网络错误", Toast.LENGTH_SHORT).show(); - notifyItemChanged(0); - } - if (isFirst) { - initAlbum(); - } - } - }); - AppController.addToRequestQueue(slideRequest, Game1Fragment.class); - } - - private void initAlbum() { - 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; - notifyItemRangeInserted(1, getItemCount() - 1); - } - } - }, - new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - } - }); - AppController.addToRequestQueue(request, Game1Fragment.class); - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view; - if (viewType == ITEM_TYPE.slide) { - view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.plugin1_autoscrollviewpager_viewholder, parent, - false); - DisplayMetrics outMetrics = new DisplayMetrics(); - mActivity.getWindowManager().getDefaultDisplay() - .getMetrics(outMetrics); - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - (int) (outMetrics.widthPixels / 16f * 7f)); - view.setLayoutParams(params); - return new AutoScrollViewpagerViewHolder(view); - } else if (viewType == ITEM_TYPE.head) { - view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.home_list_item_head, parent, false); - return new HeadViewHolder(view); - } else if (viewType == ITEM_TYPE.game_normal_type) { - view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.home_game_normal_item, parent, false); - return new GameNormalViewHolder(view); - } else if (viewType == ITEM_TYPE.game_test_type) { - view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.home_game_test_item, parent, false); - return new GameTestViewHolder(view); - } else { - ImageView imageView = new ImageView(parent.getContext()); - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT); - imageView.setLayoutParams(params); - imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); - return new ImageViewHolder(imageView); - } - } - - public class GameTestViewHolder extends RecyclerView.ViewHolder { - public TextView home2_game_order; - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView downloadBtn; - public TextView gameDes; - public TextView gameTestType; - public TextView gameTestTime; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed; - public TextView download_percentage; - - private View rootItem; - - public GameTestViewHolder(View v) { - super(v); - this.rootItem = v; - home2_game_order = (TextView) v.findViewById(R.id.home2_game_order); - gameThumb = (ImageView) v.findViewById(R.id.home2_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home2_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home2_download_btn); - gameDes = (TextView) v.findViewById(R.id.home2_game_des); - gameTestType = (TextView) v.findViewById(R.id.home2_test_type); - gameTestTime = (TextView) v.findViewById(R.id.home2_test_time); - labelList = (LinearLayout) v.findViewById(R.id.home2_label_list); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home2_game_ll_info); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home2_game_progressbar); - download_speed = (TextView) v - .findViewById(R.id.home2_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home2_download_percentage); - } - - public void initViewHolder(int position) { - int offset = 1; - 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) { - init(gameEntity, position - offset - 1, subjectList.get(i).getOrder()); - break; - } - } - offset = subjectList.get(i).getData().size() + offset + 1; - } - } - - public void init(GameEntity gameEntity, int i, boolean order) { - if (order) { - home2_game_order.setVisibility(View.VISIBLE); - home2_game_order.setText(i + ""); - } else { - home2_game_order.setVisibility(View.GONE); - } - ImageUtils.getInstance(mContext).display(gameEntity.getIcon(), - gameThumb); - gameNameAndSize.setText(gameEntity.getName()); - if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { - gameDes.setText(gameEntity.getBrief()); - } else { - gameDes.setText(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief()); - } - gameTestType.setText(gameEntity.getTest().getType()); - if (gameEntity.getTest().getStart() == 0) { - gameTestTime.setVisibility(View.GONE); - } else { - gameTestTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart())); - } - - final GameEntity entity = gameEntity; - - rootItem.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()) { - downloadBtn.setVisibility(View.GONE); - } else { - if (entity.getTest().getEnd() == 0) { - downloadBtn.setVisibility(View.VISIBLE); -// DownloadItemUtils.setOnClickListener(mContext, -// downloadBtn, download_speed, -// download_percentage, entity, position, -// Game1FragmentAdapter.this, -// statusMap, platformMap, "主页-新测卡牌", -// dismissEntity, "主页:" + entity.getName()); - } else { - long endTime = Long.valueOf(entity.getTest().getEnd() - + "000"); - long todayTime = new Date().getTime(); - if (todayTime > endTime) { - // 测试时间已过 - downloadBtn.setVisibility(View.GONE); - } else { - // 测试时间未过 - downloadBtn.setVisibility(View.VISIBLE); -// DownloadItemUtils.setOnClickListener(context, -// downloadBtn, download_speed, -// download_percentage, entity, position, -// Game1FragmentAdapter.this, statusMap, platformMap, -// "主页-新测卡牌", dismissEntity, -// "主页:" + entity.getName()); - } - } - } - -// DownloadItemUtils.updateItem(context, labelList, -// game_progressbar, game_ll_info, download_speed, -// download_percentage, downloadBtn, entity, platformMap, -// statusMap); - } - - } - - public class GameNormalViewHolder extends RecyclerView.ViewHolder { - public TextView home1_game_order; - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView downloadBtn; - public TextView gameDes; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed; - public TextView download_percentage; - - public View rootItem; - - public GameNormalViewHolder(View v) { - super(v); - rootItem = v; - home1_game_order = (TextView) v.findViewById(R.id.home1_game_order); - gameThumb = (ImageView) v.findViewById(R.id.home1_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home1_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home1_download_btn); - gameDes = (TextView) v.findViewById(R.id.home1_game_des); - labelList = (LinearLayout) v.findViewById(R.id.home1_label_list); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home1_game_ll_info); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home1_game_progressbar); - download_speed = (TextView) v - .findViewById(R.id.home1_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home1_download_percentage); - } - - public void init(GameEntity entity, int i, boolean order) { - if (order) { - home1_game_order.setVisibility(View.VISIBLE); - home1_game_order.setText(i + ""); - } else { - home1_game_order.setVisibility(View.GONE); - } - ImageUtils.getInstance(mContext).display(entity.getIcon(), - gameThumb); - gameNameAndSize.setText(entity.getName()); - if (entity.getApk() == null || entity.getApk().isEmpty()) { - gameDes.setText(entity.getBrief()); - } else { - gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief()); - } - GameViewUtils.setLabelList(mContext, labelList, entity.getTag()); - - final GameEntity gameInfoEntity = entity; - final int ii = i; - - rootItem.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - AppController.put("GameEntity", gameInfoEntity); - Intent intent = new Intent(mContext, GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-插件"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); - } - }); - } - - public void initViewHolder(int position) { - - int offset = 1; - 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) { - init(gameEntity, position - offset - 1, subjectList.get(i).getOrder()); - break; - } - } - offset = subjectList.get(i).getData().size() + offset + 1; - } - } - } - - public class ImageViewHolder extends RecyclerView.ViewHolder { - - private ImageView imageView; - - public ImageViewHolder(View itemView) { - super(itemView); - - imageView = (ImageView) itemView; - } - - public void initViewHolder(int position) { - int offset = 1; - 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(), imageView, -1); - imageView.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; - } - } - } - - public class HeadViewHolder extends RecyclerView.ViewHolder { - public ImageView thumb; - public TextView title; - public LinearLayout link; - - public HeadViewHolder(View view) { - super(view); - this.thumb = (ImageView) view.findViewById(R.id.head_thumb); - this.title = (TextView) view.findViewById(R.id.head_title); - this.link = (LinearLayout) view.findViewById(R.id.head_link); - } - - public void initViewHolder(int position) { - int offset = 1; - for (int i = 0, size = subjectList.size(); i < size; i++) { - if (position == offset) { - thumb.setVisibility(View.GONE); - title.setText(subjectList.get(i).getName()); - link.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - } - }); - 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 Game1ImagePagerAdapter(mContext, slideList, true)); - viewHolder.viewPager.setCurrentItem(currentItem); - viewHolder.viewPager.setInterval(3000); - viewHolder.viewPager.startAutoScroll(); - } - } else if (holder instanceof HeadViewHolder) { - ((HeadViewHolder) holder).initViewHolder(position); - } else if (holder instanceof ImageViewHolder) { - ((ImageViewHolder) holder).initViewHolder(position); - } else if (holder instanceof GameNormalViewHolder) { - ((GameNormalViewHolder) holder).initViewHolder(position); - } else if (holder instanceof GameTestViewHolder) { - ((GameTestViewHolder) holder).initViewHolder(position); - } - } - - @Override - public int getItemCount() { - int slideSize = 0; - if (!slideList.isEmpty()) { - slideSize = 1; - } - int subjectSize = 0; - if (!subjectList.isEmpty()) { - SubjectEntity subjectEntity; - for (int i = 0, size = subjectList.size(); i < size; i++) { - subjectEntity = subjectList.get(i); - subjectSize += 1 + subjectEntity.getData().size(); - } - } - return slideSize + subjectSize; - } - - @Override - public int getItemViewType(int position) { - - if (position == 0) { - return ITEM_TYPE.slide; - } - - int offset = 1; - GameEntity gameEntity; - for (int i = 0, size = subjectList.size(); i < size; i++) { - if (position == offset) { - return ITEM_TYPE.head; - } - if (position > offset && position <= subjectList.get(i).getData().size() + offset) { - gameEntity = subjectList.get(i).getData().get(position - offset - 1); - if (!TextUtils.isEmpty(gameEntity.getImage())) { - return ITEM_TYPE.image; - } - if (gameEntity.getTest() != null) { - return ITEM_TYPE.game_test_type; - } - return ITEM_TYPE.game_normal_type; - } - offset = subjectList.get(i).getData().size() + offset + 1; - } - - return -1; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game1ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/plugin/Game1ImagePagerAdapter.java deleted file mode 100644 index bab82511e7..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game1ImagePagerAdapter.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2014 trinea.cn All right reserved. This software is the confidential and proprietary information of - * trinea.cn ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only in - * accordance with the terms of the license agreement you entered into with trinea.cn. - */ -package com.gh.gamecenter.plugin; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import com.gh.common.util.ImageUtils; -import com.gh.gamecenter.GameDetailsActivity; -import com.gh.gamecenter.NewsActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.RecyclingPagerAdapter; -import com.gh.gamecenter.entity.SlideEntity; - -import java.util.List; - -/** - * ImagePagerAdapter - * - * @author Trinea 2014-2-23 - */ -public class Game1ImagePagerAdapter extends RecyclingPagerAdapter { - - private Context context; - // private List imageIdList; - private List slideList = null; - - private int size; - private boolean isInfiniteLoop; - - // private ImageIndicator indicator; - - public Game1ImagePagerAdapter(Context context, List slideList, - boolean isInfiniteLoop) { - this.context = context; - this.slideList = slideList; - this.size = getSize(slideList); - this.isInfiniteLoop = isInfiniteLoop; - } - - @Override - public int getCount() { - // Infinite loop - return isInfiniteLoop ? Integer.MAX_VALUE : getSize(slideList); - } - - public int getSize(List sourceList) { - return sourceList == null ? 0 : sourceList.size(); - } - - /** - * get really position - * - * @param position - * @return - */ - private int getPosition(int position) { - return isInfiniteLoop ? position % size : position; - } - - @Override - public View getView(int position, View view, ViewGroup container) { - ViewHolder holder; - if (view == null) { - holder = new ViewHolder(); - view = holder.imageView = new ImageView(context); - view.setTag(holder); - } else { - holder = (ViewHolder) view.getTag(); - } - - final SlideEntity slideEntity = slideList.get(getPosition(position)); - - ImageUtils.getInstance(context).display(slideEntity.getImage(), - holder.imageView, R.drawable.preload); - // indicator.setPosition(slideList.size(), getPosition(position)); - - holder.imageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - if ("game".equals(slideEntity.getType())) { - Intent intent = new Intent(context, GameDetailsActivity.class); - intent.putExtra("gameId", slideEntity.getLink()); - intent.putExtra("entrance", "插件-滚动图"); - context.startActivity(intent); - } else if ("news".equals(slideEntity.getType())) { - Intent intent = new Intent(context, NewsActivity.class); - intent.putExtra("newsId", slideEntity.getLink()); - intent.putExtra("entrance", "插件-滚动图"); - context.startActivity(intent); - } - - } - }); - - return view; - } - - private static class ViewHolder { - ImageView imageView; - } - - /** - * @return the isInfiniteLoop - */ - public boolean isInfiniteLoop() { - return isInfiniteLoop; - } - - /** - * @param isInfiniteLoop - * the isInfiniteLoop to set - */ - public Game1ImagePagerAdapter setInfiniteLoop(boolean isInfiniteLoop) { - this.isInfiniteLoop = isInfiniteLoop; - return this; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game2Fragment.java b/app/src/main/java/com/gh/gamecenter/plugin/Game2Fragment.java deleted file mode 100644 index dffd33147c..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game2Fragment.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.os.Bundle; -import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.gamecenter.R; - -/** - * 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; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - view = View.inflate(getActivity(), R.layout.plugin1_fragment, null); - 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())); - game2FragmentAdapter = new Game2FragmentAdapter(getActivity(),this); - mRecyclerView.setAdapter(game2FragmentAdapter); - mRecyclerView.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - } - - @Nullable - @Override - 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); - } - }; - - @Override - public void onRefresh() { - handler.postDelayed(runnable, 1000); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Game2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/plugin/Game2FragmentAdapter.java deleted file mode 100644 index 985c76bf51..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Game2FragmentAdapter.java +++ /dev/null @@ -1,436 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.content.Context; -import android.content.Intent; -import android.support.v4.app.FragmentActivity; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.TextView; - -import com.android.volley.Response; -import com.android.volley.VolleyError; -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.GameViewUtils; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.TimestampUtils; -import com.gh.gamecenter.GameDetailsActivity; -import com.gh.gamecenter.NewsActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.entity.SubjectEntity; -import com.gh.gamecenter.manager.DataCollectionManager; -import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import org.json.JSONArray; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 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 entity2List; - private Context mContext; - private int position_one = -1; - private int position_two = -1; - private int position_three = -1; - private int imgPosition = -1; - - public Game2FragmentAdapter(FragmentActivity activity, Game2Fragment game2Fragment) { - this.mContext = activity; - LoadData2(); - } - - private void LoadData2() { - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST + "v1d50/game/tuijian", - Constants.GAME_CD), new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - Type listType = new TypeToken>() { - }.getType(); - Gson gson = new Gson(); - entity2List = gson.fromJson(response.toString(), listType); - getDataPosition(); - notifyDataSetChanged(); - - } - - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - } - - }); - AppController.addToRequestQueue(request, Plugin1Fragment.class); - } - - //确定内容位置 - private void getDataPosition() { - if (entity2List.size() > 0) { - if (entity2List.size() == 1) { - position_one = entity2List.get(0).getData().size() + 1; - } - if (entity2List.size() == 2) { - position_one = entity2List.get(0).getData().size() + 1; - position_two = entity2List.get(1).getData().size() + position_one + 1; - } - if (entity2List.size() == 3) { - position_one = entity2List.get(0).getData().size() + 1; - position_two = entity2List.get(1).getData().size() + position_one + 1; - position_three = entity2List.get(2).getData().size() + position_two + 1; - } - } - - } - - @Override - public int getItemViewType(int position) { - if (position_one != -1) { - if (position == 0) { - return ITEM_HEAD; - } - if (position == 1 && entity2List.get(0).getData().get(0).getImage() != null) { - imgPosition = 0; - return ITEM_PIC; - } - if (position > 0 && position < position_one) { - if ("新测卡牌".equals(entity2List.get(0).getName())) { - return ITEM_XINCE; - } - return ITEM; - } - } - if (position_two != -1) { - if (position == position_two - entity2List.get(1).getData().size() - 1) { - return ITEM_HEAD; - } - if (position == position_two - entity2List.get(1).getData().size() && entity2List.get(1).getData().get(0).getImage() != null) { - imgPosition = 1; - return ITEM_PIC; - } - if (position > position_two - entity2List.get(1).getData().size() - 1 && position < position_two) { - if ("新测卡牌".equals(entity2List.get(1).getName())) { - return ITEM_XINCE; - } - return ITEM; - } - } - if (position_three != -1) { - if (position == position_three - entity2List.get(2).getData().size() - 1) { - return ITEM_HEAD; - } - if (position == position_three - entity2List.get(2).getData().size() && entity2List.get(2).getData().get(0).getImage() != null) { - imgPosition = 2; - return ITEM_PIC; - } - if (position > position_three - entity2List.get(2).getData().size() - 1 && position < position_three) { - if ("新测卡牌".equals(entity2List.get(2).getName())) { - return ITEM_XINCE; - } - return ITEM; - } - } - - Log.e("Game2FragmentAdapter", "存在未知类型");//位置判定失败,默认返回大图布局 - return ITEM_PIC; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view; - switch (viewType) { - case ITEM_HEAD: - view = LayoutInflater.from(mContext).inflate(R.layout.home_list_item_head, parent, false); - return new HeadViewHolder(view); - case ITEM: - view = LayoutInflater.from(mContext).inflate(R.layout.game_plugin_item_gamenormal, parent, false); - return new GameNormalViewHolder(view); - case ITEM_PIC: - view = LayoutInflater.from(mContext).inflate(R.layout.game_tuijian_img, parent, false); - return new ReMenPicViewHolder(view); - case ITEM_XINCE: - view = LayoutInflater.from(mContext).inflate(R.layout.game_plugin_item_xincegame, parent, false); - return new GameXinceViewHolder(view); - default: - return null; - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - GameEntity gameEntity = null; - int index = 0; - int arrId = -1;//记录专题位置 - if (position_one != -1 && position > 0 && position < position_one) { - index = position - 1; - arrId = 0; - gameEntity = entity2List.get(0).getData().get(index); - } else if (position_two != -1 && position > position_two - entity2List.get(1).getData().size() - 1 && position < position_two) { - index = position - position_one - 1; - arrId = 1; - gameEntity = entity2List.get(1).getData().get(index); - } else if (position_three != -1 && position > position_three - entity2List.get(2).getData().size() - 1 && position < position_three) { - index = position - position_two - 1; - arrId = 2; - gameEntity = entity2List.get(2).getData().get(index); - } - - - if (holder instanceof HeadViewHolder) { - if (position == 0) { - ((HeadViewHolder) holder).title.setText(entity2List.get(0).getName()); - } else if (position == position_two - entity2List.get(1).getData().size() - 1) { - ((HeadViewHolder) holder).title.setText(entity2List.get(1).getName()); - } else if (position == position_three - entity2List.get(2).getData().size() - 1) { - ((HeadViewHolder) holder).title.setText(entity2List.get(2).getName()); - } - } else if (holder instanceof GameNormalViewHolder) { - if (gameEntity != null) { - ((GameNormalViewHolder) holder).ranking.setVisibility(View.GONE); - ImageUtils.getInstance(mContext).display(gameEntity.getIcon(), ((GameNormalViewHolder) holder).gameThumb); - GameViewUtils.setLabelList(mContext, ((GameNormalViewHolder) holder).labelList, gameEntity.getTag()); - ((GameNormalViewHolder) holder).gameNameAndSize.setText(gameEntity.getName()); - ((GameNormalViewHolder) holder).gameDes.setText(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief()); - if (arrId != -1 && entity2List.get(arrId).getOrder()) { - ((GameNormalViewHolder) holder).ranking.setVisibility(View.VISIBLE); - if (gameEntity.getName() == null) { - index = index + 1; - } - ((GameNormalViewHolder) holder).ranking.setText(index + ""); - } - } - final GameEntity finalGameEntity = gameEntity; - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "游戏-推荐-列表"); - DataUtils.onEvent(mContext, "游戏详情", finalGameEntity.getName(), - kv); - - Map map = new HashMap(); - map.put("location", "推荐-列表"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", finalGameEntity.getName()); - map.put("page", "游戏"); - DataCollectionManager.onEvent(mContext, "click-item", map); - - AppController.put("GameEntity", finalGameEntity); - Intent intent = new Intent(mContext, - GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-推荐列表"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); - } - }); - } else if (holder instanceof GameXinceViewHolder) { - ((GameXinceViewHolder) holder).ranking.setVisibility(View.GONE); - ((GameXinceViewHolder) holder).gameDes.setText(gameEntity.getApk().get(0).getSize() + " | " + gameEntity.getBrief()); - ((GameXinceViewHolder) holder).gameNameAndSize.setText(gameEntity.getName()); - ((GameXinceViewHolder) holder).gameTestType.setText(gameEntity.getTest().getType()); - ((GameXinceViewHolder) holder).gameTestTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart())); - ImageUtils.getInstance(mContext).display(gameEntity.getIcon(), ((GameXinceViewHolder) holder).gameThumb); - if (arrId != -1 && entity2List.get(arrId).getOrder()) { - ((GameXinceViewHolder) holder).ranking.setVisibility(View.VISIBLE); - if (gameEntity.getName() == null) { - index = index + 1; - } - ((GameXinceViewHolder) holder).ranking.setText(index + ""); - } - final GameEntity finalGameEntity1 = gameEntity; - final int i = index; - ((GameXinceViewHolder) holder).rootItem.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "主页-新测卡牌"); - DataUtils.onEvent(mContext, "游戏详情", finalGameEntity1.getName(), kv); - - Map kv2 = new HashMap(); - kv2.put(finalGameEntity1.getName(), "点击量"); - DataUtils.onEvent(mContext, "主页数据", "新测卡牌", kv2); - - Map kv3 = new HashMap(); - kv3.put("新测卡牌", i + ""); - DataUtils.onEvent(mContext, "主页数据", "位置数据", kv3); - - Map map = new HashMap(); - map.put("location", "新测卡牌"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", finalGameEntity1.getName()); - map.put("page", "主页"); - DataCollectionManager.onEvent(mContext, "click-item", - map); - - AppController.put("GameEntity", finalGameEntity1); - Intent intent = new Intent(mContext, - GameDetailsActivity.class); - intent.putExtra("entrance", "主页-新测卡牌"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); - } - }); - } else if (holder instanceof ReMenPicViewHolder) { - final String id = gameEntity.getId(); - final String type = gameEntity.getType(); - ((ReMenPicViewHolder) holder).imageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if ("game".equals(type)) { - Intent intent = new Intent(mContext, GameDetailsActivity.class); - intent.putExtra("gameId", id); - intent.putExtra("entrance", "插件-大图"); - mContext.startActivity(intent); - } else if ("news".equals(type)) { - Intent intent = new Intent(mContext, NewsActivity.class); - intent.putExtra("newsId", id); - intent.putExtra("entrance", "插件-大图"); - mContext.startActivity(intent); - } - } - }); - } - - } - - @Override - public int getItemCount() { - if (position_three != -1) { - return position_three; - } else if (position_two != -1) { - return position_two; - } else if (position_one != -1) { - return position_one; - } - return 0; - } - - public class HeadViewHolder extends RecyclerView.ViewHolder { - public ImageView thumb; - public TextView title; - public LinearLayout link; - - public HeadViewHolder(View view) { - super(view); - this.thumb = (ImageView) view.findViewById(R.id.head_thumb); - this.title = (TextView) view.findViewById(R.id.head_title); - this.link = (LinearLayout) view.findViewById(R.id.head_link); - } - } - - public class GameNormalViewHolder extends RecyclerView.ViewHolder { - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView downloadBtn; - public TextView gameDes; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed; - public TextView download_percentage, ranking; - - public View rootItem; - - public GameNormalViewHolder(View v) { - super(v); - rootItem = v; - gameThumb = (ImageView) v.findViewById(R.id.home1_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home1_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home1_download_btn); - gameDes = (TextView) v.findViewById(R.id.home1_game_des); - labelList = (LinearLayout) v.findViewById(R.id.home1_label_list); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home1_game_ll_info); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home1_game_progressbar); - download_speed = (TextView) v - .findViewById(R.id.home1_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home1_download_percentage); - ranking = (TextView) v.findViewById(R.id.home1_game_ranking); - - } - - } - - public class GameXinceViewHolder extends RecyclerView.ViewHolder { - public ImageView gameThumb; - public TextView gameNameAndSize; - public TextView gameSize; - public TextView downloadBtn; - public TextView gameDes; - public TextView gameTestType; - public TextView gameTestTime; - public LinearLayout labelList; - public ProgressBar game_progressbar; - public LinearLayout game_ll_info; - public TextView download_speed; - public TextView download_percentage, ranking; - private View rootItem; - - public GameXinceViewHolder(View v) { - super(v); - this.rootItem = v; - gameThumb = (ImageView) v.findViewById(R.id.home2_game_thumb); - gameNameAndSize = (TextView) v - .findViewById(R.id.home2_game_nameAndsize); - downloadBtn = (TextView) v.findViewById(R.id.home2_download_btn); - gameDes = (TextView) v.findViewById(R.id.home2_game_des); - gameTestType = (TextView) v.findViewById(R.id.home2_test_type); - gameTestTime = (TextView) v.findViewById(R.id.home2_test_time); - labelList = (LinearLayout) v.findViewById(R.id.home2_label_list); - ranking = (TextView) v.findViewById(R.id.home2_game_ranking); - game_ll_info = (LinearLayout) v - .findViewById(R.id.home2_game_ll_info); - game_progressbar = (ProgressBar) v - .findViewById(R.id.home2_game_progressbar); - download_speed = (TextView) v - .findViewById(R.id.home2_download_speed); - download_percentage = (TextView) v - .findViewById(R.id.home2_download_percentage); - } - - } - - public class ReMenPicViewHolder extends RecyclerView.ViewHolder { - View view; - ImageView imageView; - - public ReMenPicViewHolder(View itemView) { - super(itemView); - view = itemView; - imageView = (ImageView) view.findViewById(R.id.tuijian_img); - ImageUtils.getInstance(mContext).display(entity2List.get(imgPosition).getData().get(0).getImage(), imageView); - - } - } - - public interface OnGamePluginCallBackListener { - void onRefreshEnabled(boolean isEnabled); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Plugin1Fragment.java b/app/src/main/java/com/gh/gamecenter/plugin/Plugin1Fragment.java deleted file mode 100644 index 472c2c8610..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Plugin1Fragment.java +++ /dev/null @@ -1,356 +0,0 @@ -package com.gh.gamecenter.plugin; - -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.v4.widget.SwipeRefreshLayout.OnRefreshListener; -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.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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.LinkedBlockingQueue; - -import de.greenrobot.event.EventBus; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-10 modified 2015-8-13 插件界面下的精品fragment - */ -public class Plugin1Fragment extends Fragment implements OnRefreshListener { - - private View view; - private RecyclerView recyclerview; - private LinearLayoutManager layoutManager; - private SwipeRefreshLayout game_swipe_refresh; - private Plugin1FragmentAdapter adapter; - private LinearLayout reuse_no_connection; - private ProgressBarCircularIndeterminate game_pb_loading; - - // 黄壮华 添加 记录信息的map 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - private boolean isEverpause = false; - private boolean isDestroy = false; - - private int currentItem = 0; - - 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 (queue.size() > 1) { - queue.offer(queue.poll()); - Message msg2 = Message.obtain(); - msg2.obj = name; - msg2.what = Constants.DOWNLOAD_ROLL; - sendMessageDelayed(msg2, 3000); - } - } - } - } - } - }; - - // 黄壮华 添加观察者 修改2015/8/15 - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged( - HashMap downloadingEntries) { - if (!game_swipe_refresh.isRefreshing()) { - for (java.util.Map.Entry entry : downloadingEntries - .entrySet()) { - DownloadEntry downloadEntry = entry.getValue(); - - Integer location = locationMap.get(downloadEntry.getName()); - if (location != null) { - int index = location.intValue(); - - GameEntity detailedEntity = adapter.getList() - .get(index); - - if (detailedEntity != null) { - DownloadItemUtils.processDate(detailedEntity, - downloadEntry, platformMap, handler, - adapter, index + 1, statusMap); - } - - } - } - } - } - }; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - - view = View.inflate(getActivity(), R.layout.plugin1_fragment, null); - - statusMap = new ArrayMap(); - locationMap = new ArrayMap(); - gameMap = new ArrayMap>(); - platformMap = new ArrayMap>(); - nameMap = new ArrayMap(); - - dismissEntity = new DismissEntity(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 - 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); - } - }); - - // 黄壮华 传递引用 修改2015/8/15 - adapter = new Plugin1FragmentAdapter(Plugin1Fragment.this, locationMap, - gameMap, platformMap, nameMap, game_swipe_refresh, - reuse_no_connection, recyclerview, statusMap, - dismissEntity, game_pb_loading, false); - recyclerview.setAdapter(adapter); - recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == 1 + adapter - .getList().size()) { - if (!adapter.isRemove() && !adapter.isLoading()) { - adapter.addList(adapter.getList().size()); - } - } - } - - }); - - EventBus.getDefault().register(this); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - 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.intValue(); - GameEntity detailedEntity = adapter.getList().get(index); - if (TextUtils.isEmpty(busThree.getPlatform())) { - detailedEntity.getEntryMap().remove("官方版"); - } else { - detailedEntity.getEntryMap().remove(busThree.getPlatform()); - } - adapter.notifyItemChanged(index + 1); - } - } - - 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); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getList().size()); - } - } - } - - public void onEventMainThread(EBPWDismiss dismiss) { - if (dismissEntity != null) { - dismissEntity.setShow(false); - } - } - - public void onEventMainThread(EBUISwitch busNine) { - if ("PluginFragment".equals(busNine.getFrom())) { - currentItem = busNine.getPosition(); - if (busNine.getPosition() == 0) { - adapter.startAutoScroll(); - if (game_pb_loading.getVisibility() == View.VISIBLE) { - adapter.load(); - } - } else { - adapter.stopAutoScroll(); - } - } else if ("MainActivity".equals(busNine.getFrom())) { - if (busNine.getPosition() != 1) { - adapter.stopAutoScroll(); - statusMap.clear(); - } - } - } - - public void onEventMainThread(EBPackage busFour) { - String name = nameMap.get(busFour.getPackageName()); - if (name != null) { - int location = locationMap.get(name); - if ("安装".equals(busFour.getType())) { - GameEntity detailedEntity = adapter.getList().get(location); - for (ApkEntity apkEntity : detailedEntity.getApk()) { - if (apkEntity.getPackageName().equals( - busFour.getPackageName())) { - detailedEntity.getEntryMap().remove( - apkEntity.getPlatform()); - adapter.notifyItemChanged(location + 1); - break; - } - } - } else if ("卸载".equals(busFour.getType())) { - adapter.notifyItemChanged(location + 1); - } - } - } - - @Override - public void onResume() { - super.onResume(); - if (isEverpause) { - // 黄壮华 添加 初始化游戏状态 修改2015/8/21 - 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); - } - isEverpause = false; - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - if (currentItem == 0) { - adapter.startAutoScroll(); - } - } - - public boolean isEverpause() { - return isEverpause; - } - - @Override - public void onPause() { - super.onPause(); - isEverpause = true; - statusMap.clear(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - if (currentItem == 0) { - adapter.stopAutoScroll(); - } - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - adapter = new Plugin1FragmentAdapter(Plugin1Fragment.this, - locationMap, gameMap, platformMap, nameMap, - game_swipe_refresh, reuse_no_connection, recyclerview, - 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(Plugin1Fragment.class); - EventBus.getDefault().unregister(this); - view = null; - recyclerview = null; - game_swipe_refresh = null; - adapter = null; - reuse_no_connection = null; - locationMap = null; - gameMap = null; - platformMap = null; - nameMap = null; - statusMap = null; - dismissEntity = null; - handler = null; - dataWatcher = null; - game_pb_loading = null; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Plugin1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/plugin/Plugin1FragmentAdapter.java deleted file mode 100644 index 6b2a277127..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Plugin1FragmentAdapter.java +++ /dev/null @@ -1,610 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.content.Context; -import android.content.Intent; -import android.support.v4.util.ArrayMap; -import android.support.v4.view.ViewPager; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.util.DisplayMetrics; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; -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.DataUtils; -import com.gh.common.util.DisplayUtils; -import com.gh.common.util.DownloadItemUtils; -import com.gh.common.util.GameViewUtils; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.TimestampUtils; -import com.gh.common.view.AutoScrollViewPager; -import com.gh.download.DownloadEntry; -import com.gh.gamecenter.GameDetailsActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.ImagePagerAdapter; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; -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.DataCollectionManager; -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.Map; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-13 - * @update 2015-8-13 - * @des 插件板块下的精品栏目 - */ -public class Plugin1FragmentAdapter extends - RecyclerView.Adapter { - - private Context context; - - private Plugin1Fragment fragment; - - private RecyclerView recyclerview; - private SwipeRefreshLayout game_swipe_refresh; - private LinearLayout reuse_no_connection; - - private ProgressBarCircularIndeterminate game_pb_loading; - - private List slideList; - private List list; - - private boolean isRemove; - private boolean isLoading; -// private boolean isLoaded; - private boolean isNetworkError; - private boolean isSlideError; - private boolean isListError; - - // 黄壮华 获取引用 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - private ArrayMap statusMap; - - private DismissEntity dismissEntity; - - // 黄壮华 获取引用 修改2015/8/15 - public Plugin1FragmentAdapter(Plugin1Fragment fment, - ArrayMap lMap, - ArrayMap> gMap, - ArrayMap> pMap, - ArrayMap nMap, - SwipeRefreshLayout swipeRefreshLayout, - LinearLayout linearLayout, - RecyclerView rView, - ArrayMap sMap, - DismissEntity dEntity, - ProgressBarCircularIndeterminate pbLoading, - boolean isLoad) { - - fragment = fment; - context = fment.getActivity(); - locationMap = lMap; - gameMap = gMap; - platformMap = pMap; - nameMap = nMap; - game_swipe_refresh = swipeRefreshLayout; - reuse_no_connection = linearLayout; - recyclerview = rView; - game_pb_loading = pbLoading; - - statusMap = sMap; - - dismissEntity = dEntity; - - list = new ArrayList(); - slideList = new ArrayList(); - - isRemove = false; - isLoading = false; -// isLoaded = false; - isNetworkError = false; - isSlideError = false; - isListError = false; - - if (isLoad) { - load(); - } - } - - public void load() { - new Thread(runnable){}.start(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - initSlide(true); - } - }; - - private void initSlide(final boolean isFirst) { - if (isLoading) { - return; - } - JsonArrayExtendedRequest slideRequest = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST + "v1d45/plugin/slide", - Constants.GAME_CD), new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - Type listType = new TypeToken>() {}.getType(); - Gson gson = new Gson(); - slideList = gson.fromJson(response.toString(), listType); - if (slideList != null && !slideList.isEmpty()) { - GameManager manager = new GameManager(context); - for (GameEntity entity : slideList) { - for (ApkEntity apkEntity : entity.getApk()) { - manager.addOrUpdate(new GameInfo( - apkEntity.getPackageName(), entity - .getId(), entity.getName())); - } - } - notifyItemChanged(0); - } - if (isFirst) { - addList(0); - } - } - - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - // 无网络连接 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - isSlideError = true; - if (!isFirst) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); - notifyItemChanged(0); - } else { - showView(); - } - } - - if (isFirst) { - addList(0); - } - } - }); - AppController.addToRequestQueue(slideRequest, Plugin1Fragment.class); - } - - public void addList(final int offset) { - if (isLoading) { - return; - } - isLoading = true; - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/plugin/jingpin?limit=20&offset=" + offset, - Constants.GAME_CD), new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - processingData(response, offset); - isLoading = false; -// isLoaded = true; -// notifyItemChanged(getItemCount() - 1); - } - - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - isLoading = false; - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - if (offset == 0) { - if (game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } - isListError = true; - showView(); - } else { - Toast.makeText(context, "网络错误", - Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } - } - } - - }); - AppController.addToRequestQueue(request, Plugin1Fragment.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 && !isListError) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); - notifyItemChanged(0); - } else if (!isSlideError && isListError) { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); - notifyItemChanged(getItemCount() - 1); - } - } - - private void processingData(JSONArray response, int offset) { - 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()) { - if (!list.isEmpty()) { - for (int i = 0; i < gameList.size(); i++) { - GameEntity entity = gameList.get(i); - // 去重 - for (int j = 0; j < list.size(); j++) { - if (list.get(j).getId().equals(entity.getId())) { - gameList.remove(i); - i--; - break; - } - } - } - } - 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.addAll(gameList); - if (!fragment.isHidden() && !fragment.isEverpause()) { - notifyItemRangeInserted(list.size() - gameList.size() + 1, gameList.size()); - } - } - - if (fragment.isHidden() || fragment.isEverpause()) { - notifyDataSetChanged(); - } - - if (offset == 0 && 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); - } - - if (gameList.isEmpty() || (offset == 0 && gameList.size() < 20)) { - isRemove = true; - notifyItemChanged(getItemCount() - 1); - } - - // 黄壮华 获取游戏位置信息 修改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()); - } - } - - - } - - @Override - public int getItemCount() { - if (list.isEmpty()) { - if (isListError) { - return 1 + list.size() + 1; - } else { - return 1 + list.size(); - } - } else { - return 1 + list.size() + 1; - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, - int position) { - if (viewHolder instanceof AutoScrollViewpagerViewHolder) { - AutoScrollViewpagerViewHolder holder = (AutoScrollViewpagerViewHolder) viewHolder; - if (isSlideError) { - holder.viewpager_tv_failure.setVisibility(View.VISIBLE); - holder.viewPager.setVisibility(View.GONE); - holder.viewpager_ll_hint.setVisibility(View.GONE); - } else { - holder.viewpager_tv_failure.setVisibility(View.GONE); - holder.viewPager.setVisibility(View.VISIBLE); - holder.viewpager_ll_hint.setVisibility(View.VISIBLE); - } - if (slideList.size() > 0) { - int currentItem = 0; - if (holder.viewPager.getAdapter() != null) { - currentItem = holder.viewPager.getCurrentItem(); - } - holder.viewpager_ll_hint.removeAllViews(); - for (int i = 0, size = slideList.size(); i < size; i++) { - ImageView imageView = new ImageView(context); - LayoutParams lparams = new 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); - holder.viewpager_ll_hint.addView(imageView); - } - holder.viewPager.setAdapter(new ImagePagerAdapter(context, - slideList, true)); - holder.viewPager.setCurrentItem(currentItem); - holder.viewPager.setInterval(3000); - holder.viewPager.startAutoScroll(); - } - } else if (viewHolder instanceof GameViewHolder) { - - GameViewHolder holder = (GameViewHolder) viewHolder; - - final GameEntity detailedEntity = list.get(position - 1); - - ImageUtils.getInstance(context).display(detailedEntity.getIcon(), - holder.gameThumb); - if (detailedEntity.getApk() == null - || detailedEntity.getApk().isEmpty()) { - holder.gameNameAndSize.setText(detailedEntity.getName()); - } else { - holder.gameNameAndSize.setText(detailedEntity.getName() - + " | " + detailedEntity.getApk().get(0).getSize()); - } - holder.gameDes.setText(detailedEntity.getBrief()); - - // 添加tag标签 - GameViewUtils.setLabelList(context, holder.labelList, - detailedEntity.getTag()); - - // 添加点击事件 - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "插件-精品-列表"); - DataUtils.onEvent(context, "游戏详情", detailedEntity.getName(), - kv); - - Map map = new HashMap(); - map.put("location", "精品-列表"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", detailedEntity.getName()); - map.put("page", "插件"); - DataCollectionManager.onEvent(context, "click-item", map); - - AppController.put("GameEntity", detailedEntity); - 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.downloadSpeed, holder.downloadPercentage, - detailedEntity, position, this, - statusMap, platformMap, "插件-精品", dismissEntity, "精品:" - + detailedEntity.getName()); - - DownloadItemUtils.updateItem(context, holder.labelList, - holder.gameProgressbar, holder.gameInfo, - holder.downloadSpeed, holder.downloadPercentage, - holder.downloadBtn, detailedEntity, platformMap, statusMap); - } else if (viewHolder instanceof FooterViewHolder) { - FooterViewHolder holder = (FooterViewHolder) viewHolder; - if (isNetworkError || isListError) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(list.size()); - } - }); - } else if (isRemove) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载完毕"); - holder.rootView.setClickable(false); - } -// else if (isLoaded) { -// holder.footerview_progressbar.setVisibility(View.GONE); -// holder.footerview_tv_loading.setText("点击加载更多"); -// holder.rootView.setClickable(true); -// holder.rootView.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// isLoaded = false; -// notifyItemChanged(getItemCount() - 1); -// addList(list.size()); -// } -// }); -// } - else { - holder.footerview_progressbar.setVisibility(View.VISIBLE); - holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); - } - } - } - - @Override - public int getItemViewType(int position) { - return position; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - if (i == 0) { - View view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.plugin1_autoscrollviewpager_viewholder, viewGroup, - false); - DisplayMetrics outMetrics = new DisplayMetrics(); - fragment.getActivity().getWindowManager().getDefaultDisplay() - .getMetrics(outMetrics); - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( - LayoutParams.MATCH_PARENT, - (int) (outMetrics.widthPixels / 16f * 7f)); - view.setLayoutParams(params); - return new AutoScrollViewpagerViewHolder(view); - } else if (i > 0 && i <= list.size()) { - return new GameViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.home_list_item_gamenormal_type, viewGroup, false)); - } else { - return new FooterViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.refresh_footerview, viewGroup, false)); - } - } - - 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 AutoScrollViewPager autoScrollViewPager; - - public void startAutoScroll() { - if (autoScrollViewPager != null) { - autoScrollViewPager.startAutoScroll(); - } - } - - public void stopAutoScroll() { - if (autoScrollViewPager != null) { - autoScrollViewPager.stopAutoScroll(); - } - } - - public boolean isRemove() { - return isRemove; - } - - public boolean isLoading() { - return isLoading; - } - - public List getList() { - return list; - } - - public void setList(List list) { - this.list = list; - notifyItemRangeChanged(1, list.size()); - } - - public boolean isNetworkError() { - return isNetworkError; - } - - public void setNetworkError(boolean isNetworkError) { - this.isNetworkError = isNetworkError; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Plugin2Fragment.java b/app/src/main/java/com/gh/gamecenter/plugin/Plugin2Fragment.java deleted file mode 100644 index a41bcd671a..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Plugin2Fragment.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.gh.gamecenter.plugin; - -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.v4.widget.SwipeRefreshLayout.OnRefreshListener; -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.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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.LinkedBlockingQueue; - -import de.greenrobot.event.EventBus; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-11 - * @des 主页插件fragment - */ -public class Plugin2Fragment extends Fragment implements OnRefreshListener { - - private View view; - private RecyclerView recyclerview; - private SwipeRefreshLayout game_swipe_refresh; - private Plugin2FragmentAdapter adapter; - private LinearLayoutManager layoutManager; - private LinearLayout reuse_no_connection; - private ProgressBarCircularIndeterminate game_pb_loading; - - // 黄壮华 添加 记录信息的map 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - 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 (queue.size() > 1) { - queue.offer(queue.poll()); - Message msg2 = Message.obtain(); - msg2.obj = name; - msg2.what = Constants.DOWNLOAD_ROLL; - sendMessageDelayed(msg2, 3000); - } - } - } - } - } - }; - - // 黄壮华 添加观察者 修改2015/8/15 - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged( - HashMap downloadingEntries) { - if (!game_swipe_refresh.isRefreshing()) { - for (java.util.Map.Entry entry : downloadingEntries - .entrySet()) { - DownloadEntry downloadEntry = entry.getValue(); - - Integer location = locationMap.get(downloadEntry.getName()); - if (location != null) { - int index = location.intValue(); - - GameEntity detailedEntity = adapter.getList() - .get(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); - - statusMap = new ArrayMap(); - locationMap = new ArrayMap(); - gameMap = new ArrayMap>(); - platformMap = new ArrayMap>(); - nameMap = new ArrayMap(); - - dismissEntity = new DismissEntity(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 - 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); - } - }); - - // 黄壮华 传递引用 修改2015/8/15 - adapter = new Plugin2FragmentAdapter(Plugin2Fragment.this, - locationMap, gameMap, platformMap, nameMap, recyclerview, - game_swipe_refresh, reuse_no_connection, - statusMap, dismissEntity, game_pb_loading, false); - recyclerview.setAdapter(adapter); - recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { - - @Override - public void onScrollStateChanged(RecyclerView recyclerView, - int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == adapter - .getList().size()) { - if (!adapter.isRemove() && !adapter.isLoading()) { - adapter.addList(adapter.getList().size()); - } - } - } - - }); - recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - - EventBus.getDefault().register(this); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - 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.intValue(); - GameEntity detailedEntity = adapter.getList().get(index); - if (TextUtils.isEmpty(busThree.getPlatform())) { - detailedEntity.getEntryMap().remove("官方版"); - } else { - detailedEntity.getEntryMap().remove(busThree.getPlatform()); - } - 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) { - int location = locationMap.get(name); - if ("安装".equals(busFour.getType())) { - GameEntity detailedEntity = adapter.getList().get(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.VISIBLE); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getList().size()); - } - } - } - - public void onEventMainThread(EBUISwitch busNine) { - if ("MainActivity".equals(busNine.getFrom())) { - if (busNine.getPosition() != 1) { - statusMap.clear(); - } - } else if ("PluginFragment".equals(busNine.getFrom()) && busNine.getPosition() == 1 - && game_pb_loading.getVisibility() == View.VISIBLE) { - adapter.load(); - } - } - - @Override - public void onResume() { - super.onResume(); - if (isEverpause) { - // 黄壮华 添加 初始化游戏状态 修改2015/8/21 - 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); - } - isEverpause = false; - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - } - - public boolean isEverpause() { - return isEverpause; - } - - @Override - public void onPause() { - super.onPause(); - isEverpause = true; - statusMap.clear(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - adapter = new Plugin2FragmentAdapter(Plugin2Fragment.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(Plugin2Fragment.class); - EventBus.getDefault().unregister(this); - view = null; - recyclerview = null; - game_swipe_refresh = null; - adapter = null; - layoutManager = null; - reuse_no_connection = null; - locationMap = null; - gameMap = null; - platformMap = null; - nameMap = null; - statusMap = null; - dismissEntity = null; - handler = null; - dataWatcher = null; - game_pb_loading = null; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Plugin2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/plugin/Plugin2FragmentAdapter.java deleted file mode 100644 index 810bd02737..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Plugin2FragmentAdapter.java +++ /dev/null @@ -1,387 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.content.Context; -import android.content.Intent; -import android.support.v4.util.ArrayMap; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.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.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; -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.DataCollectionManager; -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.Map; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-11 - * @des 首页插件fragment适配器 - */ -public class Plugin2FragmentAdapter extends - RecyclerView.Adapter { - - private Context context; - - private Plugin2Fragment fragment; - - private RecyclerView recyclerView; - private SwipeRefreshLayout game_swipe_refresh; - private LinearLayout reuse_no_connection; - - private ProgressBarCircularIndeterminate game_pb_loading; - - private boolean isRemove; - private boolean isLoading; - private boolean isNetworkError; - - private List list; - - // 黄壮华 获取引用 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - private ArrayMap statusMap; - - private DismissEntity dismissEntity; - - // 黄壮华 获取引用 修改2015/8/15 - public Plugin2FragmentAdapter(Plugin2Fragment fment, - ArrayMap lMap, - ArrayMap> gMap, - ArrayMap> pMap, - ArrayMap nMap, - RecyclerView rView, - SwipeRefreshLayout refreshLayout, - LinearLayout linearLayout, - ArrayMap sMap, - DismissEntity dEntity, - ProgressBarCircularIndeterminate pbLoading, - boolean isLoad) { - - // 黄壮华 获取引用 修改2015/8/15 - 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; - - fragment = fment; - context = fment.getActivity(); - - isRemove = false; - isLoading = false; - isNetworkError = false; - - list = new ArrayList(); - - if (isLoad) { - load(); - } - } - - public void load() { - new Thread(runnable){}.start(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - addList(0); - } - }; - - public void addList(final int offset) { - if (isLoading) { - return; - } - isLoading = true; - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/plugin/zuixin?limit=20&offset=" + offset, - Constants.GAME_CD), new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - processingData(response, offset); - isLoading = false; - } - - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - isLoading = false; - // 无网络连接和访问超时 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - if (offset == 0) { - if (game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } - recyclerView.setVisibility(View.GONE); - game_pb_loading.setVisibility(View.GONE); - reuse_no_connection.setVisibility(View.VISIBLE); - } else { - Toast.makeText(context, "网络错误", - Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } - } - } - - }); - AppController.addToRequestQueue(request, Plugin2Fragment.class); - } - - private void processingData(JSONArray response, int offset) { - 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()) { - if (!list.isEmpty()) { - for (int i = 0; i < gameList.size(); i++) { - GameEntity entity = gameList.get(i); - // 去重 - for (int j = 0; j < list.size(); j++) { - if (list.get(j).getId().equals(entity.getId())) { - gameList.remove(i); - i--; - break; - } - } - } - } - 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.addAll(gameList); - if (!fragment.isHidden() && !fragment.isEverpause()) { - notifyItemRangeInserted(list.size() - gameList.size(), gameList.size()); - } - } - - if (fragment.isHidden() || fragment.isEverpause()) { - notifyDataSetChanged(); - } - - if (offset == 0 && 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); - } - - if (gameList.isEmpty() || (offset == 0 && gameList.size() < 20)) { - isRemove = true; - notifyItemRemoved(getItemCount()); - } - - // 黄壮华 获取游戏位置信息 修改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()); - } - } - } - - @Override - public int getItemCount() { - if (list.isEmpty()) { - return 0; - } - if (isRemove) { - return list.size(); - } else { - return list.size() + 1; - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, - int position) { - if (viewHolder instanceof GameViewHolder) { - GameViewHolder holder = (GameViewHolder) viewHolder; - final GameEntity detailedEntity = list.get(position); - ImageUtils.getInstance(context).display(detailedEntity.getIcon(), - holder.gameThumb); - if (detailedEntity.getApk() == null - || detailedEntity.getApk().isEmpty()) { - holder.gameNameAndSize.setText(detailedEntity.getName()); - } else { - holder.gameNameAndSize.setText(detailedEntity.getName() - + " | " + detailedEntity.getApk().get(0).getSize()); - } - holder.gameDes.setText(detailedEntity.getBrief()); - - GameViewUtils.setLabelList(context, holder.labelList, - detailedEntity.getTag()); - - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "插件-最新"); - DataUtils.onEvent(context, "游戏详情", detailedEntity.getName(), - kv); - - Map map = new HashMap(); - map.put("location", "最新"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", detailedEntity.getName()); - map.put("page", "插件"); - DataCollectionManager.onEvent(context, "click-item", map); - - AppController.put("GameEntity", detailedEntity); - 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.downloadSpeed, holder.downloadPercentage, - detailedEntity, position, this, - statusMap, platformMap, "插件-最新", dismissEntity, "最新:" - + detailedEntity.getName()); - - DownloadItemUtils.updateItem(context, holder.labelList, - holder.gameProgressbar, holder.gameInfo, - holder.downloadSpeed, holder.downloadPercentage, - holder.downloadBtn, detailedEntity, platformMap, statusMap); - } else if (viewHolder instanceof FooterViewHolder) { - FooterViewHolder holder = (FooterViewHolder) viewHolder; - if (isNetworkError) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(list.size()); - } - }); - } else { - holder.footerview_progressbar.setVisibility(View.VISIBLE); - holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); - } - } - } - - @Override - public int getItemViewType(int position) { - return position; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - if (i != list.size()) { - return new GameViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.home_list_item_gamenormal_type, viewGroup, false)); - } else { - return new FooterViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.refresh_footerview, viewGroup, false)); - } - } - - public List getList() { - return list; - } - - public void setList(List list) { - this.list = list; - notifyDataSetChanged(); - } - - public boolean isRemove() { - return isRemove; - } - - public void setRemove(boolean isRemove) { - this.isRemove = isRemove; - } - - public boolean isLoading() { - return isLoading; - } - - public void setLoading(boolean isLoading) { - this.isLoading = isLoading; - } - - public boolean isNetworkError() { - return isNetworkError; - } - - public void setNetworkError(boolean isNetworkError) { - this.isNetworkError = isNetworkError; - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Plugin3Fragment.java b/app/src/main/java/com/gh/gamecenter/plugin/Plugin3Fragment.java deleted file mode 100644 index c2b65e0866..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Plugin3Fragment.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.gh.gamecenter.plugin; - -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.v4.widget.SwipeRefreshLayout.OnRefreshListener; -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.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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.LinkedBlockingQueue; - -import de.greenrobot.event.EventBus; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-11 - * @des 主页插件fragment - */ -public class Plugin3Fragment extends Fragment implements OnRefreshListener { - - private View view; - private RecyclerView recyclerview; - private SwipeRefreshLayout game_swipe_refresh; - private Plugin3FragmentAdapter adapter; - private LinearLayoutManager layoutManager; - private LinearLayout reuse_no_connection; - private ProgressBarCircularIndeterminate game_pb_loading; - - // 黄壮华 添加 记录信息的map 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - 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 (queue.size() > 1) { - queue.offer(queue.poll()); - Message msg2 = Message.obtain(); - msg2.obj = name; - msg2.what = Constants.DOWNLOAD_ROLL; - sendMessageDelayed(msg2, 3000); - } - } - } - } - } - }; - - // 黄壮华 添加观察者 修改2015/8/15 - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged( - HashMap downloadingEntries) { - if (!game_swipe_refresh.isRefreshing()) { - for (java.util.Map.Entry entry : downloadingEntries - .entrySet()) { - DownloadEntry downloadEntry = entry.getValue(); - - Integer location = locationMap.get(downloadEntry.getName()); - if (location != null) { - int index = location.intValue(); - - GameEntity detailedEntity = adapter.getList() - .get(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); - - statusMap = new ArrayMap(); - locationMap = new ArrayMap(); - gameMap = new ArrayMap>(); - platformMap = new ArrayMap>(); - nameMap = new ArrayMap(); - - dismissEntity = new DismissEntity(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 - 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); - } - }); - - // 黄壮华 传递引用 修改2015/8/15 - adapter = new Plugin3FragmentAdapter(Plugin3Fragment.this, locationMap, - gameMap, platformMap, nameMap, recyclerview, - game_swipe_refresh, reuse_no_connection, statusMap, - dismissEntity,game_pb_loading, false); - recyclerview.setAdapter(adapter); - recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { - - @Override - public void onScrollStateChanged(RecyclerView recyclerView, - int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == adapter - .getList().size()) { - if (!adapter.isRemove() && !adapter.isLoading()) { - adapter.addList(adapter.getList().size()); - } - } - } - - }); - recyclerview.addItemDecoration(new VerticalItemDecoration(getActivity(), 1)); - - EventBus.getDefault().register(this); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - 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.intValue(); - GameEntity detailedEntity = adapter.getList().get(index); - if (TextUtils.isEmpty(busThree.getPlatform())) { - detailedEntity.getEntryMap().remove("官方版"); - } else { - detailedEntity.getEntryMap().remove(busThree.getPlatform()); - } - 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) { - int location = locationMap.get(name); - if ("安装".equals(busFour.getType())) { - GameEntity detailedEntity = adapter.getList().get(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.VISIBLE); - reuse_no_connection.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getList().size()); - } - } - } - - public void onEventMainThread(EBUISwitch busNine) { - if ("MainActivity".equals(busNine.getFrom())) { - if (busNine.getPosition() != 1) { - statusMap.clear(); - } - } else if ("PluginFragment".equals(busNine.getFrom()) && busNine.getPosition() == 2 - && game_pb_loading.getVisibility() == View.VISIBLE) { - adapter.load(); - } - } - - public boolean isEverpause() { - return isEverpause; - } - - @Override - public void onResume() { - super.onResume(); - 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); - } - isEverpause = false; - DownloadManager.getInstance(getActivity()).addObserver(dataWatcher); - } - - @Override - public void onPause() { - super.onPause(); - isEverpause = true; - statusMap.clear(); - DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - adapter = new Plugin3FragmentAdapter(Plugin3Fragment.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(); - AppController.canclePendingRequests(Plugin3Fragment.class); - EventBus.getDefault().unregister(this); - view = null; - recyclerview = null; - game_swipe_refresh = null; - adapter = null; - layoutManager = null; - reuse_no_connection = null; - locationMap = null; - gameMap = null; - platformMap = null; - nameMap = null; - statusMap = null; - dismissEntity = null; - handler = null; - dataWatcher = null; - game_pb_loading = null; - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/plugin/Plugin3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/plugin/Plugin3FragmentAdapter.java deleted file mode 100644 index 7f375efedd..0000000000 --- a/app/src/main/java/com/gh/gamecenter/plugin/Plugin3FragmentAdapter.java +++ /dev/null @@ -1,401 +0,0 @@ -package com.gh.gamecenter.plugin; - -import android.content.Context; -import android.content.Intent; -import android.support.v4.util.ArrayMap; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.RecyclerView; -import android.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.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; -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.DataCollectionManager; -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.Map; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-11 - * @des 首页插件fragment适配器 - */ - -/** - * - * @author 温冠超 - * @email 294299195@qq.com - * @date 2015-8-8 - * @update 2015-8-11 - * @des 首页插件fragment适配器 - */ -public class Plugin3FragmentAdapter extends - RecyclerView.Adapter { - - private Context context; - - private Plugin3Fragment fragment; - - private RecyclerView recyclerView; - private SwipeRefreshLayout game_swipe_refresh; - private LinearLayout reuse_no_connection; - private ProgressBarCircularIndeterminate game_pb_loading; - - private boolean isRemove; - private boolean isLoading; - private boolean isNetworkError; - - private List list; - - // 黄壮华 获取引用 修改2015/8/15 - private ArrayMap locationMap; - private ArrayMap> gameMap; - private ArrayMap> platformMap; - private ArrayMap nameMap; - - private ArrayMap statusMap; - - private DismissEntity dismissEntity; - - // 黄壮华 获取引用 修改2015/8/15 - public Plugin3FragmentAdapter(Plugin3Fragment fment, - ArrayMap lMap, - ArrayMap> gMap, - ArrayMap> pMap, - ArrayMap nMap, RecyclerView rView, - SwipeRefreshLayout swipeRefreshLayout, - LinearLayout linearLayout, - ArrayMap sMap, - DismissEntity dEntity, - ProgressBarCircularIndeterminate pbLoading, - boolean isLoad) { - - // 黄壮华 获取引用 修改2015/8/15 - locationMap = lMap; - gameMap = gMap; - platformMap = pMap; - nameMap = nMap; - - statusMap = sMap; - - recyclerView = rView; - game_swipe_refresh = swipeRefreshLayout; - reuse_no_connection = linearLayout; - game_pb_loading = pbLoading; - - dismissEntity = dEntity; - - fragment = fment; - context = fment.getActivity(); - - isRemove = false; - isLoading = false; - isNetworkError = false; - - list = new ArrayList(); - - if (isLoad) { - load(); - } - } - - public void load() { - new Thread(runnable){}.start(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - addList(0); - } - }; - - public void addList(final int offset) { - if (isLoading) { - return; - } - isLoading = true; - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST - + "v1d45/plugin/danji?limit=20&offset=" + offset, - Constants.GAME_CD), new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - processingData(response, offset); - isLoading = false; - } - - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - isLoading = false; - // 无网络连接 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - if (offset == 0) { - if (game_swipe_refresh.isRefreshing()) { - game_swipe_refresh.setRefreshing(false); - } - recyclerView.setVisibility(View.GONE); - game_pb_loading.setVisibility(View.GONE); - reuse_no_connection.setVisibility(View.VISIBLE); - } else { - Toast.makeText(context, "网络错误", - Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } - } - } - - }); - AppController.addToRequestQueue(request, Plugin3Fragment.class); - } - - private void processingData(JSONArray response, int offset) { - 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()) { - if (!list.isEmpty()) { - for (int i = 0; i < gameList.size(); i++) { - GameEntity entity = gameList.get(i); - // 去重 - for (int j = 0; j < list.size(); j++) { - if (list.get(j).getId().equals(entity.getId())) { - gameList.remove(i); - i--; - break; - } - } - } - } - 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.addAll(gameList); - if (!fragment.isHidden() && !fragment.isEverpause()) { - notifyItemRangeInserted(list.size() - gameList.size(), gameList.size()); - } - } - - if (fragment.isHidden() || fragment.isEverpause()) { - notifyDataSetChanged(); - } - - if (offset == 0 && 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); - } - - if (gameList.isEmpty() || (offset == 0 && gameList.size() < 20)) { - isRemove = true; - notifyItemRemoved(getItemCount()); - } - - // 黄壮华 获取游戏位置信息 修改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()); - } - } - } - - @Override - public int getItemCount() { - if (list.size() == 0) { - return 0; - } - if (isRemove) { - return list.size(); - } else { - return list.size() + 1; - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, - final int position) { - if (viewHolder instanceof GameViewHolder) { - - GameViewHolder holder = (GameViewHolder) viewHolder; - - final GameEntity detailedEntity = list.get(position); - - detailedEntity.getApk().get(0).setPlatform("local_plugin"); - - ImageUtils.getInstance(context).display(detailedEntity.getIcon(), - holder.gameThumb); - if (detailedEntity.getApk() == null - || detailedEntity.getApk().isEmpty()) { - holder.gameNameAndSize.setText(detailedEntity.getName()); - } else { - holder.gameNameAndSize.setText(detailedEntity.getName() - + " | " + detailedEntity.getApk().get(0).getSize()); - } - holder.gameDes.setText(detailedEntity.getBrief()); - - GameViewUtils.setLabelList(context, holder.labelList, - detailedEntity.getTag()); - - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Map kv = new HashMap(); - kv.put("入口", "插件-单机"); - DataUtils.onEvent(context, "游戏详情", detailedEntity.getName(), - kv); - - Map map = new HashMap(); - map.put("location", "单机"); - map.put("createOn", System.currentTimeMillis() / 1000); - map.put("game", detailedEntity.getName()); - map.put("page", "插件"); - DataCollectionManager.onEvent(context, "click-item", map); - - AppController.put("GameEntity", detailedEntity); - 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.downloadSpeed, holder.downloadPercentage, - detailedEntity, position, this, - statusMap, platformMap, "插件-单机", false, dismissEntity, - "单机:" + detailedEntity.getName()); - - DownloadItemUtils.updateItem(context, holder.labelList, - holder.gameProgressbar, holder.gameInfo, - holder.downloadSpeed, holder.downloadPercentage, - holder.downloadBtn, detailedEntity, platformMap, statusMap, - false); - } else if (viewHolder instanceof FooterViewHolder) { - FooterViewHolder holder = (FooterViewHolder) viewHolder; - if (isNetworkError) { - holder.footerview_progressbar.setVisibility(View.GONE); - holder.footerview_tv_loading.setText("加载失败,点击重试"); - holder.rootView.setClickable(true); - holder.rootView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(list.size()); - } - }); - } else { - holder.footerview_progressbar.setVisibility(View.VISIBLE); - holder.footerview_tv_loading.setText("加载中..."); - holder.rootView.setClickable(false); - } - } - } - - @Override - public int getItemViewType(int position) { - return position; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - if (i == list.size()) { - return new FooterViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.refresh_footerview, viewGroup, false)); - } else { - return new GameViewHolder(LayoutInflater.from( - viewGroup.getContext()).inflate( - R.layout.home_list_item_gamenormal_type, viewGroup, false)); - } - } - - public List getList() { - return list; - } - - public void setList(List list) { - this.list = list; - notifyDataSetChanged(); - } - - public boolean isRemove() { - return isRemove; - } - - public void setRemove(boolean isRemove) { - this.isRemove = isRemove; - } - - public boolean isLoading() { - return isLoading; - } - - public void setLoading(boolean isLoading) { - this.isLoading = isLoading; - } - - public boolean isNetworkError() { - return isNetworkError; - } - - public void setNetworkError(boolean isNetworkError) { - this.isNetworkError = isNetworkError; - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/search/Search1DetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/Search1DetailFragmentAdapter.java index 7682374d7c..c96ffda981 100644 --- a/app/src/main/java/com/gh/gamecenter/search/Search1DetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/Search1DetailFragmentAdapter.java @@ -25,7 +25,7 @@ import com.gh.common.util.TimestampUtils; import com.gh.common.view.DownloadDialog; import com.gh.gamecenter.GameDetailsActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.GameViewHolder; +import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.entity.DismissEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.manager.DataCollectionManager; @@ -41,7 +41,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class Search1DetailFragmentAdapter extends RecyclerView.Adapter { +public class Search1DetailFragmentAdapter extends RecyclerView.Adapter { private Context context; @@ -123,24 +123,24 @@ public class Search1DetailFragmentAdapter extends RecyclerView.Adapter - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/account_warn.png b/app/src/main/res/drawable-hdpi/account_warn.png deleted file mode 100644 index d006150ca146b16825bab854e6ed9db60498c016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4112 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 KMNUMnLSTZ7+}q{= diff --git a/app/src/main/res/drawable-hdpi/essay_comment.png b/app/src/main/res/drawable-hdpi/essay_comment.png deleted file mode 100644 index d716cd500044b9bd33c7c15658ea12cb26984b25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3391 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 Ef|_sx>i_@% diff --git a/app/src/main/res/drawable-hdpi/essay_share.png b/app/src/main/res/drawable-hdpi/essay_share.png deleted file mode 100644 index 0207c990bc4baea996e28d8e4793eec6f6e87b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3413 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 diff --git a/app/src/main/res/drawable-hdpi/essay_unlike_up.png b/app/src/main/res/drawable-hdpi/essay_unlike_up.png deleted file mode 100644 index 8ee67b040d1ff9ee4dbc34b0225abd56dd427e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3647 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 diff --git a/app/src/main/res/drawable-hdpi/essaydetails_comment_up.9.png b/app/src/main/res/drawable-hdpi/essaydetails_comment_up.9.png deleted file mode 100644 index 3524deafde513d42fadd01ab7ab9c087726c5eec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^(m<@m!3HFqJ}JZksbEhR$B>F!Z*MqqF$f5>KHT{~ z$ZN{xJ{bq2q^|#0-|Vro=ABqsl6a!|;%q(%AedqN?Dwvg8Qby=hc3_|CjqOBlFv;eXs7`cD?{Kp25@A&t;ucLK6T`dNtz! diff --git a/app/src/main/res/drawable-hdpi/home_kapaigonglue.png b/app/src/main/res/drawable-hdpi/home_kapaigonglue.png deleted file mode 100644 index 43f7d072910ed95b6dae1af2143bf3b720788527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3163 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 B6pjD@ diff --git a/app/src/main/res/drawable-hdpi/home_kapaitoutiao.png b/app/src/main/res/drawable-hdpi/home_kapaitoutiao.png deleted file mode 100644 index a1ee445852d251e9d9d4b8c2faf9f60d34f00a9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2958 zcmV;93vu*`P)}=<9W@*)g zZ!>$obNjyMJn!?q-}`>CFbuJD%MFhLcmS)7mzu}63t`l~5N+4PzW2knF(U7W*vJ33 z#TGw#{arkNG73oGHxLGH2aquI)&`0xNyK6*T(1h1eX#F&wYB?*Y4R5atMBl>s_5N7 zY^J&~BPP0FH4DNx~<)qpbJK(;-eh|QQmgOKp(BQ;ca{vymXeNA4tPq6eRiJ4( z_(2^8&wbyP&l0WdE2_BWAgK?@Ypt(KUbO@D{rlzl(&JA|3ovJ5h^ND=`FDBvy!zKztU+ez(`G_Ry_tao`t5S&~VF0r7l9Pc7m+c z;POKf1RHSHta*{dlHa{s0$KXy6ByjHTV7MzO(THBFS%3#6PH|q5I}Tu0tx=9VYH2U`K5{R|`b$Lx`0Z~TBDdJ2QBdz~yX6iVGO^t;0Gj!Qmq%$*Qpw2-pG&s1J%nNJ` z-}+gocbJI3@DJ4f@Sc3%4_(9pAg*Q6puh*STM5LZkWWHzlGVpLfP~?>IkmnaT!_+l zspN(b_^^#dXm(I%G;5eq#e&2c`FXf6vBvt2(+lj$;!_-;+Apw$wS1zi07`{0jK8A=K| z1EB4$z@gA%97A|pg68#ouLnr$p!8exglJt(C|#U`i8ab)Y_X^v0Yt={*sA_pO)+&$ zef9HjI#nkkekbjao3c8VCsN#rd?ra-pV7jNN-95~(y(h$`}ACqcLGW@IhsMa3EM^V}+G z^*N+CfTLA0{@`th&lGUJt$cJAqxakZ^U5)#rpIvV2YIxuj3 z@k;1ZBOf|J+ys-a*#T-T?SxQ6^4u7dX z^(UVH6W1D3K5IK=8LH-={TIq_AOEj`pgW&wPY3;?)hEO|u#PVv%{*2BQCUNaL_A>j zcI1)0yjMIgF!pSzGu!KqGp!t5Jm8)xMGtafQRXPiwOJ&XR*LmYjU`y*8E8~39De9| zG>VmVfmrVrsWB(oo1!SIz8LMU+K`C>W4gJ`A<_(y4Kf|AG9wfW)yj)F`P-M*1+(z% zJ3T~~jI?5% z(#}Y`o0oroNSdW5$Gv7u=CcK+kvfwvmwlVDrV-Q$M?*fjF?toBoyS{0*&7W6U8PEQ z$tlFT_{b{+)G5m0&s>50;3g(YWmH(kibCJ^tI(OJ)cqQqoYMoOI=g@a-}xO1!9*k@ z=gQmmy}K^`)XOV4@Qt6M_}l?0I=L&sbaVLjE6GNM=E-6twM7n)Nes(8dE}!v8uMQwcYnU`?p&#$0x({>bYybJ@Mx&*_Aw_{=7 zJMzI`^@H-;Heq1flpL%0)-lXJ^LGZwGpr8cvR+b{&qM)1ccvFra*ASI5k(l2EN8*S z;&TU4-#Z6qgNw{%Ebi%53)V5@5@T4V$wr5_T5v zSzXO96AER`kE*yOx_<~mO?R29rJ=CJOxUwNiA_O`0nO*1&QimsU^T^n<&{yg=aFRH zEHZy37MJ1`EY_$aQNjvs#JOa|SgJT7OIzQ;Kw^|f8)a_=X*J&!XTlaUVPx$qCKtPt zIl8JRf$3ymkU-|-S9{cx%SoEsV=6&uvI3|QPJ_?8EQu$~8E9nFQ+?#M0_Oaa{1^)< zf@x=@qdJhgk~^=$(7k(5du=~zukM#R5%v}$E;klv4hJhN?8JH`K!}}*I+++THe-oQ z>11uun@5cCM&UOa^sFP*gOaHP85ZUeeUD7HfK1(gPgk5-?O6mM`Xl$>M_@aohY0n@ z6_aIYQ4VIXD66m{Oj17ueFBr|%UK7RSg=n><~A4?VPkR&vhg7l8}ri4DK&!X2tI9`2+=4wdb zWp5d$t@mLE7Qrt|(4#6ER`3gxK#B8Q;V>HhulxHCK)u+_~#PBKUE?lCxj(j6T;R<4A;9Bc6X=nCU5Y z_kF}b-r(V`SZf#Jt*drTvpf9}09m>D$ZH40>3;+m0Py5%7?vd9C;$Ke07*qoM6N<$ Eg2*eDa{vGU diff --git a/app/src/main/res/drawable-hdpi/home_plug_upgrade.png b/app/src/main/res/drawable-hdpi/home_plug_upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..cc66cac61b08d5b4e8e99a66b4a4b5c1586e2a32 GIT binary patch literal 1008 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 Y0IkFpLS0d$u>b%707*qoM6N<$f(EV-{Qv*} diff --git a/app/src/main/res/drawable-hdpi/home_yuedujingxuan.png b/app/src/main/res/drawable-hdpi/home_yuedujingxuan.png deleted file mode 100644 index f4d6d1be7df8a35ee3b10fc0066ee33a7f1e0d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2735 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 diff --git a/app/src/main/res/drawable-hdpi/login_mobile.png b/app/src/main/res/drawable-hdpi/login_mobile.png deleted file mode 100644 index 3b57eefb29b300d3c5c64777e920a0a929751967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3868 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 Y0O-Gwx|`h=r~m)}07*qoM6N<$f=-1kumAu6 diff --git a/app/src/main/res/drawable-hdpi/login_username_dn.png b/app/src/main/res/drawable-hdpi/login_username_dn.png deleted file mode 100644 index 2832faa0a3a1fb35427361a2e1f97ef118f85aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3561 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 LNkvXXu0mjfO*5PE diff --git a/app/src/main/res/drawable-hdpi/read_time_ago.png b/app/src/main/res/drawable-hdpi/read_time_ago.png deleted file mode 100644 index ef45c7164f77387b0671216accb83e8c59de000a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3552 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 diff --git a/app/src/main/res/drawable-xhdpi/hero.png b/app/src/main/res/drawable-xhdpi/hero.png deleted file mode 100644 index 8b0b3ce8715d9127f1ecd9e42755cf67bed17739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8910 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 diff --git a/app/src/main/res/drawable-xhdpi/home_database_navigation.png b/app/src/main/res/drawable-xhdpi/home_database_navigation.png deleted file mode 100644 index 972700ae7e5a244e3d9b32f5822e245651186ed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19701 zcmV)3K+C_0P)3v`Bz9csb2?+^=ErAgn1jZQw1w}_0+z>^-q%>c98#TZZrH;t*_dq)Y#2zy;A3rCfiJ( zLovU%x!!O6`&4GVzZzw{mDf)%dvNn(wTjnb1}Fo0F8^G_^AQad!kb{e9$*^RM|i%6 zkGpc&Lz{Qk1eAdc%Z@}R&T_&x!F=PuG~OG4J$Ly-oA0RtR0H!dGpl?P%)dx5jnl^& z)Z6ig)v)sRH^Ka?1QRQ6d+pQ>M-~BP>jdd}&zoTWRf4Iny8-{$wbd6b6qwmmRDSL5 z0Ohj@%EhP2;cKUSdWP)$s}%B-j*gJc;U$MBTs%CV%TSK@De&)X1!A$<$l-1wi``kZ zEjcqt7MqhCt{|o3<79UQ`0qf~y=PL>e7yuI^&eLzhch6vzD`l{l;CG@@H05wVaoAy z=J~k_`7{;y*X!$)ed4hZ^7(rg0!&ONzIMunWjdf`)@fV1iaZ~=v@VwE$M2)`@9!tq z+fFCfiD%R-003sOup_WoWJNv`;{tZ@qD_FvXOk4dveki|xe&7a!*i`C<@3m~Hita5 z!pG?QW4+bxlJn|QARUuqtbBeHu+{FCzx6xJ=QE__wd1XJ-p0rBd6YsYl_mR(~$f`XXjsUQB23cJu1~(_i%m(K07tSZ=L93|sg3r~(Ao}oq6#dP8#@cqK zo!#w`ReO2@WM6Z1-IHavZBZYpqj%PQjgw=R%9KwTrUJ zX>xko$QfM37UVRIMcBvAZcdJ4tBH=hB-Y{USWOvrrEsmjmgQoFiRl4y@cFO|Hy;_@ zCg*Ycy2umilXWxW{cKGx3bd@G==3hxj{URADT+r1$QSG*x4%oS4R;I|t6N%S%uFT5 z+2syWjx9PET1GCnTBNa=0ZJq$sJ(Mt@z{En+4Y|rt3aIo;YOPJ!N#(}a38*&dcJWt8TEMCCzj_VKdK?j?7iSFUFSb7pb}|Lvq;`)acBFMzRHokcLk z%5m))U`j>two^;j;pFvp(#-U3t{`fzk4jrPGd&nsp&%2|x}WNiuoqWWOMB49P1 z)@4$_05d+;Pfjj0SeTF*ZGY?=9obfs0Oisu$+Gf!uq~@CI4q^+c*yE@gH%}jLpW_ij(n?GB)eu3e&>p&1Rw$ z0jRto+`6J@txY6AH8TPGLW7AZF|nJR%xE#|V7l4$*)`@_5Mq)SFbh1RAT#V@9qw=y zm@yn1?xS>ULIsw=E5;qR1`ii1EH%`5D5aC*e4Z(G=j|mj$L`VP?VLl9QIK$r#)82zDhLYP$pwgtQ6zHdsN4f8R*J35#rGj@ zTssyn7j9WBiowWnoxiVFo`nv7IJ4X1n;>X@163a)K@1 z!|6(o06eD5E z7c+alzLBgxzx?fg#~I{4Vnf+JR=>Zd;87P)YkQB(4R5Qs00aZLM6pP=jtmzr3dzke z3nD@$Hm(5^6hfpI2rMX@oUS@G_7^K-HVM}zg>7Juq{Tgm5qVq}@j5$DiqBenG+L}t zAShNu22+Fv_8Pc`n`5xeQ1Q}y92j>cm>FJ=bAlwb!tGA%2~w7+J2uv2*rueY3T}3*j%BM%s{&LcYC!AEYvcyjRuCC4%6Vq5>LwL6 zjR8|d`hj%Ds*wtS0GEusR6k#efzxBAhtC1>lH_%n3bzb`mC{@+JOC;REUD;@oL*tM zHmgfglR_awk%=ADs#gk)H6u<3IOV{8V6upXGn}iobsr`E-Np9?(2$<^xI$*N3J66E zz)dsLhP5Ie4RdNV!Gs8w8PIan6rWE3ZGg?%ySO4SxMtxtJ3K_$k-@S9>}Dqem}cU^ zYy`-7(JZr2ouwjeD8gxr$J0`F^QZ_;OPc^2OASy<$Dyh< zGYFaVjIdN2(js=lNsgrnLyY!wCCKM<>hmf2BGH1D8;gxHpzNXexQU5v4W}l7e>h!c zvuTnock+KKgr9mR%f0+;QQ|X|{_3J|vl!UoHNMMz2lHHfbjpWG#G(`86maDC*baJ2!>7lZ6ZQ7PgK zJS+{D^Z2?-mWs-zoikKUv*#EyVmn(EL~w6#kpMKqxoS?!F^fXIc3)tzIX+ip zqF)LcsSSt{+-jOF&gE(;w)W_$Qkf^vP6dfiXR}CQ3QDQc1h{hOBueg?*CCC`Fo7+ga{#4#OxTA zpkAKY2mvx{QnWW4%%XeKm?Idgo-dloc}9j=t8p5!R|If&jX|yiIWN1{_=Je)Ubco% z=i1^45R>70qZ6-EfL&_k{UW89W|D$R7HU7Flm{znyC#HsfGNa?tuPTEr5rDN{XJ@m zWYRcoOkZk=26nMZRakKF-w+|14QA~;RGAwAs?u8x)}pX`vuL>=+!$IjT$;M0yJlE4 z+^;cR0njKYJChp}I)H;^Mn+#^LbIG~?5Ti13W0XhsZD#sR~yFrNZ z(_=5u#K`lq&dO{S>>5@h!arNMmvcpsrz8UkSAesDF5+RqsDhwyxB>uV zxI~L}KmZh(&SDpx7Of@dh2Ua_3ik<#E~5bnKmfkm5VIkqr?_Cl%vf<>03gJFL!8I4 zc~Zf4GmsW0TR7L`=nKV`mOyx!+~3sXcClW#RK!8JSpZy?GsB~BoOEzy1POvQDpYzl z#8Iq33~e@;iei$sG^-Dg#h}P2Me&;pjbmU+6B(p-quWV3A#Ix=IdIR?zR51t?eFG7 zU=Z02DoUTUn%KJz7nh10G|d%4;mQH`2w+k8D)1#j1#t9Mkp!na0j?a1W>rZ3Ga4BJ zFiDL;!`cxWVX3fkRM7E}7sUFIXXdi1U=a)~6Kg})60lpByG=k$r`6eR^GGUFV#h8u zEHuN-)^PFmg#c5P&l09S9)Mz=8G4>9oakFL_k^Y|osl{i6u4SgV=Bf;II~y8PrEZ% z6y)8S3!LqK5qtFokR(rFk?MMtQd_640M+Wy6-9$LSFTiQlIN&2i5XK4XtP{{MW+q1 zHBV3Pq;P0Ov7y^|!h#`%YDUbgylv}3fGMd3*Xmj%Co4K>hSQ8CqVIya>R{?Ohh=}; zO0kk;WWNXmDYjf#3s`L;GAQS$yb+x}Dn$#OR+%pYP|$?+A{#HObfp{BMf9|$C*zy| zGn>s&N7p*jCNQ6`v$(Iz8Ky*XqONEFSKMqcRX~-7J0mm%rrIv)s@v5PQkldcO=~TJ zpr{IxvB?YZ6D=f&sc@@^pO6A!c_2u}8-WHp%|s`w0R_O&T!s`yZ)VFGh!}m zu1bNu^2Urk^AJ-}s9w$;r-z@HZFc9Ol3GY2t>v1c&+>l$_SFJzQOiXS0(Q@7F5rUX zd1~#~$(NN0itgg_hHjyV*Qf;OB7&XaKmwk>~7AD z*^5j~?i7$gs*Ei&m0()A$Wys!S-LbIFl)7&S{I@dG^`J<5wo$qvq+Al`(~n;g9@q9 z`sB9s93_RHj*S;jt?!qLj*6h~(DGWnJrjM0bTG@*7W9C?Lv|iSxnobK{M*i@lqPVL zxmhj$l%(ITf{)qj>k`Y%a*ARz^o+m+Fav=;iJ4&E01?MKoql1kRxM6fmLb@0F@>5h zn030W*yozEG=~L)}Shus{#{EZjvkWb6|TjVrI1mXrg77DHg~N z(`ro>@=_LK)$}FCpu&n_l>idI5Y=H>4uiUc&RaUbE^k}8%m`tkkP(fx_<(L7rQh*E zT65PkRbXQ3d;i(A;lU@U@a_v~GK%h#<{9v(r2;6L*S)R++Ud$&&uG5H8nYPRO%}nf2 zyRC3M^RiXTjcXu+eCa*)GRuyj-V1+9;X@Cvx|h_*DE;|UpCwms7aeldW#sPaEai}W zOX=8+chJbD-_t8!{ofQQq}g>_RDz>fD0&`5qeGNPjEcMmtF&_dj20IN2fAfT!@0&8 zkhbJG)ZlohCQdjwKBt)ddYs_}0kh2IHv26w5~doEwoM%XGig1dO(^_LZhQ@IyKhelu)k0f(DfqeDY1MarVhZNgPhUivPB@*CgF`g+$1U>r z_OD%AwO`lqZ=(|**hKXH3uy0DRJvUjt(mP(mog)f-4u_FmI_b<-O2mtV9qcz#(uH* z5RFf5*V3AV?1y;l)CGqox!I~1x=^q5;l|Opjn2$)r;zFp17U6Q))~8Gv$w!t*;Aw2 z%3_+HD~hndfEHYC%KXCzY0-cGgqEN6v8sF6|I@qa(L;}?$;balⅇ_b;x3JAGVYn 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 IM6N<$g2azZ_5c6? diff --git a/app/src/main/res/drawable-xhdpi/home_newgame_navigation.png b/app/src/main/res/drawable-xhdpi/home_newgame_navigation.png deleted file mode 100644 index f53c970fae460218284af7c522fbb03b58b2ef3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19894 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 P00000NkvXXu0mjfv5p4_ diff --git a/app/src/main/res/drawable-xhdpi/home_raiders_navigation.png b/app/src/main/res/drawable-xhdpi/home_raiders_navigation.png deleted file mode 100644 index 996f98f486c9b184ccbe7118f6a9995adeb061d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19386 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 - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/border_input_dn.xml b/app/src/main/res/drawable/border_input_dn.xml deleted file mode 100644 index 603dca4975..0000000000 --- a/app/src/main/res/drawable/border_input_dn.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/border_input_up.xml b/app/src/main/res/drawable/border_input_up.xml deleted file mode 100644 index 156cd96d6e..0000000000 --- a/app/src/main/res/drawable/border_input_up.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/border_login_bg.xml b/app/src/main/res/drawable/border_login_bg.xml deleted file mode 100644 index 87eaf1267f..0000000000 --- a/app/src/main/res/drawable/border_login_bg.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/border_scarlet_bg.xml b/app/src/main/res/drawable/border_scarlet_bg.xml deleted file mode 100644 index 2d117f0c49..0000000000 --- a/app/src/main/res/drawable/border_scarlet_bg.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_comment_liked_dn.xml b/app/src/main/res/drawable/essay_comment_liked_dn.xml deleted file mode 100644 index 941b24f0d0..0000000000 --- a/app/src/main/res/drawable/essay_comment_liked_dn.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_comment_liked_style.xml b/app/src/main/res/drawable/essay_comment_liked_style.xml deleted file mode 100644 index 7788171023..0000000000 --- a/app/src/main/res/drawable/essay_comment_liked_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_comment_liked_up.xml b/app/src/main/res/drawable/essay_comment_liked_up.xml deleted file mode 100644 index 638a2a9ebe..0000000000 --- a/app/src/main/res/drawable/essay_comment_liked_up.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_comment_unliked_dn.xml b/app/src/main/res/drawable/essay_comment_unliked_dn.xml deleted file mode 100644 index c834427e2a..0000000000 --- a/app/src/main/res/drawable/essay_comment_unliked_dn.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_comment_unliked_style.xml b/app/src/main/res/drawable/essay_comment_unliked_style.xml deleted file mode 100644 index 1cf824b619..0000000000 --- a/app/src/main/res/drawable/essay_comment_unliked_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_comment_unliked_up.xml b/app/src/main/res/drawable/essay_comment_unliked_up.xml deleted file mode 100644 index 5dc0e62a85..0000000000 --- a/app/src/main/res/drawable/essay_comment_unliked_up.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_like_style.xml b/app/src/main/res/drawable/essay_like_style.xml deleted file mode 100644 index 3cdc684d7f..0000000000 --- a/app/src/main/res/drawable/essay_like_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_liked_dn.xml b/app/src/main/res/drawable/essay_liked_dn.xml deleted file mode 100644 index 101ecbfd26..0000000000 --- a/app/src/main/res/drawable/essay_liked_dn.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_liked_style.xml b/app/src/main/res/drawable/essay_liked_style.xml deleted file mode 100644 index fbee634616..0000000000 --- a/app/src/main/res/drawable/essay_liked_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_liked_up.xml b/app/src/main/res/drawable/essay_liked_up.xml deleted file mode 100644 index 9b421949cd..0000000000 --- a/app/src/main/res/drawable/essay_liked_up.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_unlike_style.xml b/app/src/main/res/drawable/essay_unlike_style.xml deleted file mode 100644 index fdda7ba0d0..0000000000 --- a/app/src/main/res/drawable/essay_unlike_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_unliked_dn.xml b/app/src/main/res/drawable/essay_unliked_dn.xml deleted file mode 100644 index fc7d73f27f..0000000000 --- a/app/src/main/res/drawable/essay_unliked_dn.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_unliked_style.xml b/app/src/main/res/drawable/essay_unliked_style.xml deleted file mode 100644 index c61641e29e..0000000000 --- a/app/src/main/res/drawable/essay_unliked_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/essay_unliked_up.xml b/app/src/main/res/drawable/essay_unliked_up.xml deleted file mode 100644 index 5a1676017e..0000000000 --- a/app/src/main/res/drawable/essay_unliked_up.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/login_auto_style.xml b/app/src/main/res/drawable/login_auto_style.xml deleted file mode 100644 index c1e1578992..0000000000 --- a/app/src/main/res/drawable/login_auto_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_type_red_bg.xml b/app/src/main/res/drawable/oval_type_red_bg.xml deleted file mode 100644 index bfd2bc3daa..0000000000 --- a/app/src/main/res/drawable/oval_type_red_bg.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_white_hint_dn.xml b/app/src/main/res/drawable/oval_white_hint_dn.xml deleted file mode 100644 index 46ddfbe9ef..0000000000 --- a/app/src/main/res/drawable/oval_white_hint_dn.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_white_hint_up.xml b/app/src/main/res/drawable/oval_white_hint_up.xml deleted file mode 100644 index a2387b4266..0000000000 --- a/app/src/main/res/drawable/oval_white_hint_up.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/reuse_textview_style.xml b/app/src/main/res/drawable/reuse_textview_style.xml deleted file mode 100644 index b15ad8b9a2..0000000000 --- a/app/src/main/res/drawable/reuse_textview_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_again_dn.xml b/app/src/main/res/drawable/textview_again_dn.xml deleted file mode 100644 index e02b8abb40..0000000000 --- a/app/src/main/res/drawable/textview_again_dn.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_again_style.xml b/app/src/main/res/drawable/textview_again_style.xml deleted file mode 100644 index 6d6f8a7c01..0000000000 --- a/app/src/main/res/drawable/textview_again_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_again_up.xml b/app/src/main/res/drawable/textview_again_up.xml deleted file mode 100644 index 627f92f4f3..0000000000 --- a/app/src/main/res/drawable/textview_again_up.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_color_style.xml b/app/src/main/res/drawable/textview_color_style.xml deleted file mode 100644 index f742eb9207..0000000000 --- a/app/src/main/res/drawable/textview_color_style.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_login_dn.xml b/app/src/main/res/drawable/textview_login_dn.xml deleted file mode 100644 index 1c03446c46..0000000000 --- a/app/src/main/res/drawable/textview_login_dn.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_login_style.xml b/app/src/main/res/drawable/textview_login_style.xml deleted file mode 100644 index bc8e432339..0000000000 --- a/app/src/main/res/drawable/textview_login_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_login_up.xml b/app/src/main/res/drawable/textview_login_up.xml deleted file mode 100644 index 7fbe84f9bc..0000000000 --- a/app/src/main/res/drawable/textview_login_up.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_logout_dn.xml b/app/src/main/res/drawable/textview_logout_dn.xml deleted file mode 100644 index fbf4aedbbc..0000000000 --- a/app/src/main/res/drawable/textview_logout_dn.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_logout_style.xml b/app/src/main/res/drawable/textview_logout_style.xml deleted file mode 100644 index 8760069a0a..0000000000 --- a/app/src/main/res/drawable/textview_logout_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_logout_up.xml b/app/src/main/res/drawable/textview_logout_up.xml deleted file mode 100644 index b967889047..0000000000 --- a/app/src/main/res/drawable/textview_logout_up.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_onekey_register_dn.xml b/app/src/main/res/drawable/textview_onekey_register_dn.xml deleted file mode 100644 index b967889047..0000000000 --- a/app/src/main/res/drawable/textview_onekey_register_dn.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_onekey_register_style.xml b/app/src/main/res/drawable/textview_onekey_register_style.xml deleted file mode 100644 index 446db3919c..0000000000 --- a/app/src/main/res/drawable/textview_onekey_register_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_onekey_register_up.xml b/app/src/main/res/drawable/textview_onekey_register_up.xml deleted file mode 100644 index 9b7bb0fcda..0000000000 --- a/app/src/main/res/drawable/textview_onekey_register_up.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_register_bg.xml b/app/src/main/res/drawable/textview_register_bg.xml deleted file mode 100644 index b967889047..0000000000 --- a/app/src/main/res/drawable/textview_register_bg.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml deleted file mode 100644 index b963e52ce3..0000000000 --- a/app/src/main/res/layout/activity_account.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cropimage.xml b/app/src/main/res/layout/activity_cropimage.xml deleted file mode 100644 index b4f53084bf..0000000000 --- a/app/src/main/res/layout/activity_cropimage.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_database.xml b/app/src/main/res/layout/activity_database.xml deleted file mode 100644 index 6448e926fd..0000000000 --- a/app/src/main/res/layout/activity_database.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_mobile.xml b/app/src/main/res/layout/activity_mobile.xml deleted file mode 100644 index a94583ef26..0000000000 --- a/app/src/main/res/layout/activity_mobile.xml +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_modifymobile.xml b/app/src/main/res/layout/activity_modifymobile.xml deleted file mode 100644 index e6a1d76eeb..0000000000 --- a/app/src/main/res/layout/activity_modifymobile.xml +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_news_or_raiders.xml b/app/src/main/res/layout/activity_news_or_raiders.xml deleted file mode 100644 index faa265ec38..0000000000 --- a/app/src/main/res/layout/activity_news_or_raiders.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_password.xml b/app/src/main/res/layout/activity_password.xml deleted file mode 100644 index 7697144f9e..0000000000 --- a/app/src/main/res/layout/activity_password.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_plugin.xml b/app/src/main/res/layout/activity_plugin.xml deleted file mode 100644 index 9487030cd0..0000000000 --- a/app/src/main/res/layout/activity_plugin.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_retrieve.xml b/app/src/main/res/layout/activity_retrieve.xml deleted file mode 100644 index d12135a73c..0000000000 --- a/app/src/main/res/layout/activity_retrieve.xml +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 6d0c5f4bcd..f42aed98c1 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -6,6 +6,7 @@ android:orientation="vertical"> + @@ -138,6 +139,33 @@ android:padding="10dp" /> + + + + + + + - - - - - diff --git a/app/src/main/res/layout/activity_userinfo.xml b/app/src/main/res/layout/activity_userinfo.xml deleted file mode 100644 index 30eb90f9d7..0000000000 --- a/app/src/main/res/layout/activity_userinfo.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/datebase_item.xml b/app/src/main/res/layout/datebase_item.xml deleted file mode 100644 index 88cca0ac2b..0000000000 --- a/app/src/main/res/layout/datebase_item.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_account_login.xml b/app/src/main/res/layout/dialog_account_login.xml deleted file mode 100644 index cb94292c1e..0000000000 --- a/app/src/main/res/layout/dialog_account_login.xml +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_account_register.xml b/app/src/main/res/layout/dialog_account_register.xml deleted file mode 100644 index 241380cfaf..0000000000 --- a/app/src/main/res/layout/dialog_account_register.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_code.xml b/app/src/main/res/layout/dialog_code.xml deleted file mode 100644 index 03d5c09a9a..0000000000 --- a/app/src/main/res/layout/dialog_code.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_essay_comment.xml b/app/src/main/res/layout/dialog_essay_comment.xml deleted file mode 100644 index bc8814dc29..0000000000 --- a/app/src/main/res/layout/dialog_essay_comment.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_mobile_login.xml b/app/src/main/res/layout/dialog_mobile_login.xml deleted file mode 100644 index db538cb43d..0000000000 --- a/app/src/main/res/layout/dialog_mobile_login.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_modify_nickname.xml b/app/src/main/res/layout/dialog_modify_nickname.xml deleted file mode 100644 index 3df0caa050..0000000000 --- a/app/src/main/res/layout/dialog_modify_nickname.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_modify_select.xml b/app/src/main/res/layout/dialog_modify_select.xml deleted file mode 100644 index dd5b514618..0000000000 --- a/app/src/main/res/layout/dialog_modify_select.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_modify_sign.xml b/app/src/main/res/layout/dialog_modify_sign.xml deleted file mode 100644 index a30f4f89ae..0000000000 --- a/app/src/main/res/layout/dialog_modify_sign.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_nickname.xml b/app/src/main/res/layout/dialog_nickname.xml deleted file mode 100644 index 4ef5a4125d..0000000000 --- a/app/src/main/res/layout/dialog_nickname.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_onekey_register.xml b/app/src/main/res/layout/dialog_onekey_register.xml deleted file mode 100644 index fd5e5aeea1..0000000000 --- a/app/src/main/res/layout/dialog_onekey_register.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_update_download.xml b/app/src/main/res/layout/dialog_update_download.xml deleted file mode 100644 index fb10e1e122..0000000000 --- a/app/src/main/res/layout/dialog_update_download.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_update_info.xml b/app/src/main/res/layout/dialog_update_info.xml deleted file mode 100644 index 57c027b735..0000000000 --- a/app/src/main/res/layout/dialog_update_info.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/essaydetails_comment_evaluate.xml b/app/src/main/res/layout/essaydetails_comment_evaluate.xml deleted file mode 100644 index a8e6f812ae..0000000000 --- a/app/src/main/res/layout/essaydetails_comment_evaluate.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/essaydetails_comment_item.xml b/app/src/main/res/layout/essaydetails_comment_item.xml deleted file mode 100644 index f38ab423e7..0000000000 --- a/app/src/main/res/layout/essaydetails_comment_item.xml +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/game_new_testgame_fragment.xml b/app/src/main/res/layout/game_new_testgame_fragment.xml deleted file mode 100644 index 980cb494de..0000000000 --- a/app/src/main/res/layout/game_new_testgame_fragment.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/game_plugin_item_gamenormal.xml b/app/src/main/res/layout/game_plugin_item_gamenormal.xml deleted file mode 100644 index 7ab2ed1b32..0000000000 --- a/app/src/main/res/layout/game_plugin_item_gamenormal.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/game_plugin_item_xincegame.xml b/app/src/main/res/layout/game_plugin_item_xincegame.xml deleted file mode 100644 index aa44e9d4fb..0000000000 --- a/app/src/main/res/layout/game_plugin_item_xincegame.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/game_test_list_view.xml b/app/src/main/res/layout/game_test_list_view.xml deleted file mode 100644 index 78da78d2e6..0000000000 --- a/app/src/main/res/layout/game_test_list_view.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home1_fragment.xml b/app/src/main/res/layout/home1_fragment.xml deleted file mode 100644 index 309d7f5448..0000000000 --- a/app/src/main/res/layout/home1_fragment.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home2_fragment.xml b/app/src/main/res/layout/home2_fragment.xml deleted file mode 100644 index ee13738bea..0000000000 --- a/app/src/main/res/layout/home2_fragment.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home_autoscrollviewpager.xml b/app/src/main/res/layout/home_autoscrollviewpager.xml deleted file mode 100644 index ca94d9a592..0000000000 --- a/app/src/main/res/layout/home_autoscrollviewpager.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home_game_normal_item.xml b/app/src/main/res/layout/home_game_normal_item.xml index 12f01a351e..671f4a6412 100644 --- a/app/src/main/res/layout/home_game_normal_item.xml +++ b/app/src/main/res/layout/home_game_normal_item.xml @@ -14,6 +14,7 @@ android:layout_centerVertical="true" android:textColor="#333333" android:layout_marginRight="8dp" + android:visibility="gone" android:textSize="14sp"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home_list_item_genuinenews_type.xml b/app/src/main/res/layout/home_list_item_genuinenews_type.xml deleted file mode 100644 index e5c11b14d4..0000000000 --- a/app/src/main/res/layout/home_list_item_genuinenews_type.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home_list_item_navigation.xml b/app/src/main/res/layout/home_list_item_navigation.xml deleted file mode 100644 index 94493130f2..0000000000 --- a/app/src/main/res/layout/home_list_item_navigation.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/mygame_block.xml b/app/src/main/res/layout/mygame_block.xml deleted file mode 100644 index 8381004e62..0000000000 --- a/app/src/main/res/layout/mygame_block.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/app/src/main/res/layout/read_fragment.xml b/app/src/main/res/layout/read_fragment.xml deleted file mode 100644 index 3b43449f21..0000000000 --- a/app/src/main/res/layout/read_fragment.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_ico.xml b/app/src/main/res/layout/reuse_ico.xml deleted file mode 100644 index d4640f0fae..0000000000 --- a/app/src/main/res/layout/reuse_ico.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/splash_item.xml b/app/src/main/res/layout/splash_item.xml deleted file mode 100644 index 18f49111d4..0000000000 --- a/app/src/main/res/layout/splash_item.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/viewimage_item.xml b/app/src/main/res/layout/viewimage_item.xml index ae205c8ace..0bef9f1649 100644 --- a/app/src/main/res/layout/viewimage_item.xml +++ b/app/src/main/res/layout/viewimage_item.xml @@ -1,19 +1,21 @@ + android:layout_height="match_parent"> + - + + + + + + +