From efc19441cda0130dcacf043f868d26daf0ba883c Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Wed, 31 Aug 2016 14:41:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alicloud-android-sdk-httpdns-1.0.6.jar | Bin 12855 -> 0 bytes .../main/java/com/gh/base/AppController.java | 176 ++-- .../main/java/com/gh/base/BaseActivity.java | 36 +- .../com/gh/base/BaseFragmentActivity.java | 31 +- .../com/gh/base/GHPushMessageReceiver.java | 87 +- .../java/com/gh/common/constant/Config.java | 5 +- .../com/gh/common/constant/Constants.java | 1 + .../java/com/gh/common/util/ConcernUtils.java | 160 +-- .../java/com/gh/common/util/DeviceUtils.java | 9 +- .../java/com/gh/common/util/DexUtils.java | 4 +- .../java/com/gh/common/util/DialogUtils.java | 128 +-- .../java/com/gh/common/util/DisplayUtils.java | 4 +- .../com/gh/common/util/DownloadItemUtils.java | 908 +++++++++--------- .../java/com/gh/common/util/FileUtils.java | 5 +- .../com/gh/common/util/GameViewUtils.java | 41 +- .../java/com/gh/common/util/GzipUtils.java | 7 +- .../main/java/com/gh/common/util/HotFix.java | 2 + .../java/com/gh/common/util/HttpdnsUtils.java | 35 - .../java/com/gh/common/util/ImageUtils.java | 46 +- .../java/com/gh/common/util/Installation.java | 5 +- .../java/com/gh/common/util/MD5Utils.java | 1 + .../util/MeasureHeightLayoutManager.java | 5 +- .../java/com/gh/common/util/NetworkUtils.java | 10 +- .../java/com/gh/common/util/NewsUtils.java | 14 +- .../com/gh/common/util/PlatformUtils.java | 11 +- .../java/com/gh/common/util/RSEUtils.java | 6 +- .../java/com/gh/common/util/SpeedUtils.java | 8 +- .../com/gh/common/view/DownloadDialog.java | 4 +- .../common/view/HorizontalItemDecoration.java | 3 +- .../common/view/VerticalItemDecoration.java | 2 +- .../com/gh/gamecenter/ConcernActivity.java | 42 +- .../gamecenter/DownloadManagerActivity.java | 45 +- .../java/com/gh/gamecenter/GameActivity.java | 20 +- .../gamecenter/GameDeatilsNewsActivity.java | 10 +- .../gh/gamecenter/GameDetailsActivity.java | 49 +- .../java/com/gh/gamecenter/MainActivity.java | 15 +- .../gh/gamecenter/NewGameDetailsActivity.java | 34 +- .../java/com/gh/gamecenter/NewsActivity.java | 18 +- .../com/gh/gamecenter/NewsSearchActivity.java | 11 +- .../com/gh/gamecenter/SearchActivity.java | 2 +- .../gh/gamecenter/SplashScreenActivity.java | 2 +- .../com/gh/gamecenter/SuggestionActivity.java | 7 +- .../gh/gamecenter/adapter/SubjectAdapter.java | 75 +- .../gamecenter/download/DownLoadFragment.java | 20 +- .../gamecenter/download/DownloadAdapter.java | 16 +- .../gh/gamecenter/download/UpdateAdapter.java | 18 +- .../gamecenter/download/UpdateFragment.java | 17 +- .../com/gh/gamecenter/game/Game1Fragment.java | 2 +- .../gamecenter/game/Game1FragmentAdapter.java | 20 +- .../com/gh/gamecenter/game/Game2Fragment.java | 2 +- .../gamecenter/game/Game2FragmentAdapter.java | 8 +- .../com/gh/gamecenter/game/Game3Fragment.java | 2 +- .../com/gh/gamecenter/game/GameFragment.java | 32 +- .../gh/gamecenter/game/GameListAdapter.java | 16 +- .../game/NewGame2FragmentAdapter.java | 14 +- .../gamedetails/GameDetailsFragment.java | 3 +- .../gamedetails/GameInformationFragment.java | 16 +- .../gamedetails/GameStrategyFragment.java | 16 +- .../gh/gamecenter/news/NewNews4Fragment.java | 121 +-- .../news/NewNews4FragmentAdapter.java | 4 +- .../com/gh/gamecenter/news/News1Fragment.java | 2 +- .../gamecenter/news/News1FragmentAdapter.java | 20 +- .../com/gh/gamecenter/news/News2Fragment.java | 2 +- .../gamecenter/news/News2FragmentAdapter.java | 6 +- .../com/gh/gamecenter/news/News3Fragment.java | 2 +- .../gamecenter/news/News3FragmentAdapter.java | 4 +- .../com/gh/gamecenter/news/News4Fragment.java | 13 +- .../gamecenter/news/News4FragmentAdapter.java | 6 +- .../com/gh/gamecenter/news/NewsFragment.java | 54 +- .../gamecenter/personal/PersonalFragment.java | 24 +- .../personal/PersonalFragmentAdapter.java | 18 +- .../search/SearchDetailFragment.java | 17 +- .../search/SearchDetailFragmentAdapter.java | 5 +- .../search/SearchGameListFragment.java | 5 +- .../search/SearchGameListFragmentAdapter.java | 5 +- .../themes/classic/FriendListItem.java | 3 +- .../themes/classic/IndicatorView.java | 3 +- .../onekeyshare/themes/classic/XView.java | 3 +- .../themes/classic/land/EditPageLand.java | 5 +- .../themes/classic/port/EditPagePort.java | 5 +- .../main/res/drawable-hdpi/concern_down.png | Bin 1977 -> 3718 bytes app/src/main/res/drawable-hdpi/concern_up.png | Bin 1984 -> 3694 bytes app/src/main/res/drawable-hdpi/share_icon.png | Bin 3130 -> 4910 bytes .../main/res/drawable-hdpi/userinfo_right.png | Bin 2287 -> 3891 bytes .../res/drawable-xhdpi/reuse_blank_hint.png | Bin 0 -> 24770 bytes .../drawable-xhdpi/reuse_network_error.png | Bin 0 -> 24988 bytes .../main/res/drawable-xhdpi/reuse_none.9.png | Bin 68830 -> 0 bytes app/src/main/res/drawable-xhdpi/wifi.png | Bin 14959 -> 0 bytes .../main/res/drawable/actionbar_search_bg.xml | 2 +- app/src/main/res/drawable/border.xml | 2 +- app/src/main/res/drawable/border_blue_bg.xml | 4 +- .../main/res/drawable/border_dialog_bg.xml | 2 +- app/src/main/res/drawable/border_green_bg.xml | 4 +- .../main/res/drawable/border_normal_bg.xml | 10 +- app/src/main/res/drawable/border_red_bg.xml | 2 +- .../main/res/drawable/border_update_bg.xml | 2 +- app/src/main/res/drawable/border_white_bg.xml | 4 +- .../main/res/drawable/cardview_item_style.xml | 4 +- .../drawable/game_item_btn_download_dn.xml | 6 +- .../drawable/game_item_btn_download_up.xml | 2 +- .../game_item_btn_downloading_style.xml | 6 +- .../res/drawable/game_item_btn_launch_dn.xml | 4 +- .../res/drawable/game_item_btn_launch_up.xml | 2 +- .../res/drawable/game_item_btn_pause_dn.xml | 4 +- .../res/drawable/game_item_btn_pause_up.xml | 2 +- .../res/drawable/game_item_btn_plugin_dn.xml | 4 +- .../res/drawable/game_item_btn_plugin_up.xml | 2 +- .../game_item_btn_plugining_style.xml | 6 +- app/src/main/res/drawable/md_back_off.xml | 13 +- app/src/main/res/drawable/news_search_bg.xml | 2 +- app/src/main/res/drawable/news_search_btn.xml | 2 +- .../res/drawable/oval_download_hint_bg.xml | 2 +- app/src/main/res/drawable/oval_gray_bg.xml | 2 +- app/src/main/res/drawable/oval_hint_up.xml | 2 +- app/src/main/res/drawable/oval_orange_bg.xml | 2 +- app/src/main/res/drawable/oval_scarlet_bg.xml | 2 +- app/src/main/res/drawable/oval_search_bg.xml | 2 +- .../res/drawable/progressbar_bg_style.xml | 8 +- .../progressbar_normal_radius_style.xml | 11 +- .../res/drawable/progressbar_normal_style.xml | 8 +- .../res/drawable/reuse_list_item_style.xml | 4 +- .../drawable/reuse_listview_item_style.xml | 6 +- .../drawable/reuse_radiobutton_item_style.xml | 8 - app/src/main/res/drawable/shape.xml | 6 +- .../drawable/ssdk_oks_classic_progressbar.xml | 2 +- .../main/res/drawable/textview_blue_dn.xml | 2 +- .../main/res/drawable/textview_blue_up.xml | 2 +- app/src/main/res/layout/activity_concern.xml | 39 +- .../res/layout/activity_downloadmanager.xml | 12 +- .../main/res/layout/activity_essaydetails.xml | 6 +- app/src/main/res/layout/activity_game.xml | 12 +- .../main/res/layout/activity_game_news.xml | 4 +- .../main/res/layout/activity_gamedetails.xml | 34 +- .../res/layout/activity_gamedetails_news.xml | 33 +- app/src/main/res/layout/activity_main.xml | 6 +- .../res/layout/activity_new_gamedetails.xml | 6 +- app/src/main/res/layout/activity_plugin.xml | 4 +- app/src/main/res/layout/activity_setting.xml | 30 +- app/src/main/res/layout/activity_splash.xml | 2 +- app/src/main/res/layout/activity_subject.xml | 4 +- app/src/main/res/layout/activity_suggest.xml | 4 +- .../main/res/layout/activity_viewimage.xml | 2 +- .../res/layout/app_update_hint_dialog.xml | 6 +- .../main/res/layout/app_updating_dialog.xml | 8 +- .../main/res/layout/common_alertdialog.xml | 2 +- app/src/main/res/layout/concern_item.xml | 4 +- app/src/main/res/layout/concern_rv_item.xml | 2 +- app/src/main/res/layout/dialog_font_size.xml | 8 +- app/src/main/res/layout/downloadmanager.xml | 12 +- .../main/res/layout/downloadmanager_item.xml | 10 +- .../res/layout/downloadmanager_item_head.xml | 4 +- .../res/layout/downloadmanager_rv_item.xml | 4 +- .../main/res/layout/essaydetails_item_top.xml | 6 +- .../res/layout/fm_downloadmanager_item.xml | 2 +- app/src/main/res/layout/fm_search.xml | 37 +- app/src/main/res/layout/fm_update_item.xml | 2 +- app/src/main/res/layout/fragment_news.xml | 14 +- app/src/main/res/layout/fragment_news3.xml | 20 +- app/src/main/res/layout/fragment_news4.xml | 16 +- app/src/main/res/layout/fragment_original.xml | 4 +- .../main/res/layout/game_download_dialog.xml | 4 +- .../main/res/layout/game_download_item.xml | 8 +- .../res/layout/game_news_type_list_item.xml | 2 +- app/src/main/res/layout/game_normal_item.xml | 12 +- app/src/main/res/layout/game_test_item.xml | 10 +- app/src/main/res/layout/gamedetails.xml | 2 +- .../layout/gamedetails_attention_dialog.xml | 8 +- .../res/layout/gamedetails_item_intro.xml | 8 +- .../res/layout/gamedetails_item_loading.xml | 2 +- .../res/layout/gamedetails_item_news_item.xml | 6 +- .../layout/gamedetails_item_newservice.xml | 2 +- .../layout/gamedetails_item_newsstrategy.xml | 8 +- .../res/layout/gamedetails_item_primatte.xml | 14 +- .../layout/gamedetails_item_screenshot.xml | 8 +- .../layout/gamedetails_newservice_item.xml | 2 +- .../res/layout/gamedetails_plugin_item.xml | 2 +- .../res/layout/gamedetails_rv_item_top.xml | 2 +- .../layout/gameinformaiton_item_search.xml | 8 +- app/src/main/res/layout/gameinformation.xml | 2 +- .../main/res/layout/gameinformation_item.xml | 6 +- .../layout/gameinformation_select_item.xml | 2 +- app/src/main/res/layout/gamestrategy.xml | 2 +- app/src/main/res/layout/gameupdate.xml | 14 +- app/src/main/res/layout/gameupdate_item.xml | 10 +- .../main/res/layout/gameupdate_item_top.xml | 8 +- app/src/main/res/layout/home3_fragment.xml | 20 +- .../res/layout/home3_fragment_function.xml | 14 +- app/src/main/res/layout/home_actionbar.xml | 4 +- .../main/res/layout/home_consolegame_item.xml | 12 +- .../main/res/layout/home_game_head_item.xml | 9 +- .../main/res/layout/home_game_normal_item.xml | 10 +- .../main/res/layout/home_game_test_item.xml | 12 +- .../layout/home_list_item_gamenormal_type.xml | 10 +- .../layout/home_list_item_newsimage_type.xml | 4 +- .../layout/home_list_item_newsnormal_type.xml | 4 +- app/src/main/res/layout/mygame_item.xml | 8 +- .../main/res/layout/mygame_platform_item.xml | 8 +- .../res/layout/news_list_item_category.xml | 2 +- .../layout/news_list_item_gamenormal_type.xml | 2 +- .../main/res/layout/notification_meizu.xml | 2 +- .../main/res/layout/notification_xiaomi.xml | 2 +- .../res/layout/personal_footer_none_head.xml | 17 +- ...plugin1_autoscrollviewpager_viewholder.xml | 2 +- app/src/main/res/layout/plugin1_fragment.xml | 4 +- .../res/layout/plugin_container_fragments.xml | 12 +- .../main/res/layout/primatte_details_item.xml | 2 +- .../main/res/layout/refresh_footerview.xml | 2 +- app/src/main/res/layout/reuse_actionbar.xml | 4 +- .../main/res/layout/reuse_no_connection.xml | 20 +- app/src/main/res/layout/reuse_nodata_skip.xml | 29 + app/src/main/res/layout/reuse_none_data.xml | 24 + app/src/main/res/layout/reuse_none_date.xml | 17 - app/src/main/res/layout/search_actionbar.xml | 4 +- .../layout/search_history_delete_dialog.xml | 8 +- app/src/main/res/layout/set_wait_dialog.xml | 4 +- .../res/layout/setting_disclaimer_dialog.xml | 6 +- app/src/main/res/layout/viewimage_item.xml | 2 +- app/src/main/res/values-w820dp/dimens.xml | 6 - app/src/main/res/values/colors.xml | 41 +- 219 files changed, 1738 insertions(+), 1873 deletions(-) delete mode 100644 app/libs/alicloud-android-sdk-httpdns-1.0.6.jar delete mode 100644 app/src/main/java/com/gh/common/util/HttpdnsUtils.java create mode 100644 app/src/main/res/drawable-xhdpi/reuse_blank_hint.png create mode 100644 app/src/main/res/drawable-xhdpi/reuse_network_error.png delete mode 100644 app/src/main/res/drawable-xhdpi/reuse_none.9.png delete mode 100644 app/src/main/res/drawable-xhdpi/wifi.png delete mode 100644 app/src/main/res/drawable/reuse_radiobutton_item_style.xml create mode 100644 app/src/main/res/layout/reuse_nodata_skip.xml create mode 100644 app/src/main/res/layout/reuse_none_data.xml delete mode 100644 app/src/main/res/layout/reuse_none_date.xml delete mode 100644 app/src/main/res/values-w820dp/dimens.xml diff --git a/app/libs/alicloud-android-sdk-httpdns-1.0.6.jar b/app/libs/alicloud-android-sdk-httpdns-1.0.6.jar deleted file mode 100644 index da9bda3804bd1f9bb9adc571b57297875311b89e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12855 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 objectMap = new ArrayMap<>(); - private static ArrayMap objectMap = new ArrayMap(); + private RequestQueue mRequestQueue; + + private ArrayList list = new ArrayList<>(); + + private boolean isFinish = false; + + @Override + public void onCreate() { + super.onCreate(); + +// 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"); + +// SharedPreferences sp = this.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); +// File directory = new File(this.getFilesDir().getAbsolutePath() + File.separator + "hotfix"); +// if (directory.exists()) { +// File[] files = directory.listFiles(); +// for (File file : files) { +// Utils.log("dex file = " + file.getName()); +// String clazz = sp.getString(file.getName(), null); +// if (clazz != null) { +// dexPath = new File(getDir("dex", Context.MODE_PRIVATE), file.getName()); +// DexUtils.prepareDex(this, dexPath, file); +// HotFix.patch(this, dexPath.getAbsolutePath(), clazz); +// Utils.log(file.getName() + " patch success"); +// } +// } +// } + + DataUtils.init(this); + + AppUncaHandler uncaHandler = new AppUncaHandler(this); + Thread.setDefaultUncaughtExceptionHandler(uncaHandler); + mInstance = this; + + // 注册push服务,注册成功后会向GHPushMessageReceiver发送广播 + // 可以从GHPushMessageReceiver的onCommandResult方法中MiPushCommandMessage对象参数中获取注册信息 + if (shouldInit()) { + MiPushClient.registerPush(this, APP_ID, APP_KEY); + } + + LoggerInterface newLogger = new LoggerInterface() { + + @Override + public void setTag(String tag) { + // ignore + } + + @Override + public void log(String content, Throwable t) { + Log.d(TAG, content, t); + } + + @Override + public void log(String content) { + Log.d(TAG, content); + } + }; + Logger.setLogger(this, newLogger); + if (handler == null) { + handler = new PushHandler(); + } + + } public static void put(String key, Object object) { objectMap.put(key, object); @@ -62,10 +117,6 @@ public class AppController extends Application { objectMap.remove(key); } - private ArrayList list = new ArrayList(); - - private boolean isFinish = false; - /** * Activity关闭时,删除Activity列表中的Activity对象 */ @@ -100,67 +151,6 @@ public class AppController extends Application { Process.killProcess(Process.myPid()); } - @Override - public void onCreate() { - super.onCreate(); - -// 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"); - - SharedPreferences sp = this.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); - File directory = new File(this.getFilesDir().getAbsolutePath() + File.separator + "hotfix"); - if (directory.exists()) { - File[] files = directory.listFiles(); - for (File file : files) { - Utils.log("dex file = " + file.getName()); - String clazz = sp.getString(file.getName(), null); - if (clazz != null) { - dexPath = new File(getDir("dex", Context.MODE_PRIVATE), file.getName()); - DexUtils.prepareDex(this, dexPath, file); - HotFix.patch(this, dexPath.getAbsolutePath(), clazz); - Utils.log(file.getName() + " patch success"); - } - } - } - - DataUtils.init(this); - - AppUncaHandler uncaHandler = new AppUncaHandler(this); - Thread.setDefaultUncaughtExceptionHandler(uncaHandler); - mInstance = this; - - // 注册push服务,注册成功后会向GHPushMessageReceiver发送广播 - // 可以从GHPushMessageReceiver的onCommandResult方法中MiPushCommandMessage对象参数中获取注册信息 - if (shouldInit()) { - MiPushClient.registerPush(this, APP_ID, APP_KEY); - } - - LoggerInterface newLogger = new LoggerInterface() { - - @Override - public void setTag(String tag) { - // ignore - } - - @Override - public void log(String content, Throwable t) { - Log.d(TAG, content, t); - } - - @Override - public void log(String content) { - Log.d(TAG, content); - } - }; - Logger.setLogger(this, newLogger); - if (handler == null) { - handler = new PushHandler(this); - } - - } - public static String getProcessName(Context cxt, int pid) { ActivityManager am = (ActivityManager) cxt .getSystemService(Context.ACTIVITY_SERVICE); @@ -180,19 +170,6 @@ public class AppController extends Application { return mInstance; } - public void addRequest(Request request) { - if (mRequestQueue == null) { - mRequestQueue = Volley.newRequestQueue(getApplicationContext()); - } - mRequestQueue.add(request); - } - - public void cancleRequest(Object tag){ - if (mRequestQueue != null) { - mRequestQueue.cancelAll(tag); - } - } - public static void addToRequestQueue(Request request) { request.setTag(TAG); getInstance().addRequest(request); @@ -210,7 +187,7 @@ public class AppController extends Application { } addToRequestQueue(request, tag); } - + public static void addToRequestQueue(Request request, Class clazz) { String tag = null; if (clazz != null) { @@ -224,7 +201,7 @@ public class AppController extends Application { getInstance().cancleRequest(tag); } } - + public static void canclePendingRequests(Object obj) { if (obj != null) { getInstance().cancleRequest(obj.getClass().getSimpleName()); @@ -236,6 +213,19 @@ public class AppController extends Application { getInstance().cancleRequest(clazz.getSimpleName()); } } + + public void addRequest(Request request) { + if (mRequestQueue == null) { + mRequestQueue = Volley.newRequestQueue(getApplicationContext()); + } + mRequestQueue.add(request); + } + + public void cancleRequest(Object tag){ + if (mRequestQueue != null) { + mRequestQueue.cancelAll(tag); + } + } private boolean shouldInit() { ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)); diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index c2b13f22b8..58c49dcbde 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -5,7 +5,6 @@ import android.app.Activity; import android.content.Context; import android.os.Build; import android.os.Bundle; -import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; @@ -37,17 +36,14 @@ import onekeyshare.OnekeyShare; import onekeyshare.themes.classic.PlatformPage; public class BaseActivity extends Activity { - private String LOG = this.getClass().getName(); - private boolean LOG_ON = true; + + private SystemBarTintManager tintManager; private boolean isPause; - - private SystemBarTintManager tintManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - AppLog("onCreate"); Utils.log(this.getClass().getSimpleName()); AppController.getInstance().addActivity(this); EventBus.getDefault().register(this); @@ -65,7 +61,7 @@ public class BaseActivity extends Activity { setTranslucentStatus(true); tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); - tintManager.setStatusBarTintResource(R.color.theme_colors); + tintManager.setStatusBarTintResource(R.color.theme); SystemBarConfig config = tintManager.getConfig(); contentView.setPadding(0, config.getPixelInsetTop(false), 0, config.getPixelInsetBottom()); @@ -120,12 +116,6 @@ public class BaseActivity extends Activity { AppController.getInstance().removeActivity(this); } - public void AppLog(String str) { - if (LOG_ON) { - Log.i(LOG, str); - } - } - public void toast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } @@ -231,35 +221,15 @@ public class BaseActivity extends Activity { @Override protected void onPause() { super.onPause(); - AppLog("onPause"); DataUtils.onPause(this); isPause = true; } - @Override - protected void onRestart() { - super.onRestart(); - AppLog("onRestart"); - } - @Override protected void onResume() { super.onResume(); - AppLog("onResume"); DataUtils.onResume(this); isPause = false; } - @Override - protected void onStart() { - super.onStart(); - AppLog("onStart"); - } - - @Override - protected void onStop() { - super.onStop(); - AppLog("onStop"); - } - } diff --git a/app/src/main/java/com/gh/base/BaseFragmentActivity.java b/app/src/main/java/com/gh/base/BaseFragmentActivity.java index d5d475f025..1f4c6eb5b3 100644 --- a/app/src/main/java/com/gh/base/BaseFragmentActivity.java +++ b/app/src/main/java/com/gh/base/BaseFragmentActivity.java @@ -5,7 +5,6 @@ import android.content.Context; import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentActivity; -import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; @@ -37,15 +36,12 @@ import onekeyshare.OnekeyShare; import onekeyshare.themes.classic.PlatformPage; public class BaseFragmentActivity extends FragmentActivity { - private String LOG = this.getClass().getName(); - private boolean LOG_ON = false; private boolean isPause; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - AppLog("onCreate"); Utils.log(this.getClass().getSimpleName()); AppController.getInstance().addActivity(this); EventBus.getDefault().register(this); @@ -63,7 +59,7 @@ public class BaseFragmentActivity extends FragmentActivity { setTranslucentStatus(true); SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); - tintManager.setStatusBarTintResource(R.color.theme_colors); + tintManager.setStatusBarTintResource(R.color.theme); SystemBarConfig config = tintManager.getConfig(); contentView.setPadding(0, config.getPixelInsetTop(false), 0, config.getPixelInsetBottom()); @@ -113,12 +109,6 @@ public class BaseFragmentActivity extends FragmentActivity { AppController.getInstance().removeActivity(this); } - public void AppLog(String str) { - if (LOG_ON) { - Log.i(LOG, str); - } - } - public void toast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } @@ -224,34 +214,15 @@ public class BaseFragmentActivity extends FragmentActivity { @Override protected void onPause() { super.onPause(); - AppLog("onPause"); DataUtils.onPause(this); isPause = true; } - @Override - protected void onRestart() { - super.onRestart(); - AppLog("onRestart"); - } - @Override protected void onResume() { super.onResume(); - AppLog("onResume"); DataUtils.onResume(this); isPause = false; } - @Override - protected void onStart() { - super.onStart(); - AppLog("onStart"); - } - - @Override - protected void onStop() { - super.onStop(); - AppLog("onStop"); - } } diff --git a/app/src/main/java/com/gh/base/GHPushMessageReceiver.java b/app/src/main/java/com/gh/base/GHPushMessageReceiver.java index c6cc50674e..56c3c99cca 100644 --- a/app/src/main/java/com/gh/base/GHPushMessageReceiver.java +++ b/app/src/main/java/com/gh/base/GHPushMessageReceiver.java @@ -1,6 +1,5 @@ package com.gh.base; -import android.annotation.SuppressLint; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -64,7 +63,6 @@ import java.util.Locale; public class GHPushMessageReceiver extends PushMessageReceiver { private String mRegId; - private long mResultCode = -1; private String mReason; private String mCommand; private String mMessage; @@ -74,6 +72,8 @@ public class GHPushMessageReceiver extends PushMessageReceiver { private String mStartTime; private String mEndTime; + private long mResultCode = -1; + @Override public void onReceivePassThroughMessage(Context context, MiPushMessage message) { @@ -86,15 +86,12 @@ public class GHPushMessageReceiver extends PushMessageReceiver { Utils.log("channel = " + channel); // 1判断渠道号是否一致或是否为ALL String TD_CHANNEL_ID = (String) PackageUtils.getMetaData(context, context.getPackageName(), "TD_CHANNEL_ID"); - if ("ALL".equals(channel) - || TD_CHANNEL_ID - .equalsIgnoreCase(channel)) { + if ("ALL".equals(channel) || channel.equalsIgnoreCase(TD_CHANNEL_ID)) { String type = jsonObject.getString("type"); Utils.log("type = " + type); if ("NEWS".equals(type)) { // 新闻推送 - JSONArray jsonArray = jsonObject - .getJSONArray("package"); + JSONArray jsonArray = jsonObject.getJSONArray("package"); ArrayMap map = getInstalledMapFromLocal(context); for (int i = 0; i < jsonArray.length(); i++) { Boolean b = map.get(jsonArray.getString(i)); @@ -119,14 +116,11 @@ public class GHPushMessageReceiver extends PushMessageReceiver { if (gh_version != null) { gh_version = gh_version.substring(2); // 判断gh_version是否相同 - if (gh_version.equals(apk - .getString("gh_version"))) { + if (gh_version.equals(apk.getString("gh_version"))) { // 判断version是否相同 - String version = PackageUtils - .getVersionByPackage(context, - packageName); - if (version.equals(apk - .getString("version"))) { + String version = PackageUtils.getVersionByPackage( + context, packageName); + if (apk.getString("version").equals(version)) { // 版本相同,无需显示插件更新,继续查看是否有可更新的游戏包 continue; } @@ -147,10 +141,8 @@ public class GHPushMessageReceiver extends PushMessageReceiver { e.printStackTrace(); } - Log.v(AppController.TAG, "onReceivePassThroughMessage is called. " - + message.toString()); - String log = context.getString(R.string.recv_passthrough_message, - message.getContent()); + Log.v(AppController.TAG, "onReceivePassThroughMessage is called. " + message.toString()); + String log = context.getString(R.string.recv_passthrough_message, message.getContent()); if (!TextUtils.isEmpty(message.getTopic())) { mTopic = message.getTopic(); @@ -163,8 +155,7 @@ public class GHPushMessageReceiver extends PushMessageReceiver { AppController.getHandler().sendMessage(msg); } - private void showNotification(Context context, JSONObject jsonObject, int id) - throws JSONException { + private void showNotification(Context context, JSONObject jsonObject, int id) throws JSONException { Intent intent = new Intent(); intent.setAction("com.gh.gamecenter.NOTIFICATION"); intent.putExtra("notifyId", id); @@ -185,7 +176,8 @@ public class GHPushMessageReceiver extends PushMessageReceiver { RemoteViews remoteViews = null; if (Build.MANUFACTURER.equals("Meizu") - && (Build.MODEL.startsWith("m") || Build.MODEL.startsWith("MX"))) { + && (Build.MODEL.startsWith("m") + || Build.MODEL.startsWith("MX"))) { remoteViews = new RemoteViews(context.getPackageName(), R.layout.notification_meizu); SimpleDateFormat format = new SimpleDateFormat("HH:mm", @@ -193,8 +185,8 @@ public class GHPushMessageReceiver extends PushMessageReceiver { remoteViews.setTextViewText(R.id.time, format.format(new Date())); } else if (Build.MANUFACTURER.equals("Xiaomi") && (Build.MODEL.startsWith("MI") - || Build.MODEL.startsWith("HM") || Build.MODEL - .startsWith("Redmi"))) { + || Build.MODEL.startsWith("HM") + || Build.MODEL.startsWith("Redmi"))) { // 小米系统 remoteViews = new RemoteViews(context.getPackageName(), R.layout.notification_xiaomi); @@ -304,8 +296,7 @@ public class GHPushMessageReceiver extends PushMessageReceiver { @Override public void onCommandResult(Context context, MiPushCommandMessage message) { - Log.v(AppController.TAG, - "onCommandResult is called. " + message.toString()); + Log.v(AppController.TAG, "onCommandResult is called. " + message.toString()); String command = message.getCommand(); List arguments = message.getCommandArguments(); String cmdArg1 = ((arguments != null && arguments.size() > 0) ? arguments @@ -325,60 +316,49 @@ public class GHPushMessageReceiver extends PushMessageReceiver { mAlias = cmdArg1; log = context.getString(R.string.set_alias_success, mAlias); } else { - log = context.getString(R.string.set_alias_fail, - message.getReason()); + log = context.getString(R.string.set_alias_fail, message.getReason()); } } else if (MiPushClient.COMMAND_UNSET_ALIAS.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mAlias = cmdArg1; log = context.getString(R.string.unset_alias_success, mAlias); } else { - log = context.getString(R.string.unset_alias_fail, - message.getReason()); + log = context.getString(R.string.unset_alias_fail, message.getReason()); } } else if (MiPushClient.COMMAND_SET_ACCOUNT.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mAccount = cmdArg1; log = context.getString(R.string.set_account_success, mAccount); } else { - log = context.getString(R.string.set_account_fail, - message.getReason()); + log = context.getString(R.string.set_account_fail, message.getReason()); } } else if (MiPushClient.COMMAND_UNSET_ACCOUNT.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mAccount = cmdArg1; - log = context.getString(R.string.unset_account_success, - mAccount); + log = context.getString(R.string.unset_account_success, mAccount); } else { - log = context.getString(R.string.unset_account_fail, - message.getReason()); + log = context.getString(R.string.unset_account_fail, message.getReason()); } } else if (MiPushClient.COMMAND_SUBSCRIBE_TOPIC.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mTopic = cmdArg1; - log = context.getString(R.string.subscribe_topic_success, - mTopic); + log = context.getString(R.string.subscribe_topic_success, mTopic); } else { - log = context.getString(R.string.subscribe_topic_fail, - message.getReason()); + log = context.getString(R.string.subscribe_topic_fail, message.getReason()); } } else if (MiPushClient.COMMAND_UNSUBSCRIBE_TOPIC.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { - log = context.getString(R.string.unsubscribe_topic_success, - mTopic); + log = context.getString(R.string.unsubscribe_topic_success, mTopic); } else { - log = context.getString(R.string.unsubscribe_topic_fail, - message.getReason()); + log = context.getString(R.string.unsubscribe_topic_fail, message.getReason()); } } else if (MiPushClient.COMMAND_SET_ACCEPT_TIME.equals(command)) { if (message.getResultCode() == ErrorCode.SUCCESS) { mStartTime = cmdArg1; mEndTime = cmdArg2; - log = context.getString(R.string.set_accept_time_success, - mStartTime, mEndTime); + log = context.getString(R.string.set_accept_time_success, mStartTime, mEndTime); } else { - log = context.getString(R.string.set_accept_time_fail, - message.getReason()); + log = context.getString(R.string.set_accept_time_fail, message.getReason()); } } else { log = message.getReason(); @@ -415,26 +395,19 @@ public class GHPushMessageReceiver extends PushMessageReceiver { AppController.getHandler().sendMessage(msg); } - @SuppressLint("SimpleDateFormat") public static String getSimpleDate() { - return new SimpleDateFormat("MM-dd hh:mm:ss").format(new Date()); + return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault()).format(new Date()); } public static class PushHandler extends Handler { - private Context context; - - public PushHandler(Context context) { - this.context = context; - } - @Override public void handleMessage(Message msg) { String s = (String) msg.obj; - if (!TextUtils.isEmpty(s)) { - // Toast.makeText(context, s, Toast.LENGTH_LONG).show(); + Utils.log(getSimpleDate() + " PushHandler:" + s); } } + } } diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index 78626f0391..89358d5c17 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -5,12 +5,9 @@ import com.gh.gamecenter.SplashScreenActivity; public final class Config { - // test host dev.ghzhushou.com/api public static final String HOST = "http://api.ghzhushou.com/"; -// public static final String HOST = "http://115.28.145.16:9001/"; - public static final String PREFERENCE = "ghzhushou"; -// public static final boolean isShow = true; public static final boolean isShow = SplashScreenActivity.isShow; + } diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index f07e542d0a..d40cc70087 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -38,4 +38,5 @@ public class Constants { public static final int SEARCH_CD = 5 * 60 * 1000; //评论 cd间隔 public static final int COMMENT_CD = 60 * 1000; + } diff --git a/app/src/main/java/com/gh/common/util/ConcernUtils.java b/app/src/main/java/com/gh/common/util/ConcernUtils.java index bb8fcfb24c..0ddfcb6ab3 100644 --- a/app/src/main/java/com/gh/common/util/ConcernUtils.java +++ b/app/src/main/java/com/gh/common/util/ConcernUtils.java @@ -11,7 +11,6 @@ import com.gh.gamecenter.volley.extended.ConcernJsonArrayExtendedRequest; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import org.json.JSONArray; -import org.json.JSONException; import java.util.UUID; @@ -19,102 +18,117 @@ import java.util.UUID; * Created by khy on 2016/8/24. */ public class ConcernUtils { - public static void LoadConcernData(final String url, final DownJsonListener listener){ + + public static void loadConcernData(final String url, final DownJsonListener listener){ new Thread(new Runnable() { @Override public void run() { - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url, new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - if (listener != null){ - listener.downSucced(response.toString()); - } - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - if (listener != null){ - listener.downFailed(); - } - } - }); + JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url, + new Response.Listener() { + @Override + public void onResponse(JSONArray response) { + if (listener != null){ + listener.downSucced(response.toString()); + } + } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + if (listener != null){ + listener.downFailed(); + } + } + }); request.setShouldCache(false); AppController.addToRequestQueue(request); } }).start(); } - public static void PostConcernGameId(final String postData, final String postUrl,final DownJsonListener listener){ - new Thread(new Runnable() { + public static void postConcernGameId(final String gameId, final String postUrl, final DownJsonListener listener){ + new Thread(new Runnable() { @Override public void run() { - JSONArray jsonArray = null; - try { - jsonArray = new JSONArray(postData); - } catch (JSONException e) { - } - ConcernJsonArrayExtendedRequest request = new ConcernJsonArrayExtendedRequest(Request.Method.POST, postUrl, jsonArray, new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - listener.downSucced("关注成功"); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - listener.downFailed(); - } - }); + JSONArray data = new JSONArray(); + data.put(gameId); + + ConcernJsonArrayExtendedRequest request = new ConcernJsonArrayExtendedRequest( + Request.Method.POST, postUrl, data, + new Response.Listener() { + @Override + public void onResponse(JSONArray response) { + if (listener != null) { + listener.downSucced("关注成功"); + } + } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + if (listener != null) { + listener.downFailed(); + } + } + }); request.setShouldCache(false); AppController.addToRequestQueue(request); } }).start(); } - public static void DeleteConcernData(final String url, final DownJsonListener listener){ - final JSONArray jsonArray = new JSONArray(); + + public static void deleteConcernData(final String url, final DownJsonListener listener){ new Thread(new Runnable() { @Override public void run() { - ConcernJsonArrayExtendedRequest request = new ConcernJsonArrayExtendedRequest(Request.Method.DELETE, url, jsonArray, new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - listener.downSucced("删除成功"); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - listener.downFailed(); - } - }); + ConcernJsonArrayExtendedRequest request = new ConcernJsonArrayExtendedRequest( + Request.Method.DELETE, url, new JSONArray(), + new Response.Listener() { + @Override + public void onResponse(JSONArray response) { + if (listener != null) { + listener.downSucced("删除成功"); + } + } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + if (listener != null) { + listener.downFailed(); + } + } + }); request.setShouldCache(false); AppController.addToRequestQueue(request); } }).start(); - } - public static void UpdateConcernData(final String url,String updateData,final DownJsonListener listener){ - JSONArray jsonArray = null; - try { - jsonArray = new JSONArray(updateData); - } catch (JSONException e) { - e.printStackTrace(); - } - final JSONArray finalJsonArray = jsonArray; + + public static void updateConcernData(final String url, final JSONArray data, final DownJsonListener listener){ new Thread(new Runnable() { @Override public void run() { - ConcernJsonArrayExtendedRequest request = new ConcernJsonArrayExtendedRequest(Request.Method.PUT, url, finalJsonArray, new Response.Listener() { - @Override - public void onResponse(JSONArray response) { - listener.downSucced("跟新设备关注成功"); - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - listener.downFailed(); - } - }); + ConcernJsonArrayExtendedRequest request = new ConcernJsonArrayExtendedRequest( + Request.Method.PUT, url, data, + new Response.Listener() { + @Override + public void onResponse(JSONArray response) { + if (listener != null) { + listener.downSucced("跟新设备关注成功"); + } + } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + if (listener != null) { + listener.downFailed(); + } + } + }); request.setShouldCache(false); AppController.addToRequestQueue(request); } @@ -123,16 +137,15 @@ public class ConcernUtils { } public interface DownJsonListener { - void downSucced(String str); void downFailed(); - } - //获取设备号ID - public static String UUID(Context context){ + + // 获取设备号ID + public static String uuid(Context context){ final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - final String tmDevice, tmSerial, tmPhone, androidId; + final String tmDevice, tmSerial, androidId; tmDevice = "" + tm.getDeviceId(); tmSerial = "" + tm.getSimSerialNumber(); androidId = "" + android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); @@ -140,5 +153,6 @@ public class ConcernUtils { UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode()); return deviceUuid.toString(); } + } diff --git a/app/src/main/java/com/gh/common/util/DeviceUtils.java b/app/src/main/java/com/gh/common/util/DeviceUtils.java index 62b8767840..a9b759b0d5 100644 --- a/app/src/main/java/com/gh/common/util/DeviceUtils.java +++ b/app/src/main/java/com/gh/common/util/DeviceUtils.java @@ -15,14 +15,16 @@ public class DeviceUtils { StringBuffer buffer = new StringBuffer(); String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); if (!TextUtils.isEmpty(imei)) { - buffer.append("imei=" + imei); + buffer.append("imei="); + buffer.append(imei); } String android_id = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); if (!TextUtils.isEmpty(android_id)) { if (buffer.length() != 0) { buffer.append(","); } - buffer.append("android_id=" + android_id); + buffer.append("android_id="); + buffer.append(android_id); } WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); String mac = wm.getConnectionInfo().getMacAddress(); @@ -30,7 +32,8 @@ public class DeviceUtils { if (buffer.length() != 0) { buffer.append(","); } - buffer.append("mac=" + mac); + buffer.append("mac="); + buffer.append(mac); } return buffer.toString(); } diff --git a/app/src/main/java/com/gh/common/util/DexUtils.java b/app/src/main/java/com/gh/common/util/DexUtils.java index c7abf2a848..9b75602069 100644 --- a/app/src/main/java/com/gh/common/util/DexUtils.java +++ b/app/src/main/java/com/gh/common/util/DexUtils.java @@ -17,6 +17,7 @@ import java.io.OutputStream; * Created by sunpengfei on 15/11/4. */ public class DexUtils { + private static final int BUF_SIZE = 2048; public static boolean prepareAssetsDex(Context context, File dexInternalStoragePath, String dex_file) { @@ -53,7 +54,7 @@ public class DexUtils { } } - public static boolean prepareDex(Context context, File dexInternalStoragePath, File dex_file) { + public static boolean prepareDex(File dexInternalStoragePath, File dex_file) { BufferedInputStream bis = null; OutputStream dexWriter = null; @@ -86,4 +87,5 @@ public class DexUtils { return false; } } + } diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index e8f486f33c..253653f7fe 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -36,29 +36,30 @@ public class DialogUtils { isShowHijackDialog = true; final Dialog dialog = new Dialog(context); - View view = View.inflate(context, - R.layout.common_alertdialog, null); - TextView title = (TextView) view - .findViewById(R.id.alertdialog_title); - title.setText("警告"); - TextView content = (TextView) view - .findViewById(R.id.alertdialog_content); + View view = View.inflate(context, R.layout.common_alertdialog, null); + // 标题 + TextView title = (TextView) view.findViewById(R.id.alertdialog_title); + title.setText("警告"); + + // 内容 + TextView content = (TextView) view.findViewById(R.id.alertdialog_content); content.setText("您当前网络环境异常,下载地址已被替换(网络劫持),请更换网络环境进行下载。"); - TextView cancel = (TextView) view - .findViewById(R.id.alertdialog_cannel); + // 取消按钮 + TextView cancel = (TextView) view.findViewById(R.id.alertdialog_cannel); cancel.setText("取消"); - cancel.setOnClickListener(new OnClickListener() { + cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); - TextView confirem = (TextView) view - .findViewById(R.id.alertdialog_confirm); + + // 确定按钮 + TextView confirem = (TextView) view.findViewById(R.id.alertdialog_confirm); confirem.setText("确定"); - confirem.setOnClickListener(new OnClickListener() { + confirem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 跳转wifi管理界面 @@ -67,6 +68,7 @@ public class DialogUtils { dialog.dismiss(); } }); + dialog.setOnDismissListener(new Dialog.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { @@ -87,28 +89,30 @@ public class DialogUtils { isShowDeleteDialog = true; final Dialog dialog = new Dialog(context); - View view = View.inflate(context, - R.layout.search_history_delete_dialog, null); + View view = View.inflate(context, R.layout.search_history_delete_dialog, null); + + // 标题 TextView title = (TextView) view.findViewById(R.id.delete_dialog_title); title.setText("卸载"); - TextView content = (TextView) view - .findViewById(R.id.delete_dialog_message); + // 内容 + TextView content = (TextView) view.findViewById(R.id.delete_dialog_message); content.setText("您已安装了官方原版,该版本与插件版本冲突,是否卸载官方原版?"); - TextView cancel = (TextView) view - .findViewById(R.id.delete_dialog_cancel); + // 取消按钮 + TextView cancel = (TextView) view.findViewById(R.id.delete_dialog_cancel); cancel.setText("忽略"); - cancel.setOnClickListener(new OnClickListener() { + cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); - TextView confirem = (TextView) view - .findViewById(R.id.delete_dialog_confirm); + + // 确定按钮 + TextView confirem = (TextView) view.findViewById(R.id.delete_dialog_confirm); confirem.setText("卸载"); - confirem.setOnClickListener(new OnClickListener() { + confirem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); @@ -117,6 +121,7 @@ public class DialogUtils { } } }); + dialog.setOnDismissListener(new Dialog.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { @@ -131,24 +136,27 @@ public class DialogUtils { public static void showWarningDialog(Context context, String msg, final ConfiremListener listener) { final Dialog dialog = new Dialog(context); View view = View.inflate(context, R.layout.common_alertdialog, null); - TextView title = (TextView) view - .findViewById(R.id.alertdialog_title); - title.setText("下载提示"); - TextView content = (TextView) view.findViewById(R.id.alertdialog_content); + // 标题 + TextView title = (TextView) view.findViewById(R.id.alertdialog_title); + title.setText("下载提示"); + + // 内容 + TextView content = (TextView) view.findViewById(R.id.alertdialog_content); content.setText(msg); - TextView cancel = (TextView) view - .findViewById(R.id.alertdialog_cannel); + // 取消按钮 + TextView cancel = (TextView) view.findViewById(R.id.alertdialog_cannel); cancel.setText("取消"); - cancel.setOnClickListener(new OnClickListener() { + cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); - TextView confirem = (TextView) view - .findViewById(R.id.alertdialog_confirm); + + // 确定按钮 + TextView confirem = (TextView) view.findViewById(R.id.alertdialog_confirm); confirem.setText("继续"); confirem.setOnClickListener(new View.OnClickListener() { @Override @@ -159,6 +167,7 @@ public class DialogUtils { } } }); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); dialog.show(); @@ -171,19 +180,24 @@ public class DialogUtils { public static void showSuccessDialog(Context context) { final Dialog dialog = new Dialog(context); View view = View.inflate(context, R.layout.gamedetails_attention_dialog, null); + TextView title = (TextView) view.findViewById(R.id.dialog_title); title.setText("关注成功"); + + TextView message = (TextView) view.findViewById(R.id.dialog_message); + message.setText("游戏的最新动态消息会优先提醒您,包括攻略、资讯、开服信息、开测信息以及最新的插件。"); + + view.findViewById(R.id.dialog_rl_cancel).setVisibility(View.GONE); + TextView confirm = (TextView) view.findViewById(R.id.dialog_confirm); confirm.setText("我知道了"); - confirm.setOnClickListener(new OnClickListener() { + confirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); - TextView message = (TextView) view.findViewById(R.id.dialog_message); - message.setText("游戏的最新动态消息会优先提醒您,包括攻略、资讯、开服信息、开测信息以及最新的插件。"); - view.findViewById(R.id.dialog_rl_cancel).setVisibility(View.GONE); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); dialog.show(); @@ -192,21 +206,24 @@ public class DialogUtils { public static void showCancelDialog(Context context, final ConfiremListener listener) { final Dialog dialog = new Dialog(context); View view = View.inflate(context, R.layout.gamedetails_attention_dialog, null); + TextView title = (TextView) view.findViewById(R.id.dialog_title); title.setText("取消关注"); + + TextView message = (TextView) view.findViewById(R.id.dialog_message); + Spanned content = Html.fromHtml("取消关注游戏后,您将无法及时收到游戏的" + + "攻略、" + + "资讯等最新动态提醒,您确定取消吗?"); + message.setText(content); + TextView cancel = (TextView) view.findViewById(R.id.dialog_cancel); cancel.setText("取消"); - cancel.setOnClickListener(new OnClickListener() { + cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); - TextView message = (TextView) view.findViewById(R.id.dialog_message); - - Spanned content = Html - .fromHtml("取消关注游戏后,您将无法及时收到游戏的攻略资讯等最新动态提醒,您确定取消吗?"); - message.setText(content); view.findViewById(R.id.dialog_rl_confirm).setVisibility(View.VISIBLE); view.findViewById(R.id.dialog_confirm).setOnClickListener( @@ -219,6 +236,7 @@ public class DialogUtils { } } }); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); dialog.show(); @@ -228,26 +246,26 @@ public class DialogUtils { final DismissListener dListener) { final Dialog dialog = new Dialog(context); View view = View.inflate(context, R.layout.common_alertdialog, null); + TextView title = (TextView) view.findViewById(R.id.alertdialog_title); title.setText("插件化安装"); - TextView content = (TextView) view - .findViewById(R.id.alertdialog_content); + + TextView content = (TextView) view.findViewById(R.id.alertdialog_content); Spanned spanned = Html.fromHtml("您将进行插件化安装以实现插件功能,此过程将" + "卸载" + "当前使用的版本并" + "安装插件版本" + "。"); content.setText(spanned); - TextView cancel = (TextView) view - .findViewById(R.id.alertdialog_cannel); + TextView cancel = (TextView) view.findViewById(R.id.alertdialog_cannel); cancel.setText("取消"); - cancel.setOnClickListener(new OnClickListener() { + cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); - TextView confirm = (TextView) view - .findViewById(R.id.alertdialog_confirm); + + TextView confirm = (TextView) view.findViewById(R.id.alertdialog_confirm); confirm.setText("确定"); confirm.setOnClickListener(new OnClickListener() { @Override @@ -276,20 +294,22 @@ public class DialogUtils { public static void showDisclaimerDialog(Context context, String content) { final Dialog disclaimerDialog = new Dialog(context); View view = View.inflate(context, R.layout.setting_disclaimer_dialog, null); - TextView title = (TextView) view - .findViewById(R.id.disclaimer_dialog_title); + + TextView title = (TextView) view.findViewById(R.id.disclaimer_dialog_title); title.setText("免责声明"); - TextView message = (TextView) view - .findViewById(R.id.disclaimer_dialog_message); + + TextView message = (TextView) view.findViewById(R.id.disclaimer_dialog_message); Spanned spanned = Html.fromHtml(content); message.setText(spanned); + view.findViewById(R.id.disclaimer_dialog_confirm).setOnClickListener( - new OnClickListener() { + new View.OnClickListener() { @Override public void onClick(View v) { disclaimerDialog.dismiss(); } }); + disclaimerDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); disclaimerDialog.setContentView(view); disclaimerDialog.show(); diff --git a/app/src/main/java/com/gh/common/util/DisplayUtils.java b/app/src/main/java/com/gh/common/util/DisplayUtils.java index 3ef710bdd6..f13826c220 100644 --- a/app/src/main/java/com/gh/common/util/DisplayUtils.java +++ b/app/src/main/java/com/gh/common/util/DisplayUtils.java @@ -25,7 +25,7 @@ public class DisplayUtils { * 将px值转换为sp值,保证文字大小不变 * * @param pxValue - * @param fontScale + * @param pxValue * (DisplayMetrics类中属性scaledDensity) * @return */ @@ -38,7 +38,7 @@ public class DisplayUtils { * 将sp值转换为px值,保证文字大小不变 * * @param spValue - * @param fontScale + * @param spValue * (DisplayMetrics类中属性scaledDensity) * @return */ diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index 0641778d4e..ea3025f674 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -2,13 +2,13 @@ package com.gh.common.util; import android.content.Context; import android.content.Intent; +import android.graphics.Color; import android.os.Handler; import android.os.Message; import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; -import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; @@ -39,19 +39,23 @@ import de.greenrobot.event.EventBus; public class DownloadItemUtils { + // 初始化gameMap public static void initializeGameMap(Context context, ArrayMap> gameMap) { gameMap.clear(); List list = DownloadManager.getInstance(context).getAll(); + String name; for (int i = 0, size = list.size(); i < size; i++) { - ArrayMap map = gameMap.get(list.get(i).getName()); + name = list.get(i).getName(); + ArrayMap map = gameMap.get(name); if (map == null) { - map = new ArrayMap(); + map = new ArrayMap<>(); + gameMap.put(name, map); } map.put(list.get(i).getMeta().get("platform"), list.get(i)); - gameMap.put(list.get(i).getName(), map); } } + // 更新下载进度条 public static void processDate(GameEntity detailedEntity, DownloadEntry downloadEntry, ArrayMap> platformMap, @@ -60,12 +64,13 @@ public class DownloadItemUtils { int index, ArrayMap statusMap) { - String platform = downloadEntry.getMeta().get("platform"); LinkedBlockingQueue queue = platformMap.get(downloadEntry.getName()); if (queue == null) { - queue = new LinkedBlockingQueue(); + queue = new LinkedBlockingQueue<>(); + platformMap.put(downloadEntry.getName(), queue); } + String platform = downloadEntry.getMeta().get("platform"); ArrayMap entryMap = detailedEntity.getEntryMap(); DownloadStatus status = downloadEntry.getStatus(); @@ -73,9 +78,8 @@ public class DownloadItemUtils { || status.equals(DownloadStatus.cancel) || status.equals(DownloadStatus.done)) { queue.remove(platform); - platformMap.put(downloadEntry.getName(), queue); if (entryMap == null) { - entryMap = new ArrayMap(); + entryMap = new ArrayMap<>(); detailedEntity.setEntryMap(entryMap); } entryMap.put(platform, downloadEntry); @@ -92,10 +96,9 @@ public class DownloadItemUtils { handler.sendMessageDelayed(msg, 3000); } } - platformMap.put(downloadEntry.getName(), queue); if (platform.equals(queue.peek())) { if (entryMap == null) { - entryMap = new ArrayMap(); + entryMap = new ArrayMap<>(); detailedEntity.setEntryMap(entryMap); } entryMap.put(platform, downloadEntry); @@ -106,6 +109,231 @@ public class DownloadItemUtils { } } + // 更新正常的条目,只有一个apk包 + public static void updateNormalItem(Context context, + TextView textView, + ProgressBar game_progressbar, + LinearLayout game_ll_info, + TextView download_speed, + TextView download_percentage, + TextView downloadBtn, + GameEntity entity, + ArrayMap statusMap, + boolean isShowPlatform) { + + String pluginPlatform = entity.getPluginPlatform(); + + ArrayMap entryMap = entity.getEntryMap(); + if (entryMap != null && !entryMap.isEmpty()) { + + DownloadEntry downloadEntry = entryMap.get(entity.getApk().get(0).getPlatform()); + + if (downloadEntry != null && (pluginPlatform == null + || pluginPlatform.equals(PlatformUtils.getInstance(context) + .getPlatformName(downloadEntry.getMeta().get("platform"))))) { + // 更改进度条和提示文本的状态 + changeStatus(context, textView, game_progressbar, game_ll_info, download_speed, download_percentage, downloadBtn, + statusMap, downloadEntry, isShowPlatform, true); + return; + } + } + + textView.setVisibility(View.VISIBLE); + game_progressbar.setVisibility(View.GONE); + game_ll_info.setVisibility(View.GONE); + + downloadBtn.setTextColor(Color.WHITE); + if (pluginPlatform != null) { + downloadBtn.setText("插件化"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); + } else if (PackageManager.isInstalled(entity.getApk().get(0).getPackageName())) { + if (PackageManager.isCanUpdate(entity.getApk().get(0).getPackageName())) { + downloadBtn.setText("更新"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); + } else { + downloadBtn.setText("启动"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_launch_style); + } + } else { + downloadBtn.setText("下载"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); + } + + } + + // 更新插件的条目,有多个apk包 + public static void updatePluginItem(Context context, + TextView textView, + ProgressBar game_progressbar, + LinearLayout game_ll_info, + TextView download_speed, + TextView download_percentage, + TextView downloadBtn, + GameEntity entity, + ArrayMap> platformMap, + ArrayMap statusMap, + boolean isShowPlatform) { + + ArrayMap entryMap = entity.getEntryMap(); + + // 更新下载按钮状态 + int doneCount = 0; // 下载完成数量 + int updateCount = 0; // 可更新数量 + int installCount = 0; // 已安装数量 + int pluginCount = 0; // 可插件化数量 + if (entryMap != null && !entryMap.isEmpty()) { + for (String key : entryMap.keySet()) { + if (entryMap.get(key).getStatus().equals(DownloadStatus.done)) { + doneCount++; + } + } + } + + for (ApkEntity apkEntity : entity.getApk()) { + if (PackageManager.isCanUpdate(apkEntity.getPackageName())) { + updateCount++; + } + } + + PackageManager packageManager = new PackageManager(context); + for (ApkEntity apkEntity : entity.getApk()) { + if (PackageManager.isInstalled(apkEntity.getPackageName())) { + if (!packageManager.isSignature(apkEntity.getPackageName())) { + pluginCount++; + } else { + installCount++; + } + } + } + + downloadBtn.setTextColor(Color.WHITE); + if (doneCount != 0) { + downloadBtn.setText("安装"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); + } else if (updateCount != 0) { + downloadBtn.setText("更新"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); + } else if (installCount != 0) { + downloadBtn.setText("打开"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_launch_style); + } else if (pluginCount != 0) { + downloadBtn.setText("插件化"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); + } else { + downloadBtn.setText("下载"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); + } + + if (entryMap != null && !entryMap.isEmpty()) { + + DownloadEntry downloadEntry; + + LinkedBlockingQueue queue = platformMap.get(entity.getName()); + if (queue != null && !queue.isEmpty()) { + downloadEntry = entryMap.get(queue.peek()); + } else { + downloadEntry = entryMap.get(entryMap.keyAt(0)); + } + + if (downloadEntry != null) { + // 更改进度条和提示文本的状态 + changeStatus(context, textView, game_progressbar, game_ll_info, download_speed, + download_percentage, downloadBtn, statusMap, downloadEntry, isShowPlatform, false); + return; + } + } + + textView.setVisibility(View.VISIBLE); + game_progressbar.setVisibility(View.GONE); + game_ll_info.setVisibility(View.GONE); + } + + // 更改进度条和提示文本的状态 + public static void changeStatus(Context context, + TextView textView, + ProgressBar game_progressbar, + LinearLayout game_ll_info, + TextView download_speed, + TextView download_percentage, + TextView downloadBtn, + ArrayMap statusMap, + DownloadEntry downloadEntry, + boolean isShowPlatform, + boolean isNormal) { + textView.setVisibility(View.GONE); + game_progressbar.setVisibility(View.VISIBLE); + game_ll_info.setVisibility(View.VISIBLE); + + String platform = PlatformUtils.getInstance(context) + .getPlatformName(downloadEntry.getMeta().get("platform")); + + DownloadStatus status = downloadEntry.getStatus(); + if (status.equals(DownloadStatus.downloading)) { + if (!"pause".equals(statusMap.get(downloadEntry.getUrl()))) { + game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + if (isShowPlatform && platform != null) { + download_speed.setText(String.format("%s - %s(剩%s)", platform, + SpeedUtils.getSpeed(downloadEntry.getSpeed()), + SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); + } else { + download_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntry.getSpeed()), + SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); + } + download_percentage.setText(downloadEntry.getPercent() + "%"); + } + + if (isNormal) { + downloadBtn.setText("下载中"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); + downloadBtn.setTextColor(context.getResources().getColor(R.color.theme)); + } + } else if (status.equals(DownloadStatus.waiting)) { + game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + if (isShowPlatform && platform != null) { + download_speed.setText(String.format("%s - 等待", platform)); + } else { + download_speed.setText("等待"); + } + download_percentage.setText(downloadEntry.getPercent() + "%"); + + if (isNormal) { + downloadBtn.setText("下载中"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); + downloadBtn.setTextColor(context.getResources().getColor(R.color.theme)); + } + } else if (status.equals(DownloadStatus.pause) + || status.equals(DownloadStatus.timeout) + || status.equals(DownloadStatus.neterror)) { + game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + if (isShowPlatform && platform != null) { + download_speed.setText(String.format("%s - 暂停", platform)); + } else { + download_speed.setText("暂停"); + } + download_percentage.setText(downloadEntry.getPercent() + "%"); + + if (isNormal) { + downloadBtn.setText("下载中"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); + downloadBtn.setTextColor(context.getResources().getColor(R.color.theme)); + } + } else if (status.equals(DownloadStatus.done)) { + game_progressbar.setProgress(1000); + if (isShowPlatform && platform != null) { + download_speed.setText(String.format("%s - 下载完成", platform)); + } else { + download_speed.setText("下载完成"); + } + download_percentage.setText("100%"); + + if (isNormal) { + downloadBtn.setText("安装"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); + downloadBtn.setTextColor(Color.WHITE); + } + } + } + public static void updateItem(Context context, TextView textView, ProgressBar game_progressbar, @@ -125,182 +353,19 @@ public class DownloadItemUtils { downloadBtn.setVisibility(View.GONE); } - DownloadEntry downloadEntry = null; - - ArrayMap entryMap = entity.getEntryMap(); - if (entryMap != null && !entryMap.isEmpty()) { - - LinkedBlockingQueue queue = platformMap.get(entity.getName()); - - if (queue != null && !queue.isEmpty()) { - downloadEntry = entryMap.get(queue.peek()); - } else { - downloadEntry = entryMap.get(entryMap.keyAt(0)); - } - - String pluginPlatform = entity.getPluginPlatform(); - - if (downloadEntry != null && (pluginPlatform == null - || pluginPlatform.equals(PlatformUtils.getInstance(context) - .getPlatformName(downloadEntry.getMeta().get("platform"))))) { - textView.setVisibility(View.GONE); - game_progressbar.setVisibility(View.VISIBLE); - game_ll_info.setVisibility(View.VISIBLE); - - String platform = PlatformUtils.getInstance(context) - .getPlatformName(downloadEntry.getMeta().get("platform")); - - game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); - - DownloadStatus status = downloadEntry.getStatus(); - if (status.equals(DownloadStatus.downloading)) { - if (!"pause".equals(statusMap.get(downloadEntry.getUrl()))) { - if (isShowPlatform && platform != null) { - download_speed.setText(String.format("%s - %s(剩%s)", platform, - SpeedUtils.getSpeed(downloadEntry.getSpeed()), - SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); - } else { - download_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntry.getSpeed()), - SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); - } - download_percentage.setText(downloadEntry.getPercent() + "%"); - } - } else if (status.equals(DownloadStatus.waiting)) { - if (isShowPlatform && platform != null) { - download_speed.setText(String.format("%s - 等待", platform)); - } else { - download_speed.setText("等待"); - } - download_percentage.setText(downloadEntry.getPercent() + "%"); - } else if (status.equals(DownloadStatus.pause) - || status.equals(DownloadStatus.timeout) - || status.equals(DownloadStatus.neterror)) { - if (isShowPlatform && platform != null) { - download_speed.setText(String.format("%s - 暂停", platform)); - } else { - download_speed.setText("暂停"); - } - download_percentage.setText(downloadEntry.getPercent() + "%"); - } else if (status.equals(DownloadStatus.done)) { - if (isShowPlatform && platform != null) { - download_speed.setText(String.format("%s - 下载完成", platform)); - } else { - download_speed.setText("下载完成"); - } - download_percentage.setText("100%"); - } else if (status.equals(DownloadStatus.cancel) - || status.equals(DownloadStatus.hijack)) { - textView.setVisibility(View.VISIBLE); - game_progressbar.setVisibility(View.GONE); - game_ll_info.setVisibility(View.GONE); - } - } else { - textView.setVisibility(View.VISIBLE); - game_progressbar.setVisibility(View.GONE); - game_ll_info.setVisibility(View.GONE); - } - } else { + if (entity.getApk() == null || entity.getApk().isEmpty()) { textView.setVisibility(View.VISIBLE); game_progressbar.setVisibility(View.GONE); game_ll_info.setVisibility(View.GONE); - } - - if (entity.getApk() == null) { - downloadBtn.setText("下载"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); + downloadBtn.setVisibility(View.GONE); } else if (entity.getApk().size() == 1) { - String pluginPlatform = entity.getPluginPlatform(); - if (downloadEntry != null && (pluginPlatform == null - || pluginPlatform.equals(PlatformUtils.getInstance(context) - .getPlatformName(downloadEntry.getMeta().get("platform"))))) { - DownloadStatus status = downloadEntry.getStatus(); - if (status.equals(DownloadStatus.downloading) - || status.equals(DownloadStatus.waiting) - || status.equals(DownloadStatus.pause) - || status.equals(DownloadStatus.timeout) - || status.equals(DownloadStatus.neterror)) { - downloadBtn.setText("下载中"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); - downloadBtn.setTextColor(0xFF1BA4FC); - } else if (status.equals(DownloadStatus.done)) { - downloadBtn.setText("安装"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } - } else { - if (pluginPlatform != null) { - downloadBtn.setText("插件化"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } else if (PackageManager.isInstalled(entity.getApk().get(0).getPackageName())) { - if (PackageManager.isCanUpdate(entity.getApk().get(0).getPackageName())) { - downloadBtn.setText("更新"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } else { - downloadBtn.setText("启动"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_launch_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } - } else { - downloadBtn.setText("下载"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } - } + updateNormalItem(context, textView, game_progressbar, game_ll_info, download_speed, + download_percentage, downloadBtn, entity, statusMap, isShowPlatform); } else { - int doneCount = 0; - int updateCount = 0; - int installCount = 0; - int pluginCount = 0; - if (entryMap != null && !entryMap.isEmpty()) { - for (String key : entryMap.keySet()) { - if (entryMap.get(key).getStatus().equals(DownloadStatus.done)) { - doneCount++; - } - } - } - - for (ApkEntity apkEntity : entity.getApk()) { - if (PackageManager.isCanUpdate(apkEntity.getPackageName())) { - updateCount++; - } - } - - PackageManager packageManager = new PackageManager(context); - for (ApkEntity apkEntity : entity.getApk()) { - if (PackageManager.isInstalled(apkEntity.getPackageName())) { - if (!packageManager.isSignature(apkEntity.getPackageName())) { - pluginCount++; - } else { - installCount++; - } - } - } - - if (doneCount != 0) { - downloadBtn.setText("安装"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } else if (updateCount != 0) { - downloadBtn.setText("更新"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } else if (installCount != 0) { - downloadBtn.setText("打开"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_launch_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } else if (pluginCount != 0) { - downloadBtn.setText("插件化"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } else { - downloadBtn.setText("下载"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); - downloadBtn.setTextColor(0xFFFFFFFF); - } + updatePluginItem(context, textView, game_progressbar, game_ll_info, download_speed, + download_percentage, downloadBtn, entity, platformMap, statusMap, isShowPlatform); } + } public static void updateItem(Context context, @@ -317,6 +382,99 @@ public class DownloadItemUtils { download_percentage, downloadBtn, entity, platformMap, statusMap, true); } + public static void setNormalOnClickListener(final Context context, + final TextView downloadBtn, + final GameEntity entity, + final int position, + final RecyclerView.Adapter adapter, + final ArrayMap statusMap, + final String entrance) { + downloadBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String str = downloadBtn.getText().toString(); + if ("下载".equals(str)) { + if (NetworkUtils.isWifiConnected(context)) { + download(context, entity, downloadBtn, statusMap, entrance); + } else { + DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + download(context, entity, downloadBtn, statusMap, entrance); + } + }); + } + } else if ("插件化".equals(str)) { + if (NetworkUtils.isWifiConnected(context)) { + plugin(context, entity, downloadBtn, statusMap, entrance); + } else { + DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + plugin(context, entity, downloadBtn, statusMap, entrance); + } + }); + } + } else if ("安装".equals(str)) { + install(context, entity, position, adapter); + } else if ("启动".equals(str)) { + Map kv = new HashMap(); + kv.put("版本", entity.getApk().get(0).getPlatform()); + DataUtils.onEvent(context, "游戏启动", entity.getName(), kv); + + PackageUtils.launchApplicationByPackageName(context, entity.getApk().get(0).getPackageName()); + } else if ("下载中".equals(str)) { + context.startActivity(new Intent(context, DownloadManagerActivity.class)); + } else if ("更新".equals(str)) { + if (NetworkUtils.isWifiConnected(context)) { + update(context, entity); + } else { + DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + update(context, entity); + } + }); + } + } + } + }); + } + + public static void setPluginOnClickListener(final Context context, + final TextView downloadBtn, + final TextView download_speed, + final TextView download_percentage, + final GameEntity entity, + final ArrayMap statusMap, + final String entrance, + final DismissEntity dismissEntity, + final String location) { + downloadBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View v) { + if (NetworkUtils.isWifiConnected(context)) { + if (!dismissEntity.isShow()) { + dismissEntity.setShow(true); + DownloadDialog.getInstance(context).showPopupWindow( + v, entity, entrance, statusMap, download_speed, download_percentage, location); + } + } else { + DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + if (!dismissEntity.isShow()) { + dismissEntity.setShow(true); + DownloadDialog.getInstance(context).showPopupWindow( + v, entity, entrance, statusMap, download_speed, download_percentage, location); + } + } + }); + } + } + }); + } + public static void setOnClickListener(Context context, TextView downloadBtn, TextView download_speed, @@ -334,133 +492,51 @@ public class DownloadItemUtils { dismissEntity, location); } - public static void setOnClickListener(final Context context, - final TextView downloadBtn, - final TextView download_speed, - final TextView download_percentage, - final GameEntity entity, - final int position, - final RecyclerView.Adapter adapter, - final ArrayMap statusMap, - final ArrayMap> platformMap, - final String entrance, - final boolean isShowPlatform, - final DismissEntity dismissEntity, - final String location) { - downloadBtn.setOnClickListener(new OnClickListener() { - @Override - public void onClick(final View viewBtn) { - String str = downloadBtn.getText().toString(); - if ("下载".equals(str)) { - if (entity.getApk() == null || entity.getApk().isEmpty()) { - Toast.makeText(context, "稍等片刻~!游戏正在上传中...", Toast.LENGTH_SHORT).show(); - } else { - if (NetworkUtils.isWifiConnected(context)) { - download(context, entity, downloadBtn, statusMap, dismissEntity, - download_speed, download_percentage, viewBtn, entrance, location); - } else { - DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { - @Override - public void onConfirem() { - download(context, entity, downloadBtn, statusMap, dismissEntity, - download_speed, download_percentage, viewBtn, entrance, location); - } - }); - } - } - } else if ("插件化".equals(str)) { - if (NetworkUtils.isWifiConnected(context)) { - plugin(context, entity, downloadBtn, statusMap, dismissEntity, - download_speed, download_percentage,viewBtn, entrance, location); - } else { - DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { - @Override - public void onConfirem() { - plugin(context, entity, downloadBtn, statusMap, dismissEntity, - download_speed, download_percentage,viewBtn, entrance, location); - } - }); - } - } else if ("安装".equals(str)) { - if (entity.getApk().size() == 1) { - install(context, entity, position, adapter); - } else { - if (!dismissEntity.isShow()) { - dismissEntity.setShow(true); - DownloadDialog.getInstance(context).showPopupWindow( - viewBtn, entity, entrance, statusMap, download_speed, download_percentage, location); - } - } - } else if ("启动".equals(str)) { - Map kv = new HashMap(); - kv.put("版本", entity.getApk().get(0).getPlatform()); - DataUtils.onEvent(context, "游戏启动", entity.getName(), kv); + public static void setOnClickListener(Context context, + TextView downloadBtn, + TextView download_speed, + TextView download_percentage, + GameEntity entity, + int position, + RecyclerView.Adapter adapter, + ArrayMap statusMap, + ArrayMap> platformMap, + String entrance, + boolean isShowPlatform, + DismissEntity dismissEntity, + String location) { + + if (entity.getApk().size() == 1) { + setNormalOnClickListener(context, downloadBtn, entity, position, adapter, statusMap, entrance); + } else { + setPluginOnClickListener(context, downloadBtn, download_speed, download_percentage, entity, + statusMap, entrance, dismissEntity, location); + } - PackageUtils.launchApplicationByPackageName(context, entity.getApk().get(0).getPackageName()); - } else if ("下载中".equals(str)) { - context.startActivity(new Intent(context, DownloadManagerActivity.class)); - } else if ("打开".equals(str)) { - if (!dismissEntity.isShow()) { - dismissEntity.setShow(true); - DownloadDialog.getInstance(context).showPopupWindow( - viewBtn, entity, entrance, statusMap, download_speed, download_percentage, location); - } - } else if ("更新".equals(str)) { - if (NetworkUtils.isWifiConnected(context)) { - update(context, entity, statusMap, dismissEntity, - download_speed, download_percentage, viewBtn, entrance, location); - } else { - DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { - @Override - public void onConfirem() { - update(context, entity, statusMap, dismissEntity, - download_speed, download_percentage, viewBtn, entrance, location); - } - }); - } - } - } - }); } //更新 - private static void update(Context context, - GameEntity entity, - ArrayMap statusMap, - DismissEntity dismissEntity, - TextView download_speed, - TextView download_percentage, - View viewBtn, - String entrance, - String location) { - if (entity.getApk().size() == 1) { - ApkEntity apkEntity = entity.getApk().get(0); - //下载可更新游戏 - Map kv = new HashMap(); - kv.put("版本", apkEntity.getPlatform()); - kv.put("状态", "下载开始"); - DataUtils.onEvent(context, "游戏更新", entity.getName(), kv); + private static void update(Context context, GameEntity entity) { + ApkEntity apkEntity = entity.getApk().get(0); + //下载可更新游戏 + Map kv = new HashMap(); + kv.put("版本", apkEntity.getPlatform()); + kv.put("状态", "下载开始"); + DataUtils.onEvent(context, "游戏更新", entity.getName(), kv); - DownloadEntry entry = new DownloadEntry(); - entry.setUrl(apkEntity.getUrl()); - entry.setName(entity.getName()); - entry.setPath(FileUtils.getDownloadPath(context, - MD5Utils.getContentMD5( - entity.getName() + "_" + System.currentTimeMillis()) + ".apk")); - HashMap meta = new HashMap(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", entity.getIcon()); - meta.put("platform", apkEntity.getPlatform()); - meta.put("isUpdate", "true"); - entry.setMeta(meta); - DownloadManager.getInstance(context).add(entry); - } else { - if (!dismissEntity.isShow()) { - dismissEntity.setShow(true); - DownloadDialog.getInstance(context).showPopupWindow( - viewBtn, entity, entrance, statusMap, download_speed, download_percentage, location); - } - } + DownloadEntry entry = new DownloadEntry(); + entry.setUrl(apkEntity.getUrl()); + entry.setName(entity.getName()); + entry.setPath(FileUtils.getDownloadPath(context, + MD5Utils.getContentMD5( + entity.getName() + "_" + System.currentTimeMillis()) + ".apk")); + HashMap meta = new HashMap(); + meta.put("ETag", apkEntity.getEtag()); + meta.put("icon", entity.getIcon()); + meta.put("platform", apkEntity.getPlatform()); + meta.put("isUpdate", "true"); + entry.setMeta(meta); + DownloadManager.getInstance(context).add(entry); } //下载 @@ -468,74 +544,61 @@ public class DownloadItemUtils { GameEntity entity, TextView downloadBtn, ArrayMap statusMap, - DismissEntity dismissEntity, - TextView download_speed, - TextView download_percentage, - View viewBtn, - String entrance, - String location) { - if (entity.getApk().size() == 1) { - String msg = FileUtils.isCanDownload(entity.getApk().get(0).getSize()); - if (TextUtils.isEmpty(msg)) { - Map kv = new HashMap(); - kv.put("版本", entity.getApk().get(0).getPlatform()); - kv.put("状态", "下载开始"); - DataUtils.onEvent(context, "游戏下载", entity.getName(), kv); + String entrance) { + String msg = FileUtils.isCanDownload(entity.getApk().get(0).getSize()); + if (TextUtils.isEmpty(msg)) { + Map kv = new HashMap(); + kv.put("版本", entity.getApk().get(0).getPlatform()); + kv.put("状态", "下载开始"); + DataUtils.onEvent(context, "游戏下载", entity.getName(), kv); - Map kv2 = new HashMap(); - kv2.put("版本", entity.getApk().get(0).getPlatform()); - kv2.put("状态", "下载开始"); - kv2.put("位置", entrance + "-开始"); - DataUtils.onEvent(context, "游戏下载位置", entity.getName(), kv2); + Map kv2 = new HashMap(); + kv2.put("版本", entity.getApk().get(0).getPlatform()); + kv2.put("状态", "下载开始"); + kv2.put("位置", entrance + "-开始"); + DataUtils.onEvent(context, "游戏下载位置", entity.getName(), kv2); - Map kv3 = new HashMap(); - kv3.put(entrance, "下载数"); - kv3.put(entrance, "下载开始"); - DataUtils.onEvent(context, "应用数据", entity.getName(), kv3); + Map kv3 = new HashMap(); + kv3.put(entrance, "下载数"); + kv3.put(entrance, "下载开始"); + DataUtils.onEvent(context, "应用数据", entity.getName(), kv3); - if ("主页-最新插件".equals(entrance)) { - Map kv4 = new HashMap(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "最新插件", kv4); - } else if ("主页-热门卡牌".equals(entrance)) { - Map kv4 = new HashMap(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); - } else if ("主页-新测卡牌".equals(entrance)) { - Map kv4 = new HashMap(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); - } - - Map map = new HashMap(); - map.put("game", entity.getName()); - map.put("method", "正常"); - map.put("platform", PlatformUtils.getInstance(context) - .getPlatformName(entity.getApk().get(0).getPlatform())); - map.put("status", "开始"); - map.put("location", "游戏详情:" + entity.getName()); - map.put("from", entrance); - map.put("network", NetworkUtils.getConnectedType(context)); - map.put("createdOn", System.currentTimeMillis() / 1000); - DataCollectionManager.onEvent(context, "download", map); - - addDownloadEntry(context, entity, 0, entrance); - Toast.makeText(context, entity.getName() + "已加入下载队列", Toast.LENGTH_SHORT).show(); - downloadBtn.setText("下载中"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); - downloadBtn.setTextColor(0xFF1BA4FC); - EventBus.getDefault().post(new EBRedDot(1)); - - statusMap.put(entity.getApk().get(0).getUrl(), "downloading"); - } else { - Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); + if ("主页-最新插件".equals(entrance)) { + Map kv4 = new HashMap(); + kv4.put(entity.getName(), "下载数"); + DataUtils.onEvent(context, "主页数据", "最新插件", kv4); + } else if ("主页-热门卡牌".equals(entrance)) { + Map kv4 = new HashMap(); + kv4.put(entity.getName(), "下载数"); + DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); + } else if ("主页-新测卡牌".equals(entrance)) { + Map kv4 = new HashMap(); + kv4.put(entity.getName(), "下载数"); + DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); } + + Map map = new HashMap(); + map.put("game", entity.getName()); + map.put("method", "正常"); + map.put("platform", PlatformUtils.getInstance(context) + .getPlatformName(entity.getApk().get(0).getPlatform())); + map.put("status", "开始"); + map.put("location", "游戏详情:" + entity.getName()); + map.put("from", entrance); + map.put("network", NetworkUtils.getConnectedType(context)); + map.put("createdOn", System.currentTimeMillis() / 1000); + DataCollectionManager.onEvent(context, "download", map); + + addDownloadEntry(context, entity, 0, entrance); + Toast.makeText(context, entity.getName() + "已加入下载队列", Toast.LENGTH_SHORT).show(); + downloadBtn.setText("下载中"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); + downloadBtn.setTextColor(context.getResources().getColor(R.color.theme)); + EventBus.getDefault().post(new EBRedDot(1)); + + statusMap.put(entity.getApk().get(0).getUrl(), "downloading"); } else { - if (!dismissEntity.isShow()) { - dismissEntity.setShow(true); - DownloadDialog.getInstance(context).showPopupWindow( - viewBtn, entity, entrance, statusMap, download_speed, download_percentage, location); - } + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } } @@ -544,74 +607,61 @@ public class DownloadItemUtils { GameEntity entity, TextView downloadBtn, ArrayMap statusMap, - DismissEntity dismissEntity, - TextView download_speed, - TextView download_percentage, - View viewBtn, - String entrance, - String location) { - if (entity.getApk().size() == 1) { - String msg = FileUtils.isCanDownload(entity.getApk().get(0).getSize()); - if (TextUtils.isEmpty(msg)) { - Map kv = new HashMap(); - kv.put("版本", entity.getApk().get(0).getPlatform()); - kv.put("状态", "下载开始"); - DataUtils.onEvent(context, "游戏下载", entity.getName(), kv); + String entrance) { + String msg = FileUtils.isCanDownload(entity.getApk().get(0).getSize()); + if (TextUtils.isEmpty(msg)) { + Map kv = new HashMap(); + kv.put("版本", entity.getApk().get(0).getPlatform()); + kv.put("状态", "下载开始"); + DataUtils.onEvent(context, "游戏下载", entity.getName(), kv); - Map kv2 = new HashMap(); - kv2.put("版本", entity.getApk().get(0).getPlatform()); - kv2.put("状态", "下载开始"); - kv2.put("位置", entrance + "-开始"); - DataUtils.onEvent(context, "游戏下载位置", entity.getName(), kv2); + Map kv2 = new HashMap(); + kv2.put("版本", entity.getApk().get(0).getPlatform()); + kv2.put("状态", "下载开始"); + kv2.put("位置", entrance + "-开始"); + DataUtils.onEvent(context, "游戏下载位置", entity.getName(), kv2); - Map kv3 = new HashMap(); - kv3.put(entrance, "下载数"); - kv3.put(entrance, "下载开始"); - DataUtils.onEvent(context, "应用数据", entity.getName(), kv3); + Map kv3 = new HashMap(); + kv3.put(entrance, "下载数"); + kv3.put(entrance, "下载开始"); + DataUtils.onEvent(context, "应用数据", entity.getName(), kv3); - if ("主页-最新插件".equals(entrance)) { - Map kv4 = new HashMap(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "最新插件", kv4); - } else if ("主页-热门卡牌".equals(entrance)) { - Map kv4 = new HashMap(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); - } else if ("主页-新测卡牌".equals(entrance)) { - Map kv4 = new HashMap(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); - } - - Map map = new HashMap(); - map.put("game", entity.getName()); - map.put("method", "正常"); - map.put("platform", PlatformUtils.getInstance(context) - .getPlatformName(entity.getApk().get(0).getPlatform())); - map.put("status", "开始"); - map.put("location", "游戏详情:" + entity.getName()); - map.put("from", entrance); - map.put("network", NetworkUtils.getConnectedType(context)); - map.put("createdOn", System.currentTimeMillis() / 1000); - DataCollectionManager.onEvent(context, "download", map); - - addDownloadEntry(context, entity, 0, entrance); - Toast.makeText(context, entity.getName() + "已加入下载队列", Toast.LENGTH_SHORT).show(); - downloadBtn.setText("下载中"); - downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); - downloadBtn.setTextColor(0xFF1BA4FC); - EventBus.getDefault().post(new EBRedDot(1)); - - statusMap.put(entity.getApk().get(0).getUrl(), "downloading"); - } else { - Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); + if ("主页-最新插件".equals(entrance)) { + Map kv4 = new HashMap(); + kv4.put(entity.getName(), "下载数"); + DataUtils.onEvent(context, "主页数据", "最新插件", kv4); + } else if ("主页-热门卡牌".equals(entrance)) { + Map kv4 = new HashMap(); + kv4.put(entity.getName(), "下载数"); + DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); + } else if ("主页-新测卡牌".equals(entrance)) { + Map kv4 = new HashMap(); + kv4.put(entity.getName(), "下载数"); + DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); } + + Map map = new HashMap(); + map.put("game", entity.getName()); + map.put("method", "正常"); + map.put("platform", PlatformUtils.getInstance(context) + .getPlatformName(entity.getApk().get(0).getPlatform())); + map.put("status", "开始"); + map.put("location", "游戏详情:" + entity.getName()); + map.put("from", entrance); + map.put("network", NetworkUtils.getConnectedType(context)); + map.put("createdOn", System.currentTimeMillis() / 1000); + DataCollectionManager.onEvent(context, "download", map); + + addDownloadEntry(context, entity, 0, entrance); + Toast.makeText(context, entity.getName() + "已加入下载队列", Toast.LENGTH_SHORT).show(); + downloadBtn.setText("下载中"); + downloadBtn.setBackgroundResource(R.drawable.game_item_btn_downloading_style); + downloadBtn.setTextColor(context.getResources().getColor(R.color.theme)); + EventBus.getDefault().post(new EBRedDot(1)); + + statusMap.put(entity.getApk().get(0).getUrl(), "downloading"); } else { - if (!dismissEntity.isShow()) { - dismissEntity.setShow(true); - DownloadDialog.getInstance(context).showPopupWindow( - viewBtn, entity, entrance, statusMap, download_speed, download_percentage, location); - } + Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } } @@ -645,7 +695,7 @@ public class DownloadItemUtils { } } - public static void addDownloadEntry(Context context, GameEntity game, int position, String entrance) { + private static void addDownloadEntry(Context context, GameEntity game, int position, String entrance) { ApkEntity apkEntity = game.getApk().get(position); diff --git a/app/src/main/java/com/gh/common/util/FileUtils.java b/app/src/main/java/com/gh/common/util/FileUtils.java index 5a9708a326..b664b43a84 100644 --- a/app/src/main/java/com/gh/common/util/FileUtils.java +++ b/app/src/main/java/com/gh/common/util/FileUtils.java @@ -134,9 +134,7 @@ public class FileUtils { @SuppressWarnings("deprecation") public static float getFreeSpaceByPath(String path) { StatFs statfs = new StatFs(path); - long blockSize = statfs.getBlockSize(); - long availableBlocks = statfs.getAvailableBlocks(); return availableBlocks * blockSize / 1024f / 1024f; @@ -168,8 +166,7 @@ public class FileUtils { DataInputStream dis = null; FileOutputStream fos = null; try { - HttpURLConnection connection = (HttpURLConnection) new URL(url) - .openConnection(); + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5 * 1000); connection.setReadTimeout(5 * 1000); diff --git a/app/src/main/java/com/gh/common/util/GameViewUtils.java b/app/src/main/java/com/gh/common/util/GameViewUtils.java index fc6a4975a5..ca52a764d1 100644 --- a/app/src/main/java/com/gh/common/util/GameViewUtils.java +++ b/app/src/main/java/com/gh/common/util/GameViewUtils.java @@ -1,7 +1,6 @@ package com.gh.common.util; import android.content.Context; -import android.graphics.Color; import android.util.TypedValue; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; @@ -27,50 +26,53 @@ import java.util.TimeZone; */ public class GameViewUtils { - public static void setLabelList(Context context, LinearLayout labelLayout, - List tag) { + public static void setLabelList(Context context, LinearLayout labelLayout, List tag) { labelLayout.removeAllViews(); if (tag == null || tag.isEmpty()) { - labelLayout.addView(getGameTagView(context, "官方版")); + labelLayout.addView(getGameTagView(context, "官方版", 0)); } else { for (int i = 0, size = tag.size() > 3 ? 3 : tag.size(); i < size; i++) { - labelLayout.addView(getGameTagView(context, tag.get(i))); + if (i == size - 1) { + labelLayout.addView(getGameTagView(context, tag.get(i), 0)); + } else { + labelLayout.addView(getGameTagView(context, tag.get(i), DisplayUtils.dip2px(context, 5))); + } } } } // 获取游戏标签列表视图 - public static void setLabelList(Context context, LinearLayout labelLayout, - String tag) { + public static void setLabelList(Context context, LinearLayout labelLayout, String tag) { labelLayout.removeAllViews(); // 添加tag标签 if (tag != null && !tag.isEmpty()) { String[] tags = tag.split(","); for (int i = 0; i < tags.length; i++) { - labelLayout.addView(getGameTagView(context, tags[i])); + if (i == tags.length - 1) { + labelLayout.addView(getGameTagView(context, tags[i], 0)); + } else { + labelLayout.addView(getGameTagView(context, tags[i], DisplayUtils.dip2px(context, 5))); + } } } } - public static TextView getGameTagView(Context context, String tagStr) { - LayoutParams lp = new LayoutParams( + public static TextView getGameTagView(Context context, String tagStr, int rightMargin) { + LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - lp.setMargins(0, 0, DisplayUtils.dip2px(context, 5), 0); + lparams.rightMargin = rightMargin; TextView tag = new TextView(context); tag.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11); tag.setSingleLine(true); tag.setText(tagStr); if ("官方版".equals(tagStr) || "已关注".equals(tagStr)) { tag.setBackgroundResource(R.drawable.border_green_bg); - tag.setTextColor(Color.parseColor("#05c400")); - } else if ("已安装".equals(tagStr)) { - tag.setBackgroundResource(R.drawable.border_red_bg); - tag.setTextColor(Color.parseColor("#bc2132")); + tag.setTextColor(context.getResources().getColor(R.color.tag_green)); } else { tag.setBackgroundResource(R.drawable.border_blue_bg); - tag.setTextColor(0xff1BA4FC); + tag.setTextColor(context.getResources().getColor(R.color.theme)); } - tag.setLayoutParams(lp); + tag.setLayoutParams(lparams); tag.setPadding(DisplayUtils.dip2px(context, 3), 0, DisplayUtils.dip2px(context, 3), @@ -80,13 +82,10 @@ public class GameViewUtils { public static String getGameTestDate(long testTime) { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", - Locale.CHINA); - + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); format.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); String testDate; - try { long today = format.parse(format.format(new Date())).getTime(); long day = Long.parseLong(testTime + "000"); diff --git a/app/src/main/java/com/gh/common/util/GzipUtils.java b/app/src/main/java/com/gh/common/util/GzipUtils.java index 144eb3bd43..19278ae6cd 100644 --- a/app/src/main/java/com/gh/common/util/GzipUtils.java +++ b/app/src/main/java/com/gh/common/util/GzipUtils.java @@ -15,8 +15,7 @@ public class GzipUtils { /* * 数据压缩 */ - public static void compress(InputStream is, OutputStream os) - throws IOException { + public static void compress(InputStream is, OutputStream os) throws IOException { GZIPOutputStream gos = null; try { gos = new GZIPOutputStream(os); @@ -38,8 +37,7 @@ public class GzipUtils { /* * 数据解压缩 */ - public static void decompress(InputStream is, OutputStream os) - throws IOException { + public static void decompress(InputStream is, OutputStream os) throws IOException { GZIPInputStream gis = null; try { gis = new GZIPInputStream(is); @@ -112,4 +110,5 @@ public class GzipUtils { } } } + } diff --git a/app/src/main/java/com/gh/common/util/HotFix.java b/app/src/main/java/com/gh/common/util/HotFix.java index 3e84ef0bdb..7f2cefc7a3 100644 --- a/app/src/main/java/com/gh/common/util/HotFix.java +++ b/app/src/main/java/com/gh/common/util/HotFix.java @@ -16,6 +16,7 @@ import dalvik.system.PathClassLoader; /* compiled from: ProGuard */ public final class HotFix { + public static void patch(Context context, String patchDexFile, String patchClassName) { if (patchDexFile != null && new File(patchDexFile).exists()) { try { @@ -153,4 +154,5 @@ public final class HotFix { } return newInstance; } + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/HttpdnsUtils.java b/app/src/main/java/com/gh/common/util/HttpdnsUtils.java deleted file mode 100644 index 0a3f739472..0000000000 --- a/app/src/main/java/com/gh/common/util/HttpdnsUtils.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gh.common.util; - -import android.content.Context; - -import com.alibaba.sdk.android.httpdns.HttpDns; -import com.alibaba.sdk.android.httpdns.HttpDnsService; - -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * Created by khy on 2016/7/11. - */ -public class HttpdnsUtils { - private static HttpDnsService httpdns; - private static String accountID = "180813"; - - public static String getUrls(Context context,String url){ - httpdns = HttpDns.getService(context,accountID); - try { - URL oldUrl = new URL(url); - HttpURLConnection connection = (HttpURLConnection) oldUrl.openConnection(); - String ip = httpdns.getIpByHost(oldUrl.getHost()); - if (ip!= null){ - String newUrl = url.replaceFirst(oldUrl.getHost(), ip); - return newUrl; - } - } catch (Exception e) { - e.printStackTrace(); - } - - return null; - } - -} diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.java b/app/src/main/java/com/gh/common/util/ImageUtils.java index bdd872bad9..2ee2a2d936 100644 --- a/app/src/main/java/com/gh/common/util/ImageUtils.java +++ b/app/src/main/java/com/gh/common/util/ImageUtils.java @@ -27,9 +27,11 @@ import java.util.concurrent.Executors; import de.greenrobot.event.EventBus; public class ImageUtils { + private static ImageUtils singleton; private static ImageLoader imageLoader; private static DisplayImageOptions options; + private ArrayMap> imageCache = new ArrayMap>(); ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); @@ -78,16 +80,14 @@ public class ImageUtils { } @Override - public void onLoadingComplete(String arg0, View view, - Bitmap arg2) { + public void onLoadingComplete(String arg0, View view, Bitmap arg2) { AlphaAnimation animation = new AlphaAnimation(0f, 1f); animation.setDuration(500); view.startAnimation(animation); } @Override - public void onLoadingFailed(String arg0, View arg1, - FailReason arg2) { + public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { } @@ -99,21 +99,20 @@ public class ImageUtils { }); } //增加一个上下文环境,图片宽度设最大,高度自适应 - public void display(String url, ImageView imageView, int drawable,Context context) { - display(url, imageView, drawable, ScaleType.FIT_XY, null,context); + public void display(String url, ImageView imageView, int drawable, Context context) { + display(url, imageView, drawable, ScaleType.FIT_XY, null, context); } + public void display(String url, ImageView imageView, int drawable) { display(url, imageView, drawable, ScaleType.FIT_XY, null); } - public void display(final String url, final ImageView imageView, - final int drawable, final ScaleType scaleType, - final OnLoadingCompleteListener listener) { + public void display(final String url, final ImageView imageView, final int drawable, + final ScaleType scaleType, final OnLoadingCompleteListener listener) { imageLoader.displayImage(url, imageView, options, new ImageLoadingListener() { @Override - public void onLoadingComplete(String imageUri, View view, - Bitmap loadedImage) { + public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (imageView instanceof CircleImageView) { imageView.setScaleType(ScaleType.CENTER_CROP); } else { @@ -138,27 +137,24 @@ public class ImageUtils { } @Override - public void onLoadingFailed(String imageUri, View view, - FailReason reason) { + public void onLoadingFailed(String imageUri, View view, FailReason reason) { } }); } - public void display(final String url, final ImageView imageView, - final int drawable, final ScaleType scaleType, - final OnLoadingCompleteListener listener,final Context context) { + public void display(final String url, final ImageView imageView, final int drawable, + final ScaleType scaleType, final OnLoadingCompleteListener listener, final Context context) { imageLoader.displayImage(url, imageView, options, new ImageLoadingListener() { @Override - public void onLoadingComplete(String imageUri, View view, - Bitmap loadedImage) { + public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { int width = loadedImage.getWidth(); int height = loadedImage.getHeight(); int widthPixels = context.getResources().getDisplayMetrics().widthPixels; - widthPixels = widthPixels - (int)(context.getResources().getDisplayMetrics().density * 10); - float index = (float) height / (float) width; - int newHeight = (int)(index * widthPixels); + widthPixels = widthPixels - DisplayUtils.dip2px(context, 10); + float scale = (float) height / (float) width; + int newHeight = (int)(scale * widthPixels); ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams(); if (layoutParams!=null){ @@ -193,16 +189,14 @@ public class ImageUtils { } @Override - public void onLoadingFailed(String imageUri, View view, - FailReason reason) { + public void onLoadingFailed(String imageUri, View view, FailReason reason) { } }); } - public void display(final String url, final ImageView imageView, - final int drawable, final ScaleType scaleType, - final OnLoadingCompleteListener listener, final int i) { + public void display(final String url, final ImageView imageView, final int drawable, + final ScaleType scaleType, final OnLoadingCompleteListener listener, final int i) { imageLoader.displayImage(url, imageView, options, new ImageLoadingListener() { @Override diff --git a/app/src/main/java/com/gh/common/util/Installation.java b/app/src/main/java/com/gh/common/util/Installation.java index b155695b7e..51019b79b0 100644 --- a/app/src/main/java/com/gh/common/util/Installation.java +++ b/app/src/main/java/com/gh/common/util/Installation.java @@ -9,9 +9,11 @@ import java.io.RandomAccessFile; import java.util.UUID; public class Installation { - private static String sID = null; + private static final String INSTALLATION = "INSTALLATION"; + private static String sID = null; + public synchronized static String getUUID(Context context) { if (sID == null) { File installation = new File(context.getFilesDir(), INSTALLATION); @@ -42,4 +44,5 @@ public class Installation { out.write(id.getBytes()); out.close(); } + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/MD5Utils.java b/app/src/main/java/com/gh/common/util/MD5Utils.java index e472d9be1e..d5f84c7c89 100644 --- a/app/src/main/java/com/gh/common/util/MD5Utils.java +++ b/app/src/main/java/com/gh/common/util/MD5Utils.java @@ -74,4 +74,5 @@ public class MD5Utils { BigInteger bigInt = new BigInteger(1, digest.digest()); return bigInt.toString(16); } + } diff --git a/app/src/main/java/com/gh/common/util/MeasureHeightLayoutManager.java b/app/src/main/java/com/gh/common/util/MeasureHeightLayoutManager.java index 07c1009582..856ad63460 100644 --- a/app/src/main/java/com/gh/common/util/MeasureHeightLayoutManager.java +++ b/app/src/main/java/com/gh/common/util/MeasureHeightLayoutManager.java @@ -17,6 +17,7 @@ public class MeasureHeightLayoutManager extends LinearLayoutManager { } private int[] mMeasuredDimension = new int[1]; + @Override public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) { @@ -32,7 +33,7 @@ public class MeasureHeightLayoutManager extends LinearLayoutManager { height = height + mMeasuredDimension[0]; } - if (height>heightSize){ + if (height > heightSize){ super.onMeasure(recycler, state, widthSpec, heightSpec); }else { setMeasuredDimension(View.MeasureSpec.getSize(widthSpec), height); @@ -40,7 +41,6 @@ public class MeasureHeightLayoutManager extends LinearLayoutManager { } - private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec, int heightSpec, int[] measuredDimension) { View view = recycler.getViewForPosition(position); @@ -59,4 +59,5 @@ public class MeasureHeightLayoutManager extends LinearLayoutManager { measuredDimension[0] = getDecoratedMeasuredHeight(view) + p.bottomMargin + p.topMargin; recycler.recycleView(view); } + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/NetworkUtils.java b/app/src/main/java/com/gh/common/util/NetworkUtils.java index 1d82e90aad..498e518804 100644 --- a/app/src/main/java/com/gh/common/util/NetworkUtils.java +++ b/app/src/main/java/com/gh/common/util/NetworkUtils.java @@ -9,8 +9,7 @@ public class NetworkUtils { /** * 判断是否有网络连接 * - * @param context - * 上下文 + * @param context 上下文 * @return true 有网络连接 false 无网络连接 */ public static boolean isNetworkConnected(Context context) { @@ -29,8 +28,7 @@ public class NetworkUtils { /** * 判断WIFI网络是否可用 * - * @param context - * 上下文 + * @param context 上下文 * @return true wifi可用 false wifi不可用 */ public static boolean isWifiConnected(Context context) { @@ -49,8 +47,7 @@ public class NetworkUtils { /** * 判断MOBILE网络是否可用 * - * @param context - * 上下文 + * @param context 上下文 * @return true mobile可用 false mobile不可用 */ public static boolean isMobileConnected(Context context) { @@ -106,4 +103,5 @@ public class NetworkUtils { } return "NONE"; } + } diff --git a/app/src/main/java/com/gh/common/util/NewsUtils.java b/app/src/main/java/com/gh/common/util/NewsUtils.java index 48e266bb63..f1e0588867 100644 --- a/app/src/main/java/com/gh/common/util/NewsUtils.java +++ b/app/src/main/java/com/gh/common/util/NewsUtils.java @@ -43,8 +43,7 @@ public class NewsUtils { * @param entrance * @return */ - public static void startNewsActivity(Context context, - NewsEntity newsEntity, String entrance) { + public static void startNewsActivity(Context context, NewsEntity newsEntity, String entrance) { Intent intent = new Intent(context, NewsActivity.class); NewsDetailsEntity entity = new NewsDetailsEntity(); entity.setId(newsEntity.getId()); @@ -70,12 +69,13 @@ public class NewsUtils { public void onResponse(JSONObject response) { } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { - } - }); + } + }); request.setShouldCache(false); AppController.addToRequestQueue(request, NewsUtils.class); } diff --git a/app/src/main/java/com/gh/common/util/PlatformUtils.java b/app/src/main/java/com/gh/common/util/PlatformUtils.java index 8e26c64745..4d9a7b5cfa 100644 --- a/app/src/main/java/com/gh/common/util/PlatformUtils.java +++ b/app/src/main/java/com/gh/common/util/PlatformUtils.java @@ -33,15 +33,15 @@ import de.greenrobot.event.EventBus; public class PlatformUtils { + private static PlatformUtils mInstance; + + private Context context; + private ArrayMap platformMap; private ArrayMap platformPicMap; private ArrayMap platformPicUrlMap; private ArrayMap platformColorMap; - private static PlatformUtils mInstance; - - private Context context; - private PlatformUtils(Context con) { this.context = con.getApplicationContext(); initMap(); @@ -214,7 +214,7 @@ public class PlatformUtils { if (color != null) { return color; } - return "#1BA4FC"; + return "#00B7FA"; } public int getPlatformPic(String platform) { @@ -309,4 +309,5 @@ public class PlatformUtils { }); AppController.addToRequestQueue(request, SplashScreenActivity.class); } + } diff --git a/app/src/main/java/com/gh/common/util/RSEUtils.java b/app/src/main/java/com/gh/common/util/RSEUtils.java index 832bb20674..787545543e 100644 --- a/app/src/main/java/com/gh/common/util/RSEUtils.java +++ b/app/src/main/java/com/gh/common/util/RSEUtils.java @@ -43,7 +43,6 @@ public class RSEUtils { * 使用公钥加密 * * @param content - * @param key * @return */ public static String encryptByPublic(String content) { @@ -68,10 +67,7 @@ public class RSEUtils { /** * 使用公钥解密 * - * @param content - * 密文 - * @param key - * 商户私钥 + * @param content 密文 * @return 解密后的字符串 */ public static String decryptByPublic(String content) { diff --git a/app/src/main/java/com/gh/common/util/SpeedUtils.java b/app/src/main/java/com/gh/common/util/SpeedUtils.java index 6c34784946..b1846695c6 100644 --- a/app/src/main/java/com/gh/common/util/SpeedUtils.java +++ b/app/src/main/java/com/gh/common/util/SpeedUtils.java @@ -5,7 +5,7 @@ public class SpeedUtils { public static String getSpeed(long kSpeed) { if (kSpeed >= 1000) { float mSpeed = kSpeed / 1024f; - String str = mSpeed + ""; + String str = String.valueOf(mSpeed); if (str.length() > 4) { str = str.substring(0, 4); } @@ -14,10 +14,9 @@ public class SpeedUtils { return kSpeed + "K/s"; } - public static String getRemainTime(long totalSize, long currentSize, - long speed) { + public static String getRemainTime(long totalSize, long currentSize, long speed) { long remainSize = totalSize - currentSize; - long remainTime = 0; + long remainTime; if (speed != 0) { remainTime = remainSize / speed; } else { @@ -35,4 +34,5 @@ public class SpeedUtils { return second + "秒"; } } + } diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 0431fdd257..7cecf26956 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -631,7 +631,7 @@ public class DownloadDialog { int color = Color.parseColor(PlatformUtils.getInstance(context) .getPlatformColor(apkEntity.getPlatform())); GradientDrawable gradientDrawable = new GradientDrawable(); - gradientDrawable.setColor(0xFFFFFFFF); + gradientDrawable.setColor(Color.WHITE); gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1), color); viewHolder.itemView.setBackgroundDrawable(gradientDrawable); @@ -690,7 +690,7 @@ public class DownloadDialog { int color = Color.parseColor(PlatformUtils.getInstance( context).getPlatformColor(apkEntity.getPlatform())); GradientDrawable gradientDrawable = new GradientDrawable(); - gradientDrawable.setColor(0xFFFFFFFF); + gradientDrawable.setColor(Color.WHITE); gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1), color); viewHolder.itemView.setBackgroundDrawable(gradientDrawable); diff --git a/app/src/main/java/com/gh/common/view/HorizontalItemDecoration.java b/app/src/main/java/com/gh/common/view/HorizontalItemDecoration.java index 85b973733e..11864a09e1 100644 --- a/app/src/main/java/com/gh/common/view/HorizontalItemDecoration.java +++ b/app/src/main/java/com/gh/common/view/HorizontalItemDecoration.java @@ -1,6 +1,7 @@ package com.gh.common.view; import android.content.Context; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.support.v7.widget.RecyclerView; @@ -16,7 +17,7 @@ public class HorizontalItemDecoration extends RecyclerView.ItemDecoration { public HorizontalItemDecoration(Context context, int interval, int size) { paint = new Paint(); - paint.setColor(0xffffffff); + paint.setColor(Color.WHITE); mInterval = DisplayUtils.dip2px(context, interval); mSize = size; } diff --git a/app/src/main/java/com/gh/common/view/VerticalItemDecoration.java b/app/src/main/java/com/gh/common/view/VerticalItemDecoration.java index 282a702e81..f04471d28c 100644 --- a/app/src/main/java/com/gh/common/view/VerticalItemDecoration.java +++ b/app/src/main/java/com/gh/common/view/VerticalItemDecoration.java @@ -17,7 +17,7 @@ public class VerticalItemDecoration extends RecyclerView.ItemDecoration { public VerticalItemDecoration(Context context, int interval) { paint = new Paint(); - paint.setColor(context.getResources().getColor(R.color.bg_color)); + paint.setColor(context.getResources().getColor(R.color.background)); mInterval = DisplayUtils.dip2px(context, interval); } diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index 1829657291..f6ec24590e 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; @@ -49,7 +50,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { private RecyclerView concern_rv_show, concern_rv_recommend; private ConcernManager manager; private RelativeLayout concern_rl_title; - private TextView concern_tv_none; + private LinearLayout reuse_none_data; private List list; private List recommendList; @@ -80,7 +81,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { if (!list.isEmpty()) { initConcernGame(); } else { - concern_tv_none.setVisibility(View.VISIBLE); + reuse_none_data.setVisibility(View.VISIBLE); concern_rv_show.setVisibility(View.GONE); } @@ -234,7 +235,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { concernList.remove(position); concern_rv_show.getAdapter().notifyItemRemoved(position); if (list.isEmpty()) { - concern_tv_none.setVisibility(View.VISIBLE); + reuse_none_data.setVisibility(View.VISIBLE); concern_rv_show.setVisibility(View.GONE); } concern_item_btn.setClickable(false); @@ -340,7 +341,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { concernEntity.setId(gameEntity.getId()); list.add(concernEntity); if (list.size() == 1) { - concern_tv_none.setVisibility(View.GONE); + reuse_none_data.setVisibility(View.GONE); concern_rv_show.setVisibility(View.VISIBLE); } concern_rv_show.getAdapter().notifyItemInserted(list.size() - 1); @@ -441,11 +442,11 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { } concernList = new ArrayList(); if (!list.isEmpty()) { - concern_tv_none.setVisibility(View.GONE); + reuse_none_data.setVisibility(View.GONE); concern_rv_show.setVisibility(View.VISIBLE); initConcernGame(); } else { - concern_tv_none.setVisibility(View.VISIBLE); + reuse_none_data.setVisibility(View.VISIBLE); concern_rv_show.setVisibility(View.GONE); } recommendList = new ArrayList(); @@ -461,28 +462,29 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { @Override protected void onDestroy() { super.onDestroy(); - String uuid = ConcernUtils.UUID(this); - JSONArray jsonArray = new JSONArray(); + String uuid = ConcernUtils.uuid(this); + JSONArray data = new JSONArray(); for (ConcernInfo concernInfo : manager.getConcernGame()) { - jsonArray.put(concernInfo.getId()); + data.put(concernInfo.getId()); } - ConcernUtils.UpdateConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern", jsonArray.toString(), new ConcernUtils.DownJsonListener() { - @Override - public void downSucced(String str) { - Utils.log("更新设备关注游戏成功"); - } + ConcernUtils.updateConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern", data, + new ConcernUtils.DownJsonListener() { + @Override + public void downSucced(String str) { + Utils.log("更新设备关注游戏成功"); + } - @Override - public void downFailed() { - Utils.log("更新设备关注游戏失败"); - } - }); + @Override + public void downFailed() { + Utils.log("更新设备关注游戏失败"); + } + }); view = null; concern_rv_show = null; concern_rv_recommend = null; manager = null; concern_rl_title = null; - concern_tv_none = null; + reuse_none_data = null; list = null; recommendList = null; concernList = null; diff --git a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java index 1e2c10242d..1f5e9f84b2 100644 --- a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java +++ b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java @@ -35,10 +35,12 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements OnClickListener, OnPageChangeListener { private ViewPager downloadmanager_viewPager; - private TextView downloadmanager_tv_download, downloadmanager_tv_update, - downloadmanager_download_number, downloadmanager_update_number; - private LinearLayout downloadmanager_ll_download, - downloadmanager_ll_update; + private TextView downloadmanager_tv_download; + private TextView downloadmanager_tv_update; + private TextView downloadmanager_download_number; + private TextView downloadmanager_update_number; + private LinearLayout downloadmanager_ll_download; + private LinearLayout downloadmanager_ll_update; private View downloadmanager_slide_line; private LinearLayout.LayoutParams lparams; @@ -52,37 +54,32 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); View contentView = View.inflate(this, R.layout.activity_downloadmanager, null); - init(contentView, "下载更新管理"); downloadmanager_ll_download.setOnClickListener(this); downloadmanager_ll_update.setOnClickListener(this); - int currentItem = getIntent().getIntExtra("currentItem", -1); - int updateSize = PackageManager.getUpdateList().size(); - - int downloadSize = DownloadManager.getInstance(getApplicationContext()) - .getAll().size(); - if (updateSize != 0) { downloadmanager_update_number.setVisibility(View.VISIBLE); - downloadmanager_update_number.setText("" + updateSize); + downloadmanager_update_number.setText(String.valueOf(updateSize)); } else { downloadmanager_update_number.setVisibility(View.GONE); } + int downloadSize = DownloadManager.getInstance( + getApplicationContext()).getAll().size(); if (downloadSize != 0) { downloadmanager_download_number.setVisibility(View.VISIBLE); - downloadmanager_download_number.setText("" + downloadSize); + downloadmanager_download_number.setText(String.valueOf(downloadSize)); } else { downloadmanager_download_number.setVisibility(View.GONE); } + int currentItem = getIntent().getIntExtra("currentItem", -1); if (currentItem == -1) { if (updateSize != 0 && downloadSize == 0) { currentItem = 1; @@ -157,17 +154,15 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements new EBUISwitch("DownloadManagerActivity", 0)); downloadmanager_ll_download.setClickable(false); downloadmanager_ll_update.setClickable(true); - downloadmanager_tv_download.setTextColor(getResources().getColor( - R.color.theme_colors)); - downloadmanager_tv_update.setTextColor(0xFF333333); + downloadmanager_tv_download.setTextColor(getResources().getColor(R.color.theme)); + downloadmanager_tv_update.setTextColor(getResources().getColor(R.color.title)); } else { EventBus.getDefault().post( new EBUISwitch("DownloadManagerActivity", 1)); downloadmanager_ll_download.setClickable(true); downloadmanager_ll_update.setClickable(false); - downloadmanager_tv_download.setTextColor(0xFF333333); - downloadmanager_tv_update.setTextColor(getResources().getColor( - R.color.theme_colors)); + downloadmanager_tv_download.setTextColor(getResources().getColor(R.color.title)); + downloadmanager_tv_update.setTextColor(getResources().getColor(R.color.theme)); } } @@ -211,7 +206,7 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements } public void onEventMainThread(EBDownloadChanged changed) { - if (changed.getType() == "download") { + if ("download".equals(changed.getType())) { if (changed.getVisibility() == View.VISIBLE){ downloadmanager_download_number.setVisibility(View.VISIBLE); } else if (changed.getVisibility() == View.GONE) { @@ -219,15 +214,15 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements } else if (changed.getVisibility() == View.INVISIBLE) { downloadmanager_download_number.setVisibility(View.INVISIBLE); } - downloadmanager_download_number.setText(changed.getSize() + ""); - } else if (changed.getType() == "update") { + downloadmanager_download_number.setText(String.valueOf(changed.getSize())); + } else if ("update".equals(changed.getType())) { if (changed.getSize() == -1) { int number = Integer.valueOf(downloadmanager_update_number .getText().toString()); if (number == 1) { downloadmanager_update_number.setVisibility(View.GONE); } else { - downloadmanager_update_number.setText((number - 1) + ""); + downloadmanager_update_number.setText(String.valueOf(number - 1)); } } else { if (changed.getSize() != 0) { @@ -238,7 +233,7 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements } else if (changed.getVisibility() == View.INVISIBLE) { downloadmanager_update_number.setVisibility(View.INVISIBLE); } - downloadmanager_update_number.setText(changed.getSize() + ""); + downloadmanager_update_number.setText(String.valueOf(changed.getSize())); } else { downloadmanager_update_number.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/gh/gamecenter/GameActivity.java b/app/src/main/java/com/gh/gamecenter/GameActivity.java index f1cf962113..92bb0fd1bb 100644 --- a/app/src/main/java/com/gh/gamecenter/GameActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameActivity.java @@ -81,15 +81,13 @@ public class GameActivity extends BaseFragmentActivity implements if (position == 0) { new_game_text.setClickable(false); test_game_text.setClickable(true); - new_game_text.setTextColor(getResources().getColor( - R.color.theme_colors)); - test_game_text.setTextColor(0xFF333333); + new_game_text.setTextColor(getResources().getColor(R.color.theme)); + test_game_text.setTextColor(getResources().getColor(R.color.title)); } else { new_game_text.setClickable(true); test_game_text.setClickable(false); - new_game_text.setTextColor(0xFF333333); - test_game_text.setTextColor(getResources().getColor( - R.color.theme_colors)); + new_game_text.setTextColor(getResources().getColor(R.color.title)); + test_game_text.setTextColor(getResources().getColor(R.color.theme)); } if (position != 0) { rparams.leftMargin = (int) (width * position) + width / 4; @@ -143,16 +141,14 @@ public class GameActivity extends BaseFragmentActivity implements EventBus.getDefault().post(new EBUISwitch("GameActivity", 0)); new_game_text.setClickable(false); test_game_text.setClickable(true); - new_game_text.setTextColor(getResources().getColor( - R.color.theme_colors)); - test_game_text.setTextColor(0xFF333333); + new_game_text.setTextColor(getResources().getColor(R.color.theme)); + test_game_text.setTextColor(getResources().getColor(R.color.title)); } else { EventBus.getDefault().post(new EBUISwitch("GameActivity", 1)); new_game_text.setClickable(true); test_game_text.setClickable(false); - new_game_text.setTextColor(0xFF333333); - test_game_text.setTextColor(getResources().getColor( - R.color.theme_colors)); + new_game_text.setTextColor(getResources().getColor(R.color.title)); + test_game_text.setTextColor(getResources().getColor(R.color.theme)); } } diff --git a/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java index bf0e2f2d8c..c313ad508b 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java @@ -153,8 +153,8 @@ public class GameDeatilsNewsActivity extends BaseActivity{ } public StateListDrawable selectorBg(){ - GradientDrawable roundCornerShape1 = createRoundCornerShape(2, 50, Color.parseColor("#b3b3b3"), Color.parseColor("#ffffff")); - GradientDrawable roundCornerShape2 = createRoundCornerShape(0, 50, Color.TRANSPARENT, Color.parseColor("#00b7fa")); + GradientDrawable roundCornerShape1 = createRoundCornerShape(2, 50, getResources().getColor(R.color.hint), Color.WHITE); + GradientDrawable roundCornerShape2 = createRoundCornerShape(0, 50, Color.TRANSPARENT, getResources().getColor(R.color.theme)); GradientDrawable roundCornerShape3 = createRoundCornerShape(0, 50, Color.TRANSPARENT, Color.parseColor("#59d3ff")); StateListDrawable bg_install = new StateListDrawable(); @@ -191,14 +191,14 @@ public class GameDeatilsNewsActivity extends BaseActivity{ radioButton.setLayoutParams(layoutParams); radioButton.setButtonDrawable(android.R.color.transparent); radioButton.setGravity(Gravity.CENTER); - radioButton.setBackground(selectorBg()); + radioButton.setBackgroundDrawable(selectorBg()); radioButton.setText(listType.get(index)); - radioButton.setTextColor(Color.parseColor("#b3b3b3")); + radioButton.setTextColor(getResources().getColor(R.color.hint)); ll_type.addView(radioButton); if (i == selectI&&j==selectJ){ radioButton.setSelected(true); newsType = radioButton.getText().toString(); - radioButton.setTextColor(Color.parseColor("#ffffff")); + radioButton.setTextColor(Color.WHITE); } index++; final int finalI = i; diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java index 183896eac8..9e7cd9ae04 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java @@ -1,6 +1,7 @@ package com.gh.gamecenter; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; @@ -294,7 +295,7 @@ public class GameDetailsActivity extends BaseFragmentActivity implements gamedetails_tv_download.setText("暂无下载"); gamedetails_tv_download .setBackgroundResource(R.drawable.textview_gray_style); - gamedetails_tv_download.setTextColor(0xFF999999); + gamedetails_tv_download.setTextColor(getResources().getColor(R.color.btn_gray)); gamedetails_tv_download.setClickable(false); } else { boolean isInstalled = false; @@ -334,7 +335,7 @@ public class GameDetailsActivity extends BaseFragmentActivity implements top_tv_attention.setText("关注"); top_tv_attention .setBackgroundResource(R.drawable.textview_red_style); - top_tv_attention.setTextColor(0xffffffff); + top_tv_attention.setTextColor(Color.WHITE); } ImageUtils.getInstance(this).display(entity.getIcon(), top_iv_icon); @@ -426,7 +427,7 @@ public class GameDetailsActivity extends BaseFragmentActivity implements top_tv_attention.setText("关注"); top_tv_attention.setBackgroundResource(R.drawable.textview_red_style); - top_tv_attention.setTextColor(0xffffffff); + top_tv_attention.setTextColor(Color.WHITE); } }); } @@ -624,15 +625,13 @@ public class GameDetailsActivity extends BaseFragmentActivity implements gamedetails_tv_information.setClickable(true); gamedetails_tv_strategy.setClickable(true); - titlebar_tv_details.setTextColor(getResources().getColor( - R.color.theme_colors)); - titlebar_tv_information.setTextColor(0xFF333333); - titlebar_tv_strategy.setTextColor(0xFF333333); + titlebar_tv_details.setTextColor(getResources().getColor(R.color.theme)); + titlebar_tv_information.setTextColor(getResources().getColor(R.color.title)); + titlebar_tv_strategy.setTextColor(getResources().getColor(R.color.title)); - gamedetails_tv_details.setTextColor(getResources().getColor( - R.color.theme_colors)); - gamedetails_tv_information.setTextColor(0xFF333333); - gamedetails_tv_strategy.setTextColor(0xFF333333); + gamedetails_tv_details.setTextColor(getResources().getColor(R.color.theme)); + gamedetails_tv_information.setTextColor(getResources().getColor(R.color.title)); + gamedetails_tv_strategy.setTextColor(getResources().getColor(R.color.title)); break; case 1: if (gamedetails_ll_topbar.getVisibility() == View.VISIBLE) { @@ -648,15 +647,13 @@ public class GameDetailsActivity extends BaseFragmentActivity implements gamedetails_tv_information.setClickable(false); gamedetails_tv_strategy.setClickable(true); - titlebar_tv_details.setTextColor(0xFF333333); - titlebar_tv_information.setTextColor(getResources().getColor( - R.color.theme_colors)); - titlebar_tv_strategy.setTextColor(0xFF333333); + titlebar_tv_details.setTextColor(getResources().getColor(R.color.title)); + titlebar_tv_information.setTextColor(getResources().getColor(R.color.theme)); + titlebar_tv_strategy.setTextColor(getResources().getColor(R.color.title)); - gamedetails_tv_details.setTextColor(0xFF333333); - gamedetails_tv_information.setTextColor(getResources().getColor( - R.color.theme_colors)); - gamedetails_tv_strategy.setTextColor(0xFF333333); + gamedetails_tv_details.setTextColor(getResources().getColor(R.color.title)); + gamedetails_tv_information.setTextColor(getResources().getColor(R.color.theme)); + gamedetails_tv_strategy.setTextColor(getResources().getColor(R.color.title)); break; case 2: if (gamedetails_ll_topbar.getVisibility() == View.VISIBLE) { @@ -672,15 +669,13 @@ public class GameDetailsActivity extends BaseFragmentActivity implements gamedetails_tv_information.setClickable(true); gamedetails_tv_strategy.setClickable(false); - titlebar_tv_details.setTextColor(0xFF333333); - titlebar_tv_information.setTextColor(0xFF333333); - titlebar_tv_strategy.setTextColor(getResources().getColor( - R.color.theme_colors)); + titlebar_tv_details.setTextColor(getResources().getColor(R.color.title)); + titlebar_tv_information.setTextColor(getResources().getColor(R.color.title)); + titlebar_tv_strategy.setTextColor(getResources().getColor(R.color.theme)); - gamedetails_tv_details.setTextColor(0xFF333333); - gamedetails_tv_information.setTextColor(0xFF333333); - gamedetails_tv_strategy.setTextColor(getResources().getColor( - R.color.theme_colors)); + gamedetails_tv_details.setTextColor(getResources().getColor(R.color.title)); + gamedetails_tv_information.setTextColor(getResources().getColor(R.color.title)); + gamedetails_tv_strategy.setTextColor(getResources().getColor(R.color.theme)); break; } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index b4281fc4a7..5bc469c0ef 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -968,8 +968,7 @@ public class MainActivity extends BaseFragmentActivity implements case 0: home1Layout.setClickable(false); home1Image.setImageResource(R.drawable.home1_selected); - home1Title.setTextColor(getResources().getColor( - R.color.theme_colors)); + home1Title.setTextColor(getResources().getColor(R.color.theme)); if (pluginFragmentActivity == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { @@ -993,8 +992,7 @@ public class MainActivity extends BaseFragmentActivity implements case 1: home2Layout.setClickable(false); home2Image.setImageResource(R.drawable.home2_selected); - home2Title.setTextColor(getResources().getColor( - R.color.theme_colors)); + home2Title.setTextColor(getResources().getColor(R.color.theme)); if (newsFragment == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { @@ -1018,8 +1016,7 @@ public class MainActivity extends BaseFragmentActivity implements case 2: home3Layout.setClickable(false); home3Image.setImageResource(R.drawable.home3_selected); - home3Title.setTextColor(getResources().getColor( - R.color.theme_colors)); + home3Title.setTextColor(getResources().getColor(R.color.theme)); if (home3Fragment == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { @@ -1056,9 +1053,9 @@ public class MainActivity extends BaseFragmentActivity implements home1Image.setImageResource(R.drawable.home1_unselected); home2Image.setImageResource(R.drawable.home2_unselected); home3Image.setImageResource(R.drawable.home3_unselected); - home1Title.setTextColor(0xFF333333); - home2Title.setTextColor(0xFF333333); - home3Title.setTextColor(0xFF333333); + home1Title.setTextColor(getResources().getColor(R.color.title)); + home2Title.setTextColor(getResources().getColor(R.color.title)); + home3Title.setTextColor(getResources().getColor(R.color.title)); } /** diff --git a/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java index 4829a55b48..2414931c05 100644 --- a/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java @@ -3,6 +3,7 @@ package com.gh.gamecenter; import android.app.Dialog; import android.content.Context; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.support.v4.util.ArrayMap; @@ -32,6 +33,7 @@ import com.gh.common.constant.Config; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; +import com.gh.common.util.DisplayUtils; import com.gh.common.util.FileUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.MD5Utils; @@ -123,16 +125,19 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + View contentView = View.inflate(this, R.layout.activity_new_gamedetails, null); + RelativeLayout reuse_actionbar = (RelativeLayout) contentView.findViewById(R.id.reuse_actionbar); iv_share = new ImageView(this); iv_share.setImageResource(R.drawable.share_icon); - float dp = getResources().getDisplayMetrics().density; - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)(dp*20),(int)(dp*20)); + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( + DisplayUtils.dip2px(this, 20), DisplayUtils.dip2px(this, 20)); params.addRule( RelativeLayout.CENTER_VERTICAL); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT ); - params.setMargins(0,0,(int)(dp*10),0); + params.rightMargin = DisplayUtils.dip2px(this, 10); reuse_actionbar.addView(iv_share,params); + gameId = getIntent().getStringExtra("gameId"); entrance = getIntent().getStringExtra("entrance"); if (gameId != null) { @@ -287,7 +292,7 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick tvDowload.setText("暂无下载"); tvDowload .setBackgroundResource(R.drawable.textview_gray_style); - tvDowload.setTextColor(0xFF999999); + tvDowload.setTextColor(context.getResources().getColor(R.color.btn_gray)); tvDowload.setClickable(false); } else { boolean isInstalled = false; @@ -569,10 +574,10 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick @Override protected void onDestroy() { super.onDestroy(); - String uuid = ConcernUtils.UUID(this); - if (isConcern == true&&concernCode ==2){ + String uuid = ConcernUtils.uuid(this); + if (isConcern && concernCode == 2){ //取消关注 - ConcernUtils.DeleteConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern/" + gameId, new ConcernUtils.DownJsonListener() { + ConcernUtils.deleteConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern/" + gameId, new ConcernUtils.DownJsonListener() { @Override public void downSucced(String str) { Utils.log("删除提交成功==游戏详情"); @@ -584,9 +589,9 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick } }); - }else if (isConcern == false&& concernCode == 1){ + } else if (!isConcern && concernCode == 1){ //添加关注 - ConcernUtils.PostConcernGameId("[" + gameId + "]", Config.HOST + "v2d0/device/" + uuid + "/concern", new ConcernUtils.DownJsonListener() { + ConcernUtils.postConcernGameId(gameId, Config.HOST + "v2d0/device/" + uuid + "/concern", new ConcernUtils.DownJsonListener() { @Override public void downSucced(String str) { Utils.log("关注提交成功==游戏详情"); @@ -597,7 +602,7 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick Utils.log("关注提交失败==游戏详情"); } }); - }else { + } else { Utils.log("无关注操作==游戏详情"); } gameId = null; @@ -619,8 +624,8 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick handler = null; } - public class GameDetailsAdapter extends RecyclerView.Adapter{ + private Context context; public GameDetailsAdapter(Context context) { @@ -628,6 +633,7 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick getGameDetail(); getGameNews(); } + @Override public int getItemViewType(int position){ if (position == 0){ @@ -649,7 +655,7 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view ; + View view; switch (viewType){ case 0: view = LayoutInflater.from(context).inflate(R.layout.gamedetails_rv_item_top,parent,false); @@ -850,7 +856,7 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick attention.setText("关注"); attention .setBackgroundResource(R.drawable.textview_red_style); - attention.setTextColor(0xffffffff); + attention.setTextColor(Color.WHITE); } }); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); @@ -890,7 +896,7 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick } else { tv_concern.setText("关注"); tv_concern.setBackgroundResource(R.drawable.textview_red_style); - tv_concern.setTextColor(0xffffffff); + tv_concern.setTextColor(Color.WHITE); } } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsActivity.java b/app/src/main/java/com/gh/gamecenter/NewsActivity.java index 9407976d1e..cac9c67308 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsActivity.java @@ -765,7 +765,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener { essaydetails_ll_bottom.setVisibility(View.VISIBLE); essaydetails_tv_download.setText("暂无下载"); essaydetails_tv_download.setBackgroundResource(R.drawable.textview_gray_style); - essaydetails_tv_download.setTextColor(0xFF999999); + essaydetails_tv_download.setTextColor(getResources().getColor(R.color.btn_gray)); essaydetails_tv_download.setClickable(false); } else if (Config.isShow) { essaydetails_ll_bottom.setVisibility(View.VISIBLE); @@ -857,7 +857,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener { attention.setText("关注"); attention .setBackgroundResource(R.drawable.textview_red_style); - attention.setTextColor(0xffffffff); + attention.setTextColor(Color.WHITE); } }); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); @@ -1034,7 +1034,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener { } else { holder.essaydetails_attention.setText("关注"); holder.essaydetails_attention.setBackgroundResource(R.drawable.textview_red_style); - holder.essaydetails_attention.setTextColor(0xffffffff); + holder.essaydetails_attention.setTextColor(Color.WHITE); } if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) { for (int i = 0, size = gameEntity.getApk().size(); i < size; i++) { @@ -1362,10 +1362,10 @@ public class NewsActivity extends BaseActivity implements OnClickListener { @Override protected void onDestroy() { super.onDestroy(); - String uuid = ConcernUtils.UUID(this); - if (isConcern == true&&concernCode ==2 && gameEntity.getId()!=null){ + String uuid = ConcernUtils.uuid(this); + if (isConcern && concernCode == 2 && gameEntity.getId() != null) { //取消关注 - ConcernUtils.DeleteConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern/" + gameEntity.getId(), new ConcernUtils.DownJsonListener() { + ConcernUtils.deleteConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern/" + gameEntity.getId(), new ConcernUtils.DownJsonListener() { @Override public void downSucced(String str) { Utils.log("删除提交成功==游戏详情"); @@ -1377,9 +1377,9 @@ public class NewsActivity extends BaseActivity implements OnClickListener { } }); - }else if (isConcern == false&& concernCode == 1&& gameEntity.getId()!=null){ + } else if (!isConcern && concernCode == 1 && gameEntity.getId() != null) { //添加关注 - ConcernUtils.PostConcernGameId("[" + gameEntity.getId() + "]", Config.HOST + "v2d0/device/" + uuid + "/concern", new ConcernUtils.DownJsonListener() { + ConcernUtils.postConcernGameId(gameEntity.getId(), Config.HOST + "v2d0/device/" + uuid + "/concern", new ConcernUtils.DownJsonListener() { @Override public void downSucced(String str) { Utils.log("关注提交成功==游戏详情"); @@ -1390,7 +1390,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener { Utils.log("关注提交失败==游戏详情"); } }); - }else { + } else { Utils.log("无关注操作==游戏详情"); } isDestroy = true; diff --git a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java index 47644cd3e8..b8ace771f2 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java @@ -42,7 +42,8 @@ public class NewsSearchActivity extends BaseActivity { private RecyclerView mNewsRecyclerView; private List newsEntities; private NewsSearchAdapter searchAdapter; - private TextView tvSearch, searchNonews; + private TextView tvSearch; + private LinearLayout reuse_none_data; private EditText edSearch; private LinearLayout llLoading; private LinearLayout noConnection; @@ -85,7 +86,7 @@ public class NewsSearchActivity extends BaseActivity { noConnection = (LinearLayout) findViewById(R.id.reuse_no_connection); llLoading = (LinearLayout) findViewById(R.id.gamedetails_news_ll_loading); cardView = (CardView) findViewById(R.id.gamedetails_news_cardView); - searchNonews = (TextView) findViewById(R.id.search_nonews); + reuse_none_data = (LinearLayout) findViewById(R.id.reuse_none_data); layoutManager = new MeasureHeightLayoutManager(this); @@ -167,10 +168,10 @@ public class NewsSearchActivity extends BaseActivity { cardView.setVisibility(View.VISIBLE); if (newsEntities.size() == 0){ cardView.setVisibility(View.GONE); - searchNonews.setVisibility(View.VISIBLE); + reuse_none_data.setVisibility(View.VISIBLE); }else { cardView.setVisibility(View.VISIBLE); - searchNonews.setVisibility(View.GONE); + reuse_none_data.setVisibility(View.GONE); } if (news.isEmpty() || (news.size() < 20)) { isRemove = true; @@ -203,7 +204,7 @@ public class NewsSearchActivity extends BaseActivity { newsEntities = null; searchAdapter = null; tvSearch = null; - searchNonews = null; + reuse_none_data = null; edSearch = null; llLoading = null; noConnection = null; diff --git a/app/src/main/java/com/gh/gamecenter/SearchActivity.java b/app/src/main/java/com/gh/gamecenter/SearchActivity.java index 5e103d49cc..ab1aa2fc63 100644 --- a/app/src/main/java/com/gh/gamecenter/SearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SearchActivity.java @@ -86,7 +86,7 @@ public class SearchActivity extends BaseFragmentActivity { setTranslucentStatus(true); SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); - tintManager.setStatusBarTintResource(R.color.theme_colors); + tintManager.setStatusBarTintResource(R.color.theme); SystemBarConfig config = tintManager.getConfig(); contentView.setPadding(0, config.getPixelInsetTop(false), 0, config.getPixelInsetBottom()); diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 070362e8f7..12624691b8 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -107,7 +107,7 @@ public class SplashScreenActivity extends BaseActivity { if (mActionBar != null) { mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); RelativeLayout relativeLayout = new RelativeLayout(this); - relativeLayout.setBackgroundResource(R.color.theme_colors); + relativeLayout.setBackgroundResource(R.color.theme); LayoutParams params = new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); mActionBar.setCustomView(relativeLayout, params);// 自定义ActionBar布局 diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index f70dbe40f2..a52d1838ac 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -3,6 +3,7 @@ package com.gh.gamecenter; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; +import android.graphics.Color; import android.os.Bundle; import android.support.v7.widget.CardView; import android.telephony.TelephonyManager; @@ -141,7 +142,7 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener TextView cancel = (TextView) view .findViewById(R.id.alertdialog_cannel); cancel.setText("我要填写"); - cancel.setTextColor(0xffFFFFFF); + cancel.setTextColor(Color.WHITE); cancel.setBackgroundResource(R.drawable.textview_blue_style); cancel.setOnClickListener(new OnClickListener() { @Override @@ -167,7 +168,7 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener TextView confirm = (TextView) view .findViewById(R.id.alertdialog_confirm); confirm.setText("直接提交"); - confirm.setTextColor(0xff999999); + confirm.setTextColor(getResources().getColor(R.color.btn_gray)); confirm.setBackgroundResource(R.drawable.textview_cancel_style); confirm.setOnClickListener(new OnClickListener() { @Override @@ -208,7 +209,7 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener map.put("ghversion", PackageUtils.getVersion(this)); map.put("channel", (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID")); map.put("type", android.os.Build.MODEL); - map.put("sdk", android.os.Build.VERSION.SDK_INT + ""); + map.put("sdk", String.valueOf(android.os.Build.VERSION.SDK_INT)); map.put("version", android.os.Build.VERSION.RELEASE); map.put("imei", ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId()); JsonObjectRequest request = new JsonObjectRequest(Method.POST, diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java index d23b8ee19f..c34a068cd0 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -79,10 +79,8 @@ public class SubjectAdapter extends RecyclerView.Adapter(); - platformMap = new ArrayMap>(); - gameMap = new ArrayMap>(); - nameMap = new ArrayMap(); - statusMap = new ArrayMap(); + locationMap = new ArrayMap<>(); + platformMap = new ArrayMap<>(); + gameMap = new ArrayMap<>(); + nameMap = new ArrayMap<>(); + statusMap = new ArrayMap<>(); dismissEntity = new DismissEntity(false); // 黄壮华 添加 初始化游戏状态 修改2015/8/21 DownloadItemUtils.initializeGameMap(context, gameMap); - list = new ArrayList(); + list = new ArrayList<>(); isLoaded = false; isNetworkError = false; this.id = id; - initList(page); + initList(1); } public void initList(final int page) { - isLoaded =false; + isLoaded = false; JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( TimestampUtils.addTimestamp(Config.HOST + "v1d50/game/column/" + id +"?page="+ page, Constants.GAME_CD), new Response.Listener() { - @Override public void onResponse(JSONArray response) { processingData(response); } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + // 无网络连接 + if (error.getClass().equals(NoConnectionError.class) + || error.getClass().equals(TimeoutError.class)) { + if (page == 1){ + if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) { + subject_pb_loading.setVisibility(View.GONE); + } + Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); + subject_list.setVisibility(View.GONE); + reuse_no_connection.setVisibility(View.VISIBLE); + }else { + Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); + isNetworkError = true; + notifyDataSetChanged(); + } - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - // 无网络连接 - if (error.getClass().equals(NoConnectionError.class) - || error.getClass().equals(TimeoutError.class)) { - if (page == 1){ - if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) { - subject_pb_loading.setVisibility(View.GONE); } - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); - subject_list.setVisibility(View.GONE); - reuse_no_connection.setVisibility(View.VISIBLE); - }else { - Toast.makeText(context, "网络错误", Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyDataSetChanged(); } - - } - } - - }); + }); AppController.addToRequestQueue(request, SubjectActivity.class); } @@ -185,7 +180,7 @@ public class SubjectAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("入口", "热门卡牌"); DataUtils.onEvent(context, "游戏详情", entity.getName(), kv); diff --git a/app/src/main/java/com/gh/gamecenter/download/DownLoadFragment.java b/app/src/main/java/com/gh/gamecenter/download/DownLoadFragment.java index f96ca96bfb..910320131d 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/DownLoadFragment.java @@ -9,7 +9,7 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; +import android.widget.LinearLayout; import com.gh.common.util.PackageUtils; import com.gh.download.DataWatcher; @@ -41,7 +41,7 @@ public class DownLoadFragment extends Fragment { private View view; private RecyclerView downloadmanager_rv_show; private DownloadAdapter adapter; - private TextView downloadmanager_tv_none; + private LinearLayout reuse_none_data; private ArrayMap locationMap; private ArrayMap statusMap; @@ -103,8 +103,8 @@ public class DownLoadFragment extends Fragment { int base = (adapter.getDoneList().isEmpty() ? 0 : 1 + adapter.getDoneList().size()); if (adapter.getDownloadingList().size() == 1) { adapter.notifyItemRangeInserted(base, 2); - if (downloadmanager_tv_none.getVisibility() == View.VISIBLE) { - downloadmanager_tv_none.setVisibility(View.GONE); + if (reuse_none_data.getVisibility() == View.VISIBLE) { + reuse_none_data.setVisibility(View.GONE); } } else { adapter.notifyItemInserted(base + adapter.getDownloadingList().size()); @@ -129,11 +129,11 @@ public class DownLoadFragment extends Fragment { urlMap = new ArrayMap<>(); deleteList = new ArrayList<>(); - downloadmanager_tv_none = (TextView) view.findViewById(R.id.downloadmanager_tv_none); + reuse_none_data = (LinearLayout) view.findViewById(R.id.reuse_none_data); downloadmanager_rv_show = (RecyclerView) view.findViewById(R.id.downloadmanager_rv_show); downloadmanager_rv_show.setHasFixedSize(true); - adapter = new DownloadAdapter(getActivity(), downloadmanager_rv_show, downloadmanager_tv_none, + adapter = new DownloadAdapter(getActivity(), downloadmanager_rv_show, reuse_none_data, locationMap, statusMap, deleteList); downloadmanager_rv_show.setAdapter(adapter); downloadmanager_rv_show.setLayoutManager(new LinearLayoutManager(getActivity())); @@ -174,8 +174,8 @@ public class DownLoadFragment extends Fragment { EventBus.getDefault().post(new EBDownloadChanged("download", View.GONE, 0)); locationMap.clear(); adapter.notifyDataSetChanged(); - if (downloadmanager_tv_none.getVisibility() == View.GONE) { - downloadmanager_tv_none.setVisibility(View.VISIBLE); + if (reuse_none_data.getVisibility() == View.GONE) { + reuse_none_data.setVisibility(View.VISIBLE); } } else if (adapter.getDoneList().isEmpty()) { EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, @@ -238,7 +238,7 @@ public class DownLoadFragment extends Fragment { adapter.notifyDataSetChanged(); if (adapter.getDownloadingList().isEmpty() && adapter.getDoneList().isEmpty()) { - downloadmanager_tv_none.setVisibility(View.VISIBLE); + reuse_none_data.setVisibility(View.VISIBLE); } } @@ -254,7 +254,7 @@ public class DownLoadFragment extends Fragment { EventBus.getDefault().unregister(this); view = null; downloadmanager_rv_show = null; - downloadmanager_tv_none = null; + reuse_none_data = null; locationMap = null; statusMap = null; urlMap = null; diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadAdapter.java b/app/src/main/java/com/gh/gamecenter/download/DownloadAdapter.java index c116da4d22..dd6e7c4192 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadAdapter.java @@ -45,7 +45,7 @@ public class DownloadAdapter extends RecyclerView.Adapter downloadingList; private List doneList; @@ -56,7 +56,7 @@ public class DownloadAdapter extends RecyclerView.Adapter lMap, ArrayMap sMap, ArrayList dList) { @@ -149,7 +149,7 @@ public class DownloadAdapter extends RecyclerView.Adapter private Context context; private LinearLayout gameupdate_ll_loading; - private TextView gameupdate_tv_none; + private LinearLayout gameupdate_tv_none; private ArrayMap locationMap; private ArrayMap packageNameMap; @@ -73,7 +73,7 @@ public class UpdateAdapter extends RecyclerView.Adapter public UpdateAdapter(Context context, LinearLayout loading, - TextView none, + LinearLayout none, String packageName, boolean isUpdate) { this.context = context; @@ -468,7 +468,7 @@ public class UpdateAdapter extends RecyclerView.Adapter if (successMap.get(position - 1)) { viewHolder.gu_item_btv_update.setText("启动"); - viewHolder.gu_item_btv_update.setTextColor(0xFFFFFFFF); + viewHolder.gu_item_btv_update.setTextColor(Color.WHITE); viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_launch_style); } else { DownloadEntry entry = entryMap.get(position - 1); @@ -479,17 +479,17 @@ public class UpdateAdapter extends RecyclerView.Adapter viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugining_style); } else { viewHolder.gu_item_btv_update.setText("更新中"); - viewHolder.gu_item_btv_update.setTextColor(0xFF1BA4FC); + viewHolder.gu_item_btv_update.setTextColor(context.getResources().getColor(R.color.theme)); viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_downloading_style); } } else { if (updateEntity.isPlugin()) { viewHolder.gu_item_btv_update.setText("插件化"); - viewHolder.gu_item_btv_update.setTextColor(0xFFFFFFFF); + viewHolder.gu_item_btv_update.setTextColor(Color.WHITE); viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugin_style); } else { viewHolder.gu_item_btv_update.setText("更新"); - viewHolder.gu_item_btv_update.setTextColor(0xFFFFFFFF); + viewHolder.gu_item_btv_update.setTextColor(Color.WHITE); viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_download_style); } } @@ -506,7 +506,7 @@ public class UpdateAdapter extends RecyclerView.Adapter viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugining_style); } else { viewHolder.gu_item_btv_update.setText("更新中"); - viewHolder.gu_item_btv_update.setTextColor(0xFF1BA4FC); + viewHolder.gu_item_btv_update.setTextColor(context.getResources().getColor(R.color.theme)); viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_downloading_style); } @@ -554,7 +554,7 @@ public class UpdateAdapter extends RecyclerView.Adapter size = size / 1024f; unit = "GB"; } - String str = size + ""; + String str = String.valueOf(size); int index = str.lastIndexOf("."); if (index != -1 && str.length() >= index + 3) { str = str.substring(0, index + 3); diff --git a/app/src/main/java/com/gh/gamecenter/download/UpdateFragment.java b/app/src/main/java/com/gh/gamecenter/download/UpdateFragment.java index 3f47f06961..5291935fbe 100644 --- a/app/src/main/java/com/gh/gamecenter/download/UpdateFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/UpdateFragment.java @@ -9,7 +9,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import android.widget.TextView; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBDownloadChanged; @@ -32,7 +31,7 @@ public class UpdateFragment extends Fragment { private RecyclerView gameupdate_rv_show; private UpdateAdapter adapter; private LinearLayout gameupdate_ll_loading; - private TextView gameupdate_tv_none; + private LinearLayout reuse_none_data; private String packageName; private boolean isUpdate; @@ -69,13 +68,13 @@ public class UpdateFragment extends Fragment { gameupdate_ll_loading = (LinearLayout) view.findViewById(R.id.gameupdate_ll_loading); - gameupdate_tv_none = (TextView) view.findViewById(R.id.gameupdate_tv_none); + reuse_none_data = (LinearLayout) view.findViewById(R.id.reuse_none_data); gameupdate_rv_show = (RecyclerView) view.findViewById(R.id.gameupdate_rv_show); gameupdate_rv_show.setHasFixedSize(true); gameupdate_rv_show.setLayoutManager(new LinearLayoutManager(getActivity())); adapter = new UpdateAdapter(getActivity(), gameupdate_ll_loading, - gameupdate_tv_none, packageName, isUpdate); + reuse_none_data, packageName, isUpdate); gameupdate_rv_show.setAdapter(adapter); EventBus.getDefault().register(this); @@ -102,8 +101,8 @@ public class UpdateFragment extends Fragment { gameupdate_rv_show.getAdapter().notifyDataSetChanged(); EventBus.getDefault().post( new EBDownloadChanged("update", View.GONE, adapter.getUpdateList().size())); - if (gameupdate_tv_none.getVisibility() == View.GONE) { - gameupdate_tv_none.setVisibility(View.VISIBLE); + if (reuse_none_data.getVisibility() == View.GONE) { + reuse_none_data.setVisibility(View.VISIBLE); } } else { adapter.getUpdateList().remove(location.intValue()); @@ -138,8 +137,8 @@ public class UpdateFragment extends Fragment { if (adapter.getUpdateList().size() == 1) { adapter.getUpdateList().remove(location.intValue()); adapter.notifyItemRangeRemoved(0, 2); - if (gameupdate_tv_none.getVisibility() == View.GONE) { - gameupdate_tv_none.setVisibility(View.VISIBLE); + if (reuse_none_data.getVisibility() == View.GONE) { + reuse_none_data.setVisibility(View.VISIBLE); } } else { adapter.getUpdateList().remove(location.intValue()); @@ -164,7 +163,7 @@ public class UpdateFragment extends Fragment { view = null; gameupdate_rv_show = null; gameupdate_ll_loading = null; - gameupdate_tv_none = null; + reuse_none_data = null; packageName = null; } } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java index 3658a893f6..18b20bea8d 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java @@ -171,7 +171,7 @@ public class Game1Fragment extends Fragment implements SwipeRefreshLayout.OnRefr }); game_swipe_refresh = (SwipeRefreshLayout) view.findViewById(R.id.game_swipe_refresh); - game_swipe_refresh.setColorSchemeResources(R.color.theme_colors); + game_swipe_refresh.setColorSchemeResources(R.color.theme); game_swipe_refresh.setOnRefreshListener(this); game_pb_loading = (ProgressBarCircularIndeterminate) view.findViewById(R.id.game_pb_loading); 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 c8589b8df7..5777c50cf6 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -325,7 +325,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter infos = concernManager.getInstalledGame(); final int size = infos.size(); - final List list = new ArrayList(); + final List list = new ArrayList<>(); count = 0; for (ConcernInfo info : infos) { JsonObjectExtendedRequest request = new JsonObjectExtendedRequest( @@ -647,7 +647,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) { + if (position > offset + && position <= subjectList.get(i).getData().size() + offset) { int index = position -offset-1; - if (index<0){ + if (index < 0){ index = 0; } gameEntity = subjectList.get(i).getData().get(index); @@ -756,20 +757,20 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", 1); DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv); @@ -168,20 +168,20 @@ public class GameListAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", i); DataUtils.onEvent(context, "点击", "游戏-插件-" + gameEntity, kv); @@ -233,7 +233,7 @@ public class GameListAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", i); DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv); diff --git a/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java index a84d6a7282..0fe13dd220 100644 --- a/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/NewGame2FragmentAdapter.java @@ -166,9 +166,9 @@ public class NewGame2FragmentAdapter extends RecyclerView.Adapter data = subjectEntity.getData(); - int index = 0; + int index; for (int i = 0; i < subjectEntity.getData().size()+1; i++) { index = i-1; if (index<0){ @@ -184,7 +184,7 @@ public class NewGame2FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", finalEntity1.getName()); kv.put("位置", position + 1); DataUtils.onEvent(mContext, "点击", "游戏-推荐-" + subjectEntity.getName(), kv); @@ -252,7 +252,7 @@ public class NewGame2FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", finalEntity.getName()); kv.put("位置", position); DataUtils.onEvent(mContext, "点击", "游戏-插件-" + subjectEntity.getName(), kv); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java index ba16b2edbe..d6f242c39f 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetails/GameDetailsFragment.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.gamedetails; import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; @@ -964,7 +965,7 @@ public class GameDetailsFragment extends Fragment { RelativeLayout relativeLayout = new RelativeLayout( getActivity()); - relativeLayout.setBackgroundColor(0xffffffff); + relativeLayout.setBackgroundColor(Color.WHITE); LayoutParams params = new LayoutParams( LayoutParams.MATCH_PARENT, normalHeight); relativeLayout.setLayoutParams(params); 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 b0f504785e..099beb7bd8 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetails/GameInformationFragment.java @@ -671,7 +671,7 @@ public class GameInformationFragment extends Fragment { viewHolder.item_et_search.setText(keyword); viewHolder.item_et_search.setSelection(keyword.length()); viewHolder.item_et_search.requestFocus(); - Spanned content = Html.fromHtml("与“" + Spanned content = Html.fromHtml("与“" + keyword + "”相关的资讯共" + adapter.getNewsList().size() + "条"); viewHolder.item_tv_search_result.setText(content); @@ -693,13 +693,13 @@ public class GameInformationFragment extends Fragment { viewHolder.item_rv_select.setLayoutParams(lparams); } } else if (position >= 3 && position <= newsList.size() + 2) { - viewHolder.information_type.setText((position - 2) + ""); + viewHolder.information_type.setText(String.valueOf(position - 2)); if (currentPosition == -1) { String title = adapter .getNewsList() .get(position - 3) .getTitle() - .replace(keyword, "" + keyword + ""); + .replace(keyword, "" + keyword + ""); Spanned content = Html.fromHtml(title); viewHolder.information_title.setText(content); } else { @@ -804,9 +804,8 @@ public class GameInformationFragment extends Fragment { view = relativeLayout; } else if (isNull && i == 2) { view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.reuse_none_date, viewGroup, false); - TextView hint = (TextView) view - .findViewById(R.id.reuse_tv_none); + R.layout.reuse_none_data, viewGroup, false); + TextView hint = (TextView) view.findViewById(R.id.reuse_tv_none_data); hint.setText("暂无数据"); int height = fm_gameinformation_rv_show.getHeight() - DisplayUtils.dip2px(getActivity(), 29); @@ -820,9 +819,8 @@ public class GameInformationFragment extends Fragment { } else if (isRemove && (newsList == null || newsList.isEmpty()) && i == 3) { view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.reuse_none_date, viewGroup, false); - TextView hint = (TextView) view - .findViewById(R.id.reuse_tv_none); + R.layout.reuse_none_data, viewGroup, false); + TextView hint = (TextView) view.findViewById(R.id.reuse_tv_none_data); int height = 0; if (currentPosition == -1) { hint.setText("搜索为空"); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetails/GameStrategyFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetails/GameStrategyFragment.java index f4089a4c8f..f82e3a29c6 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetails/GameStrategyFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetails/GameStrategyFragment.java @@ -683,7 +683,7 @@ public class GameStrategyFragment extends Fragment { viewHolder.item_et_search.setText(keyword); viewHolder.item_et_search.setSelection(keyword.length()); viewHolder.item_et_search.requestFocus(); - Spanned content = Html.fromHtml("与“" + Spanned content = Html.fromHtml("与“" + keyword + "”相关的资讯共" + adapter.getNewsList().size() + "条"); viewHolder.item_tv_search_result.setText(content); @@ -706,7 +706,7 @@ public class GameStrategyFragment extends Fragment { } } else if (position >= 3 && position <= adapter.getNewsList().size() + 2) { - viewHolder.information_type.setText((position - 2) + ""); + viewHolder.information_type.setText(String.valueOf(position - 2)); if (currentPosition == -1) { String title = adapter .getNewsList() @@ -714,7 +714,7 @@ public class GameStrategyFragment extends Fragment { .getTitle() .replace( keyword, - "" + keyword + "" + keyword + ""); Spanned content = Html.fromHtml(title); viewHolder.information_title.setText(content); @@ -823,9 +823,8 @@ public class GameStrategyFragment extends Fragment { view = relativeLayout; } else if (isNull && i == 2) { view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.reuse_none_date, viewGroup, false); - TextView hint = (TextView) view - .findViewById(R.id.reuse_tv_none); + R.layout.reuse_none_data, viewGroup, false); + TextView hint = (TextView) view.findViewById(R.id.reuse_tv_none_data); hint.setText("暂无数据"); int height = fm_gamestrategy_rv_show.getHeight() - DisplayUtils.dip2px(getActivity(), 29); @@ -840,9 +839,8 @@ public class GameStrategyFragment extends Fragment { } else if (isRemove && (newsList == null || newsList.isEmpty()) && i == 3) { view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.reuse_none_date, viewGroup, false); - TextView hint = (TextView) view - .findViewById(R.id.reuse_tv_none); + R.layout.reuse_none_data, viewGroup, false); + TextView hint = (TextView) view.findViewById(R.id.reuse_tv_none_data); int height = 0; if (currentPosition == -1) { hint.setText("搜索为空"); diff --git a/app/src/main/java/com/gh/gamecenter/news/NewNews4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/NewNews4Fragment.java index 284b338495..dff1671a3f 100644 --- a/app/src/main/java/com/gh/gamecenter/news/NewNews4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/NewNews4Fragment.java @@ -12,7 +12,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import android.widget.TextView; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.common.constant.Config; @@ -24,7 +23,6 @@ import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.manager.ConcernManager; import org.json.JSONArray; -import org.json.JSONException; import java.util.ArrayList; import java.util.Collections; @@ -41,7 +39,7 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte private NewNews4FragmentAdapter mNews4FragmentAdapter; private LinearLayoutManager mLayoutManager; private LinearLayout noConnection; - private TextView noConcern; + private LinearLayout reuse_none_data; private SwipeRefreshLayout mSwipeRefreshLayout; private ProgressBarCircularIndeterminate mProgressBar; @@ -49,13 +47,9 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte private boolean isRemove = false; private boolean isNetworkError = false; - private NewNews4Fragment news4Fragment = this; - private int page = 1; - private String updateGameId; - - private List listGameId; + private List gameIdList; private ConcernManager manager; @@ -64,42 +58,26 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0){ - String concernID = (String) msg.obj; StringBuffer concernKey = new StringBuffer(); concernKey.setLength(0); StringBuffer gameIdPostData = new StringBuffer(); - listGameId.clear(); - try { - JSONArray jsonArray = new JSONArray(concernID); - for (int i= 0; i< jsonArray.length(); i++){ - String gameId = (String) jsonArray.get(i); - listGameId.add(gameId); - if (i< 5){ - gameIdPostData.append(gameId + "-"); - } + for (int i = 0, size = gameIdList.size(); i < size; i++){ + if (i < 5) { + gameIdPostData.append(gameIdList.get(i)); + gameIdPostData.append("-"); } - //数据进行排序后进行MD5操作 - Collections.sort(listGameId, new Comparator() { - @Override - public int compare(String lhs, String rhs) { - return lhs.compareTo(rhs); - } - }); - for (int i= 0; i< listGameId.size(); i++) { - concernKey.append(listGameId.get(i)); - } - String contentMD5 = MD5Utils.getContentMD5(concernKey.toString()); - - if (gameIdPostData.length()>0){ - gameIdPostData.deleteCharAt(gameIdPostData.length()-1); - } - mNews4FragmentAdapter = new NewNews4FragmentAdapter(getActivity(), news4Fragment, contentMD5,gameIdPostData.toString(),page); - mRecyclerView.setAdapter(mNews4FragmentAdapter); - - } catch (JSONException e) { - e.printStackTrace(); } + for (int i = 0; i < gameIdList.size(); i++) { + concernKey.append(gameIdList.get(i)); + } + String contentMD5 = MD5Utils.getContentMD5(concernKey.toString()); + if (gameIdPostData.length() > 0) { + gameIdPostData.deleteCharAt(gameIdPostData.length() - 1); + } + mNews4FragmentAdapter = new NewNews4FragmentAdapter(getActivity(), NewNews4Fragment.this, + contentMD5, gameIdPostData.toString(), page); + mRecyclerView.setAdapter(mNews4FragmentAdapter); } } }; @@ -107,20 +85,20 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_news4,null); + mView = View.inflate(getActivity(), R.layout.fragment_news4, null); mRecyclerView = (RecyclerView) mView.findViewById(R.id.news4_rv); mSwipeRefreshLayout = (SwipeRefreshLayout) mView.findViewById(R.id.news4_swipe_refresh); mProgressBar = (ProgressBarCircularIndeterminate) mView.findViewById(R.id.news4_pb_loading); noConnection = (LinearLayout) mView.findViewById(R.id.reuse_no_connection); - noConcern = (TextView) mView.findViewById(R.id.concern_tv_none); + reuse_none_data = (LinearLayout) mView.findViewById(R.id.reuse_none_data); mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); manager = new ConcernManager(getActivity()); - listGameId = new ArrayList<>(); + gameIdList = new ArrayList<>(); - LoadConcernGameId(); + loadConcernGameId(); mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override @@ -136,13 +114,13 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte } }); - mSwipeRefreshLayout.setColorSchemeResources(R.color.theme_colors); + mSwipeRefreshLayout.setColorSchemeResources(R.color.theme); mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { page = 1; isRemove = false; - LoadConcernGameId(); + loadConcernGameId(); } }); noConnection.setOnClickListener(new View.OnClickListener() { @@ -154,27 +132,30 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte @Override public void run() { isNetworkError = false; - LoadConcernGameId(); + loadConcernGameId(); } },1000); } }); } - private void LoadConcernGameId() { - JSONArray jsonArray = new JSONArray(); + private void loadConcernGameId() { List concernGame = manager.getConcernGame(); - + gameIdList.clear(); for (ConcernInfo concernInfo : concernGame) { - jsonArray.put(concernInfo.getId()); + gameIdList.add(concernInfo.getId()); } - updateGameId = jsonArray.toString(); - Message message = new Message(); - message.obj = jsonArray.toString(); - message.what = 0; - handler.sendMessage(message); - noConcern.setVisibility(View.GONE); + // 对数据进行排序 + Collections.sort(gameIdList, new Comparator() { + @Override + public int compare(String lhs, String rhs) { + return lhs.compareTo(rhs); + } + }); + + handler.sendEmptyMessage(0); + reuse_none_data.setVisibility(View.GONE); } @Nullable @@ -206,28 +187,28 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte @Override public void isNetworkError(boolean netWorkError) { isNetworkError = netWorkError; - if (isNetworkError == true){ + if (isNetworkError){ noConnection.setVisibility(View.VISIBLE); }else { noConnection.setVisibility(View.GONE); } } - @Override - public void updateconcern() { - String uuid = ConcernUtils.UUID(getActivity()); + public void updateConcern() { + String uuid = ConcernUtils.uuid(getActivity()); - ConcernUtils.UpdateConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern", updateGameId, new ConcernUtils.DownJsonListener() { - @Override - public void downSucced(String str) { - Utils.log("更新设备游戏成功"); - } + ConcernUtils.updateConcernData(Config.HOST + "v2d0/device/" + uuid + "/concern", new JSONArray(gameIdList), + new ConcernUtils.DownJsonListener() { + @Override + public void downSucced(String str) { + Utils.log("更新设备游戏成功"); + } - @Override - public void downFailed() { - Utils.log("更新设备游戏失败"); - } - }); + @Override + public void downFailed() { + Utils.log("更新设备游戏失败"); + } + }); } @Override @@ -236,7 +217,7 @@ public class NewNews4Fragment extends Fragment implements NewNews4FragmentAdapte if (mSwipeRefreshLayout.isRefreshing()){ mSwipeRefreshLayout.setRefreshing(false); } - noConcern.setVisibility(View.VISIBLE); + reuse_none_data.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/gh/gamecenter/news/NewNews4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/NewNews4FragmentAdapter.java index a81b8c3fa2..45ffb59da9 100644 --- a/app/src/main/java/com/gh/gamecenter/news/NewNews4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/NewNews4FragmentAdapter.java @@ -118,7 +118,7 @@ public class NewNews4FragmentAdapter extends RecyclerView.Adapter 5){ LoadJosnData(page); - callBackListener.updateconcern(); + callBackListener.updateConcern(); }else { callBackListener.concernNewsData(true); } @@ -321,7 +321,7 @@ public class NewNews4FragmentAdapter extends RecyclerView.Adapter(); - viewsMap = new ArrayMap(); - urlList = new ArrayList(); + newsList = new ArrayList<>(); + viewsMap = new ArrayMap<>(); + urlList = new ArrayList<>(); isLoading = false; isRemove = false; @@ -257,7 +257,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", newsEntity.getTitle()); kv.put("位置", position + 1); DataUtils.onEvent(context, "点击", "资讯-资讯", kv); @@ -274,7 +274,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", newsEntity.getTitle()); kv.put("位置", position + 1); DataUtils.onEvent(context, "点击", "资讯-资讯", kv); @@ -316,7 +316,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", newsEntity.getTitle()); kv.put("位置", position + 1); DataUtils.onEvent(context, "点击", "资讯-资讯", kv); @@ -343,7 +343,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter concernList; private List concernGameList; @@ -88,7 +88,7 @@ public class News4FragmentAdapter extends RecyclerView recyclerView, ProgressBarCircularIndeterminate pbLoading, LinearLayout linearLayout, - TextView textView, + LinearLayout textView, boolean isLoad) { context = con; news_list = recyclerView; @@ -433,7 +433,7 @@ public class News4FragmentAdapter extends holder.footerview_tv_loading.setBackgroundResource(R.drawable.border_blue_bg); int i = (int) (context.getResources().getDisplayMetrics().density * 5); holder.footerview_tv_loading.setPadding(i,i,i,i); - holder.footerview_tv_loading.setTextColor(0xff1BA4FC); + holder.footerview_tv_loading.setTextColor(context.getResources().getColor(R.color.theme)); holder.itemView.setClickable(true); holder.itemView.setOnClickListener(new OnClickListener() { @Override 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 97d9537c99..7aad647ca4 100644 --- a/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java @@ -186,7 +186,7 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View int downloadSize = DownloadManager.getInstance(getActivity()).getAll().size(); if (downloadSize != 0) { downloadHint.setVisibility(View.VISIBLE); - downloadHint.setText(downloadSize + ""); + downloadHint.setText(String.valueOf(downloadSize)); int width = DisplayUtils.dip2px(getActivity(), 12); RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams( width, width); @@ -253,7 +253,7 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View if (id == R.id.actionbar_notification) { DataUtils.onEvent(getActivity(), "主页", "关注图标"); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("location", "关注图标"); map.put("createOn", System.currentTimeMillis() / 1000); map.put("page", "主页"); @@ -263,23 +263,17 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View } else if (id == R.id.actionbar_rl_download) { DataUtils.onEvent(getActivity(), "主页", "下载图标"); - Map map = new HashMap(); + 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)); + startActivity(new Intent(getActivity(), DownloadManagerActivity.class)); } else if (id == R.id.actionbar_search_input) { DataUtils.onEvent(getActivity(), "主页", "搜索框"); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("location", "搜索框"); map.put("createOn", System.currentTimeMillis() / 1000); map.put("page", "主页"); @@ -292,7 +286,7 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View } else if (id == R.id.actionbar_iv_search) { DataUtils.onEvent(getActivity(), "主页", "搜索图标"); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("location", "搜索图标"); map.put("createOn", System.currentTimeMillis() / 1000); map.put("page", "主页"); @@ -335,37 +329,37 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View tvYuanchuang.setClickable(true); tvGonglve.setClickable(true); tvGuanzhu.setClickable(true); - tvZixun.setTextColor(getResources().getColor(R.color.theme_colors)); - tvYuanchuang.setTextColor(0xFF333333); - tvGonglve.setTextColor(0xFF333333); - tvGuanzhu.setTextColor(0xFF333333); + tvZixun.setTextColor(getResources().getColor(R.color.theme)); + tvYuanchuang.setTextColor(getResources().getColor(R.color.title)); + tvGonglve.setTextColor(getResources().getColor(R.color.title)); + tvGuanzhu.setTextColor(getResources().getColor(R.color.title)); } else if (position == 1) { tvZixun.setClickable(true); tvYuanchuang.setClickable(false); tvGonglve.setClickable(true); tvGuanzhu.setClickable(true); - tvZixun.setTextColor(0xFF333333); - tvYuanchuang.setTextColor(getResources().getColor(R.color.theme_colors)); - tvGonglve.setTextColor(0xFF333333); - tvGuanzhu.setTextColor(0xFF333333); + tvZixun.setTextColor(getResources().getColor(R.color.title)); + tvYuanchuang.setTextColor(getResources().getColor(R.color.theme)); + tvGonglve.setTextColor(getResources().getColor(R.color.title)); + tvGuanzhu.setTextColor(getResources().getColor(R.color.title)); } else if (position == 2) { tvZixun.setClickable(true); tvYuanchuang.setClickable(true); tvGonglve.setClickable(false); tvGuanzhu.setClickable(true); - tvZixun.setTextColor(0xFF333333); - tvYuanchuang.setTextColor(0xFF333333); - tvGonglve.setTextColor(getResources().getColor(R.color.theme_colors)); - tvGuanzhu.setTextColor(0xFF333333); + tvZixun.setTextColor(getResources().getColor(R.color.title)); + tvYuanchuang.setTextColor(getResources().getColor(R.color.title)); + tvGonglve.setTextColor(getResources().getColor(R.color.theme)); + tvGuanzhu.setTextColor(getResources().getColor(R.color.title)); }else if (position == 3){ tvZixun.setClickable(true); tvYuanchuang.setClickable(true); tvGonglve.setClickable(true); tvGuanzhu.setClickable(false); - tvZixun.setTextColor(0xFF333333); - tvYuanchuang.setTextColor(0xFF333333); - tvGonglve.setTextColor(0xFF333333); - tvGuanzhu.setTextColor(getResources().getColor(R.color.theme_colors)); + tvZixun.setTextColor(getResources().getColor(R.color.title)); + tvYuanchuang.setTextColor(getResources().getColor(R.color.title)); + tvGonglve.setTextColor(getResources().getColor(R.color.title)); + tvGuanzhu.setTextColor(getResources().getColor(R.color.theme)); } } @@ -407,7 +401,7 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View int downloadSize = DownloadManager.getInstance(getActivity()).getAll().size(); if (type == 1 && downloadSize == 0) { downloadHint.setVisibility(View.VISIBLE); - downloadHint.setText((downloadSize + type) + ""); + downloadHint.setText(String.valueOf(downloadSize + type)); int width = DisplayUtils.dip2px(getActivity(), 12); RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams( width, width); @@ -432,7 +426,7 @@ public class NewsFragment extends Fragment implements View.OnClickListener, View } } else if (downloadSize != 0) { downloadHint.setVisibility(View.VISIBLE); - downloadHint.setText((downloadSize + type) + ""); + downloadHint.setText(String.valueOf(downloadSize + type)); } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index 7397d6d7b2..6738db6153 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -95,9 +95,9 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, dis = outMetrics.widthPixels / 4 + DisplayUtils.dip2px(getActivity(), 20); - me_tv_top_install.setTextColor(0xFF1BA4FC); + me_tv_top_install.setTextColor(getActivity().getResources().getColor(R.color.theme)); me_tv_top_install.setClickable(false); - me_tv_top_concern.setTextColor(0xFF333333); + me_tv_top_concern.setTextColor(getActivity().getResources().getColor(R.color.title)); me_tv_top_concern.setClickable(true); me_ll_topbar = (LinearLayout) view.findViewById(R.id.me_ll_topbar); @@ -121,9 +121,9 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, rparams4.rightMargin = width - DisplayUtils.dip2px(getActivity(), 10); me_tv_topbar_concern.setLayoutParams(rparams4); - me_tv_top_install.setTextColor(0xFF1BA4FC); + me_tv_top_install.setTextColor(getActivity().getResources().getColor(R.color.theme)); me_tv_top_install.setClickable(false); - me_tv_top_concern.setTextColor(0xFF333333); + me_tv_top_concern.setTextColor(getActivity().getResources().getColor(R.color.title)); me_tv_top_concern.setClickable(true); me_topbar_slide_line = view.findViewById(R.id.me_topbar_slide_line); @@ -170,14 +170,14 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, } previous = 0; - me_tv_top_install.setTextColor(0xFF1BA4FC); + me_tv_top_install.setTextColor(getActivity().getResources().getColor(R.color.theme)); me_tv_top_install.setClickable(false); - me_tv_top_concern.setTextColor(0xFF333333); + me_tv_top_concern.setTextColor(getActivity().getResources().getColor(R.color.title)); me_tv_top_concern.setClickable(true); - me_tv_topbar_install.setTextColor(0xFF1BA4FC); + me_tv_topbar_install.setTextColor(getActivity().getResources().getColor(R.color.theme)); me_tv_topbar_install.setClickable(false); - me_tv_topbar_concern.setTextColor(0xFF333333); + me_tv_topbar_concern.setTextColor(getActivity().getResources().getColor(R.color.title)); me_tv_topbar_concern.setClickable(true); } else { if (me_ll_topbar.getVisibility() == View.VISIBLE) { @@ -185,14 +185,14 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, } previous = 1; - me_tv_top_install.setTextColor(0xFF333333); + me_tv_top_install.setTextColor(getActivity().getResources().getColor(R.color.title)); me_tv_top_install.setClickable(true); - me_tv_top_concern.setTextColor(0xFF1BA4FC); + me_tv_top_concern.setTextColor(getActivity().getResources().getColor(R.color.theme)); me_tv_top_concern.setClickable(false); - me_tv_topbar_install.setTextColor(0xFF333333); + me_tv_topbar_install.setTextColor(getActivity().getResources().getColor(R.color.title)); me_tv_topbar_install.setClickable(true); - me_tv_topbar_concern.setTextColor(0xFF1BA4FC); + me_tv_topbar_concern.setTextColor(getActivity().getResources().getColor(R.color.theme)); me_tv_topbar_concern.setClickable(false); } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragmentAdapter.java index ebb1d7b4f9..7f9958ee80 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragmentAdapter.java @@ -408,13 +408,13 @@ public class PersonalFragmentAdapter extends holder.me_tv_download.setVisibility(View.GONE); } else { holder.me_tv_download.setVisibility(View.VISIBLE); - holder.me_tv_download.setText("" + downloadSize); + holder.me_tv_download.setText(String.valueOf(downloadSize)); } if (updateSize == 0) { holder.me_tv_update.setVisibility(View.GONE); } else { holder.me_tv_update.setVisibility(View.VISIBLE); - holder.me_tv_update.setText("" + updateSize); + holder.me_tv_update.setText(String.valueOf(updateSize)); } } else if (viewHolder instanceof MultiFunctionViewHolder) { MultiFunctionViewHolder holder = (MultiFunctionViewHolder) viewHolder; @@ -434,15 +434,15 @@ public class PersonalFragmentAdapter extends holder.rootView.setClickable(false); if (isLoading) { holder.personal_ll_loading.setVisibility(View.VISIBLE); - holder.personal_tv_none.setVisibility(View.GONE); + holder.reuse_none_data.setVisibility(View.GONE); holder.personal_rl_label.setVisibility(View.GONE); } else if (gameDetailedList.isEmpty()) { holder.personal_ll_loading.setVisibility(View.GONE); - holder.personal_tv_none.setVisibility(View.VISIBLE); + holder.reuse_none_data.setVisibility(View.VISIBLE); holder.personal_rl_label.setVisibility(View.GONE); } else { holder.personal_ll_loading.setVisibility(View.GONE); - holder.personal_tv_none.setVisibility(View.GONE); + holder.reuse_none_data.setVisibility(View.GONE); holder.personal_rl_label.setVisibility(View.VISIBLE); } } @@ -714,7 +714,7 @@ public class PersonalFragmentAdapter extends public class MultiFunctionViewHolder extends ViewHolder { private LinearLayout personal_ll_loading; - private TextView personal_tv_none; + private LinearLayout reuse_none_data; private RelativeLayout personal_rl_label; private ContentLoadingProgressBar personal_progressbar; private TextView personal_loading; @@ -726,8 +726,8 @@ public class PersonalFragmentAdapter extends rootView = convertView; personal_ll_loading = (LinearLayout) convertView .findViewById(R.id.personal_ll_loading); - personal_tv_none = (TextView) convertView - .findViewById(R.id.personal_tv_none); + reuse_none_data = (LinearLayout) convertView + .findViewById(R.id.reuse_none_data); personal_rl_label = (RelativeLayout) convertView .findViewById(R.id.personal_rl_label); personal_progressbar = (ContentLoadingProgressBar) convertView @@ -1130,7 +1130,7 @@ public class PersonalFragmentAdapter extends fragmentActivity).getPlatformColor( pList.get(location).getPlatform())); GradientDrawable gradientDrawable = new GradientDrawable(); - gradientDrawable.setColor(0xffffffff); + gradientDrawable.setColor(Color.WHITE); gradientDrawable.setStroke( DisplayUtils.dip2px(fragmentActivity, 1), color); int padding = DisplayUtils.dip2px(fragmentActivity, 1); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragment.java index 683ed8901b..798a1e296a 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragment.java @@ -9,7 +9,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import android.widget.TextView; import com.gh.base.AppController; import com.gh.gamecenter.R; @@ -23,8 +22,8 @@ public class SearchDetailFragment extends Fragment { private View view; private RecyclerView search_detail; private LinearLayout search_loading; - private TextView search_nogame; - private LinearLayout search_connection; + private LinearLayout reuse_none_date; + private LinearLayout reuse_no_connection; private DismissEntity dismissEntity; @@ -37,8 +36,8 @@ public class SearchDetailFragment extends Fragment { view = View.inflate(getActivity(), R.layout.fm_search, null); search_loading = (LinearLayout) view.findViewById(R.id.search_gamedetails_ll_loading); - search_nogame = (TextView) view.findViewById(R.id.search_gamedetails_tv_nogame); - search_connection = (LinearLayout) view.findViewById(R.id.search_gamedetails_ll_connection); + reuse_none_date = (LinearLayout) view.findViewById(R.id.reuse_none_data); + reuse_no_connection = (LinearLayout) view.findViewById(R.id.reuse_no_connection); dismissEntity = new DismissEntity(false); @@ -46,7 +45,7 @@ public class SearchDetailFragment extends Fragment { search_detail.setHasFixedSize(true); search_detail.setLayoutManager(new LinearLayoutManager(getActivity())); search_detail.setAdapter(new SearchDetailFragmentAdapter(getActivity(), search_detail, - search_loading, search_nogame, search_connection, key, dismissEntity)); + search_loading, reuse_none_date, reuse_no_connection, key, dismissEntity)); EventBus.getDefault().register(this); } @@ -73,7 +72,7 @@ public class SearchDetailFragment extends Fragment { public void search(String key) { search_detail.setAdapter(new SearchDetailFragmentAdapter(getActivity(), search_detail, - search_loading, search_nogame, search_connection, key, dismissEntity)); + search_loading, reuse_none_date, reuse_no_connection, key, dismissEntity)); } @Override @@ -84,8 +83,8 @@ public class SearchDetailFragment extends Fragment { view = null; search_detail = null; search_loading = null; - search_nogame = null; - search_connection = null; + reuse_none_date = null; + reuse_no_connection = null; dismissEntity = null; key = null; } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragmentAdapter.java index aee21c96cb..1002bfb4ac 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDetailFragmentAdapter.java @@ -11,7 +11,6 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.LinearLayout; -import android.widget.TextView; import com.android.volley.Response; import com.android.volley.VolleyError; @@ -49,7 +48,7 @@ public class SearchDetailFragmentAdapter extends RecyclerView.Adapter gameList; @@ -59,7 +58,7 @@ public class SearchDetailFragmentAdapter extends RecyclerView.AdapterE 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 literal 1977 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 FV1gg>1(g5* literal 1984 zcmbVNeNYo;8V^GKLTI(NNG0PEs+HDkK1c%DBzPfNK9ndXoP;shZZ^9~4zs&vHxR%( z6;!Tz4YeK13_`VNE7DYC&=I|ISLMqVq_z`1D$)a5u9QM;X$7W-=e-f}`iIj$ZfEy- z-{*OskKg-z%)XknDJ^30bBlRAUPMN^-U!xA@U2}qAJFWH7&}-(SYuiW?@Uk3w}1(= zYYkc+udyP0273bVi)PcP&23YfW>h)d*!}AFavJ!SDr4iiu>)!>C)20#R z$PHoxqaz&7^kO$*D&CZh7w6+jn_zu1r1m1ffs5cU$m`lcv4~eAc;FWS`=D4PfF7uD z`5M72D6=68($Q`LlEVriE=iC=iAq=^S4xv)>maFEq7aE?B8gHcNkG6W6GIOl0f^?d zk%&>B`Y;yYGy(_5F^EW1SXc-bCcw1Y4s4Z5kyt8{N`*i}$QDr?<`q(G+?)qJ!QyTw z!#QaR3VOt>w1?9O0MgkjxEO=skzc#=Yz zD6}c17$7oSm_$kmVInD2keFN|Ng~NPKaaB)D->EesuaspwMh~Qsz{NdXi|b!k&>#@ zrYdC0Iok}1{;8S)Zes4bZ!FUXm>VE@0ja?EChm15Vlk|?SdX;8gV`bg;hynvP6YdC?QF?5VOfhKoV`jB;1-n zB;Zn|TmmvMYj691GbjR}M8S6XRr}0|Ku-p@kA?v-kH(3hzzn&;u)N7n$pJIy&(LeL z9lGIL|2Sw0S-yX;w_{@7vtun-)Kb;W@*l2j-0~FK7XA#X)$39H@|B7<-&)1l4@<3g zTBZ&PeD^nWXTFhZ&r~Wu?p`+y+1Ubk5+xTY>izz|9LXiI*gxU%leN2Q%Z?mgoqlaq z_kofN&yStezjXyoI~sc7X{Bo2UZPHj+_E(Hr+h7AZJo>7^CW`z2PUFVNFvtD#JRkw8q{9C)ErS+v10$%C8i(waQNY0Y7U=m z6>JNQ;^#jv{pYb#n#tYQJ$2}l$V2+oMSKhAU&@q7qqS+KLRN)h<>+zzgYrW@c?>1G zp%3F5_&wwMdLni2;jTSh3zn4iu^q7^j!`%DLUzFl0Y5*^@+G$R_I6jt&`XxLTF3Ww zMCxjBS83O_B?tPtI#%r3+qI#&CaV`)$oYj#QJI!0xtNt>va?${S=AFwt@FM$_YF)u z7dkjO@lMa=B6zfzIt3M&_jL3|0=&H2+hYU$KUdyFYd#(S`dZ{qfiTs;#NvB{lUI&M zMserPGpeG-R`rNkH8`>Ck3f17j^bpV-`&e@ZmI6Ye4M|ZDcYONl(Zk;bc*_>7B>Iz z*_e0%ax=MEoklmeSdAA-o{aKbDfN-%xt}*qwhl)ZUmi!Xg@L=4K*UeUReVz0iSR04 z7zw!$wc4ZcBv)R$`kkX-dX-`4Q!ui%u(`#U^^K`!=NAX7E6DQmbsu5P>eNIaHBN;i zRmh1;C;FPk#Cv?6Fu3CSGgL!NUFdwip?}MI3Dq!PCFA@!Q}kz;DH%SwDzGRo5Zi=+ zkk=c1t;5O4&xr|?v-~3%^5HDj{4xy zs?lnv%K4;Ye-m@@)q<>rqR5k zcA5*40&cw51xD)uH85juQ}>Ddu&%-x;kfg@tQ#cICwXdJ4gL^YV^Y!yX#6` zpSB$7a$M~+zWs{&`;KGv?B)eW_m)qWz3CX~-0-jXH3RDD^A-IE+pP)r=N4jZ ROhfPwnSpN7pGkS8^uH~66tDmQ diff --git a/app/src/main/res/drawable-hdpi/share_icon.png b/app/src/main/res/drawable-hdpi/share_icon.png index a28810e3a27daac7d6a68d0bfe8735343d731f36..cbb6292924baea236f1705314ec66aa7ce4e8759 100644 GIT binary patch literal 4910 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 literal 3130 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 BT%G^` literal 2287 zcmbVOX;f4B6^~(&MGWW+B2sxIK*Exh>;i%bkr)GrjDn-mki0<5N)jPKMu%}cvM5WS zSOnw2sUjAc5*2XBh^2!NU|_bYNJK}1Xho#aO6gGSi;C?B&wS`R@4wvp?(gpRoL7>P zwAstU-vb7Nd2tijsnCgm)>b!HXb-IaM-X%@)1+?R1Zy1*cnlHF+41~%7_62ob$Gz{jX zlcc3<)A?JOLZuuhaLC|vautMz!J;?nR05$C)B;&xwnPzweAd;C1SFyuY!XVMfkpPK6q~Zx=JduGVMlqq6OaR_KNXVL6Bxa_v zId5%2R17jlt5q@a`275QTz(Wzsm_M53y6LY}?}L9XKS-zipT-X;o48D1w);fXi`UM_dU^;%k^O$Gn!#(SkT zX?hiiPX#r~{c0gp4>4*94CU_E4LJlMZ5tGOO zg>)*3h7~bL0%#)(v2-yB#L~nhs#riF66s>`lAibBSu_rfn!q4ZIPqj6F@d^i6P3Ur zP|5LR4vRpFr!HZ+3XN8v5Q0m#C6Mj6Si-MjnJhIZ&??nwN~LV63sQ2FTBRmOsRCFm zN7X4f3V_)uQHYfJnlMM9-o(uY)sj3=#8E5d!0SviCGYVfiy;<}Y1Aw%Q7ool1tPK- z+GrvyU6>UGMhQs_3K7b{8@%ZM%^)6f3h!u_|7o8k7SxlD>$_oqhim|)WCOMy{u@k3}{4e%}rJh6H zto8Nz{5$e$>AEaM_{;7ENGdBctK?K=@kY$VoOxt{iIpyB9Hsen1nS-A<0~<05Z$G`rsZtWb0Cr#_;6 z&%;kM4E46;URmd0#WI4=Sps(ij+C#dNUuwHo$8 zLG={*YHF?js08rd9NZSvGfL&RgeJC@8jhexR;3XZp_1 z9Y6C5)@3v&4o8(tUux!gybAQldoVpT+I+MD<(W|H;})>8#5U`vZZ+@B`!Hh%pvsC5 zM*9b?>F)yjsz6tGQx01_;H$1O^YT8($OBX+UNE{lNHh5x)6@QNc+sFMF0k{MTOIm@ zr5*W44`F^dN_F2LOOlHsi+>#UX)c&rRt@op->KB z4k=ma4IP=ZKNK-)(~D-$*^+v{r0RVK)>WTHive@csG)n*c6H0%(~+-Gd4L)B9J%Jo zu8X~o@0>?@@2$2zx0D8?*y6rw#d`1koi)i)y1S)cn*PEIff!5Xe0L~u=lArju_#)b zC8}c>OYe!WJI{CVjYq!rc3U^tGKP^J2vXTxC4T+)#^df5={tU3Qh!TEUH)W+C^K=l zuG-i+UpleE+BJ|z5% zhyG*Ji*G!lcdzQG;u|9-4NzQuMF9iF!t4N3;^DsxGr{MoM=amU?0>2dX5RV`be@SARo9Q%etvX)+Zk!8>kO)7tS1!F z_fh$mM=+~8I|}0!lIo)eKJ_$!#IL-pylcUi9(0x!a7~d(w4wt8Yrq`=*?+eF^8A*` zmeLv9?Q#2iOdno&W#< diff --git a/app/src/main/res/drawable-xhdpi/reuse_blank_hint.png b/app/src/main/res/drawable-xhdpi/reuse_blank_hint.png new file mode 100644 index 0000000000000000000000000000000000000000..c50a0530a3766ac4826ce37e50290db5d2514a19 GIT binary patch literal 24770 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

kPYl5#Bc~-y?X2O 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 Kmgg+>j{X;AT2r_H literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/reuse_network_error.png b/app/src/main/res/drawable-xhdpi/reuse_network_error.png new file mode 100644 index 0000000000000000000000000000000000000000..c434139e0365aa7933ba221d72a0f24190670180 GIT binary patch literal 24988 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 ITJ4PcCwqPI&Hw-a literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/reuse_none.9.png b/app/src/main/res/drawable-xhdpi/reuse_none.9.png deleted file mode 100644 index 10ab9c6890032a14485db2e72884a373f6250efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68830 zcmeFY^;cWZ_dSdhXz`*g6sNdUu;T6%x8NR}0s)G<7Asn$NYMl*!3kE16(_-pm14mm zxIMhypP!!p;k(w&%3aCI+?hRd_MX}2Bu?w25)nQPJ_ZH`k&3ds4h9Am;J?>X+{aHY zOmzFGCUQQAsRr={mIK7_okQlo%7^9!u^qK zukv1ec=coQr-ywnO`;+hr!kE-MXt+N>Bjjbm-ECuf+077gJ#*H8Vvkq*(Hcp%Ssq7 zjr592{J_@AH*V+rjDW+&@u4d4@1GA!dl+D@(|@gY2mG^u8w-;rfppg*j`-rotF6?9 zfGOd>yZ?9nKLq|C0{=e*oQ}@CMvqTNj|r|W14fV4Mvq6XF8NQ6FHVmkSC_EB+lath zf3MqLhj+_ew-yhGt}Ee(t;2`ikQ>eW?c|3&wRiV@A-B_AYpbiZwYb&))zee|d7U8SK8xf5J$@fJ-gOi5(ARZcy>eas zFeYvIwB`Og7GE!wg7%E4402q7ao13fVgwU;cz>{UKk$HNx44vK7bZ?xrVF`cx9~gj z4c;oaW5F>M?Nyk25ZKlIgPkJmaW;|cIj>XB zNb1^1`y2C8L_~0XZ+EEgt@%Q_90m|Jn2Q68qyRThw61 z`TOd zh|vS@idATtK}WO^6rMpC*`b&xXhpdphjqRp4N4H!z z;jXAHUmI^vH`zrL(s}L_k+{~*SO2{27ku}te`5QmgMi83-fBM#)RbVs-?Vuj0UMi+ zZhLw^EA?>raO8`(zj%!-?@9~0imMHHh+bJgd|`33Iqg;)^moYBHF@Ch*jN03cJcer z{q=~22G&cLEy#)=_>9I5yEbgVW^gxyNc>za1AtGH(md% zjvjB+Urq5=*omr$MUl@otUl<@zb)lP>S2_;=8Z*s-x>Y~GYonztmXlCyrx5wBKBI& zn-YeYE;S}``tk%seTaX7ECI#vmgi%(yGz zEl>17g8A*R#e?ViO0qk}iwui^D356{UM4P)!xj1Y=ZA(=7^z5~iF2nVBw2c-Mw}J+ z$OO-!e=AF}KbP|3Q>byf&D2e1r)WDoWj;HUd;a>C?_XZc4>KB39Yz8{Q~wp=o4~&> zY*t^qtK7F|O)Gq40>R6|*Am1J_m3djk(c9=nQZ5a#<7r1?bER4`X`ij3e0W)J+vl5 zGyw#y{R8|9tcmya&pX|SO!CwD#&q$$M{L?YYuvnm28aFEn!*HEbu<3iyO|VyK{Hzx zD-bFLgAl%@U&-I#@gw;M>V5~9iA!WAY+z?0`<%DqW4?0Mau+F2X<4e=c&%sE<7zGD z2uIpH1Nb+fd5>pP(nYP*u&w14F`kJEQtxIMB10ySiStkk@LA}L-A)ci5WP;fBKG$r zz*Q3+jp$dZaHGl?l)zMs>w1fahO9=(ZnuFG`rs`lZ`0c2&Wss&m(lz}JpDcuo$cOF z$L8utT%9niOT#dW$-5*lkLOW2$&oKRW63r^$_2iltamO1M@+-Ss_;1J2oTvm?I;?+b>}pvF=lcCDQG>gAJi9+IbCLe-lifeF1jWfN!j)1MPNx zrYo0{AU$~hwGD!LKMB=LBW3e*%wL7t%v?mcGesWeJqGrF!hln4((Km0Qkt~0^R4&v z*lX`FKQvQ1jsLnhVa3k6$pfdZ0!yulzVah2wfZUs>s~wIo=JY3nNq3uzTvmz?3&!E zRJJR#CBW-f5hVn6t46!8a--qt=c4Be>sM55tY)$47E!i~Yi{mG{O`L9997Mbj%bY!%SQgX^gohi%7xms zDVD2|@*pbupX%zfmQE%cH(+95b@S8zi_e+}141_Mc;#}G=(oBcnA~Nvp|l!xuG$Qn zfx`wwN%gJ9QpKc-tD&mEJD)tsr?3AnVCZQlrtVeYaZ^2dL`c-P$|Uj}gwbu5P9ODpv8;>xmdyIrC?+4*PwD@KAePr3�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 z zdfq?3YAD3%mX#-vBH;o))565H{W{R)-#e>KVhm3X2}*0^k7wTDav2~t>9U!&MzZfB zW`k2g3W*%X1GioaSMF{b@Mx6&Q1=w4iCz8!ZxnDc#Whh=Q*-rTzOl7nNCEM6HDjuI zU3DIwZudS29%U{$h<0+l*%8|+5~vwhBAPX_@UoC62<5&=Nb)>$SK*q z^)vR3?IL-7cJOpZ4VBcAnnx6-QQKo0%k!VpYYe*mI>CY&0xhMwVM3XDjrQR;o2~jy zL>QU-Y86cUNcQ@h)Srq3-*@aS`eYy96bb0(#0Z&zDnx1O@zxYz7G_S6QPYsOs?%`N ztoeh?TF3tBoTFuc@~l~_=j(v=826^?&;$hivvkbJC$j%OyWe`WN0hcCmn2a~?x%5D{Z0@J8+b;-$t#uDN&bNy-U1Li4=}Ty9fTs816cKS z*=6x#WA^>nQoG6+y7>^kF4=c19z<`X-lgq z^F%+bXg&QL&4NRg~6rEY(oU|6YKCGSRSf<>dv5W|)Ihlm9cQ0L4|Y zsT^B|5iY6Zpi^r%BsPuzot@b_2=(^0sNHn*5(ed`vaZj&22)u~-7h!4r8(Hsa5E0D zZL3RFc$8YL{fSB-u6gseq*veW{dnv=(9zcUQ!A01wX4UIG13gM&3N5}so?f|IZ8&v z;zwi3m*E_*a=A0d*K`SW?UY$bQv_GMBbp0w0%CMW3mzSKQr=_49wRerDusIZrLpGs z`d=e(wux-@UHNxObOl`UG2d?$MTjnkAyPmXR;qre?iC1&C!@5=`{y&#LKbVg!|{|9 z&%8YGg-juDPFdKU`)2@Z`|q`w??Fp?MUwfmmVN`yzow2%!}{zEmD8Dab&tw_!+uBh zI%mTxeP9I%iJDdnMK0gTebB-zR3sQX8mkQ2t7!Dbc+uSrWtnioQp-R@6;(_{szQc* zb}OPVDr9oEt{?~+n2G8Cw=c5h2dQWxB^GZkU)ADue|RsP3@=z-na`qi0awiT z)V(2l6@Hgb{Uene6XTT_J-dgk;Ylfe==q(Y1;2D2MK-}7`1LhO9*N<+L(jLJZ^)~2 zg;m+UGE$qu9RGrns(%y}Un|N5Dv<;5W!`XqOenN7;?c(*CMnbrYNa;7$)PAJA<|tq zBNUWqL!S$nZhM!E3l*K^;P;~B%lA;qvp(fJUo7xm+3XlR+OBtso@QCRWdm0zoJ$%} zanBNVLq64zp3!J-&VRpHL+<~UmJCupX`KAHI!x8M=wF^rB^>qFdp()5!2noFO?f*< zVU7Q9{h6#;)$XxuJ)$!pf!<$U0M$ zBg_O}sM4XHDx?0zJ)6sMKwJY~~QQ|&eM-Ar;Eob4JB-6&fikLM3D z&&44yxc*EPd@Bf0(;kUSpHwy+%k@GWy;8%hUT4?bU}(U*riTg$?8K(Oh{-%_IIaGx z_O=uXGJW@U(JMoAE$Fn;A$-zWg?()Eg5RllIDWmK4QsXooYE`L)NU@0(f!qCsqs*H zW1)8O%Hikx@t|f3pS`*J^N;R&Bh-%E!i`H*o%coN*$bY1Wel&s&K*AIHJ#3Hzu0_` zn%N|j5)I~|?HdefIwI$io=s&l!?P=J@A)m!v@p&;s=WD)1j5U=xX9jk+0YZlA1>>}Dq%=O0h;0LmxG1LG0p8Aymb<_A_8j~%YXqK{ zw)%{|jLY0v>rEEM9l`Vipz%iktiao4t6kIOJ^D?WOZh|R7Fe5BYn!Kvo z%tOJz0h>h4<3_X^MY-Q?6+_I!NE7<-c<$YVs1T^QHdj@RYvN-L91$)AdvR*`l`^ns zhB;LIRbLP%=aNp@@aNv9=XN}heAzZ)M?qH(8d0C@OoOwj-e!kO%PUl>7Sy7=o1XJ$ z)UAY0CLBVBXxL(yeKO1DvyT=``fw2QYJ0!QHQ{^klj{6{^Hys=v_!@XQ?V9aOp;&1 z+S@A@9X+HL;K3}k2MK^-sLb>J%$pB#_0+koRm3Vpdrk{X)OMR?(sZ*U*>sP|_~~Gdt3sNb66zN}g&K zymVB(p3FKSkC-+Z{unVVt5WaZ7ZqGODk-ZpBLIzhEHt|50C1%9tECMO_i9Pd+#BFN z>Q>U3AW+4Y1(Cyq3|5j;;3(BczM;{6W0IR8IzQxhm2t>kE!!KjJ9;}ZR>Lq5I&pC_QxJzXoysX@3mevs7?FNkk_z=OwZYxSViSbGOjAJ~aboolJmeNJQTD*GlR&ZgWi+&gi1Vv&C$4b)cwv&MgzDfG zb0U++2Deu7JpI!nJznN4ABh(rX1k^#XlSNuGr4K2QN<|0bzZDWAwBcAGli9I`MtLQ z_h!*+57tS}PjCy<4_SZi9qLoq%s>$0t&^a{Fe*Z|n-8FDGNy*q@|4qd@n5sp<4CUl zUvX*W+z9(CT+|P6$rYakJnujM$$Tz6%Yag(7w;^2`H#7gNT_~<+ST1++|>@?CY7YY z;d>DLN$}m09NWdzjm~E2k;WG#TgaSwJVt!~&dUF~D*#3|aK5YP6 zpp^fW5*7*=d2_>zKpDls`-=ds9Wjms1#WQCFuyh{8AS~u~RV=&` zD*Y@dT{>~i{$Qf-jEl*lGNO?~QvuefXJ_r7mtpE$reZ`KBxB^9-F#i=I>k)0_WynN zm}-nos^)efB9i)`m7EQ~a=pytYLSgp!e8D0=PrXCx?x#m>~6QX_!9#^gw}O|s|4_3P!gZQF*F|O zi&L!Slirh=h*J3^)s$SoP86A#1Dv;I1V7eim5-rAdGGShILZ#&_9M9c53yVD&mNqU zkyXeBR^_M|#eH3#94O#A5R>FCN59xPQ53piD;6i~ng!v^y`WbzNev>eG9CZ5`LHWp znFNQuI>_bqJMtog;@0D65;_Hb+^x^>fJ?^2Ce3qDu$^ArnkF2DW$Lif#eXj}v@|O+ zqT5j_!Kmk*@hsi`uM(^Fbc7Fl`sm{fE`Q!KZ!(vC;&$=QbR1v6 zSiW&WYlmY3h z#X1abMiHIHLWVIk+}i)voSx;d)s1?3>td3+-D#=rdC=2wiaWNj=0 z39yd>IRp7mcfaB;2<1DEcWN+e7dtq4X~nG=p|uUgWtcHSEDLar>_%OI0qDmTvG1GrzJC%cLcF zpk_)BRxU-tsp8k3_mEA{MCA8Ol8-Gj&4fEtTbyJGy+Yn)*o zQFE`Vu#9s zbhPReYs1?r6u~ubGnt7Gsb=Eg1`yaa0iaLM!n@k4r*1~o>)KFb49}J0=T#@+lWLIM zu`k565Mh*|Jb{l`8T<#{tsM@`ux=u0`z*l7h(HTa@XDe1XBO-wB01*50xOP z?y}ihnOu^^a){nSKjwcMV?Qq1J7aLuj0f&GmsklsA(PC-HNlG>m~;NuF7;SSFPn3e zl3hDjqiF*U&iGpWxAe1s01fQel$_Fkh9QJm#!ga_cIf4pN`%&R$s|LTfNUgASk1`HQuXUeb8Gq zz^Mtev|>@j!a7-?`aV46(xxnKn`^lXq2WH-ywfi1_lN*G;}z`_|9b(MS4b~?hizYc zdK^~0t%k`<)bUtx#d;B2}Bp^AF_sPSfJx#&!y5-ih~AH2GyDpQ@oL^fQ(H zVApmGC(*N(12|w?_wk^HC7|*T--n=$UX5T?pRy)Uo18#|Mh~CYjjN?c4b5$9Txg}J z|y`nkaOLC8#sN|ev_rPXw8QS6#*;|uyl zRv>J4QyE`tN?pp(B!U^AA~y-zcN&hJwEDA zPJpn9$f!P+`Qi?bxDCKBzk!h>vL)2Z>UQu}jcAF`bc}q=6(vz&@!luMweL7soz}-0 z!2~$$uFzu!#Cj4Xe-xRZDG;Z3;i}$EfzEHI+V@;2$8_uYD(7eLMP8J$W4^hR=ms*+ z5Fb7c=FY_+KQ+y;zU|^MmOx|W#2`Be9veu9?Rv>Vj zG87a)D%XVnPKVhxaptco6M(}JsW&k-+5PME7G(KV=qKs))Bq;5WUG)+eMShup4J|! zTVDGYa(dzwHRMx`Q)06x35cd%4=(EX&9!-;bc*J&4tMwcvSog zHCMkrKW5fWuxx~7xX`7Joh*qoTFRBD-7sB$5NQUqZ4R3|?+0xr=sfc#0QOIPnKNvy zB_-PLpRs0-E)~1j;}^)l%`SXHUkI9zQT#D$#re3)?YEK4X^^e;yylE)HnQ0&lAdLYJUSwUf}C%+gr@|CKM#%c&%vgQj{AvbSh+8;Y69F zjB47snj84x;)2E_W1-_iy5y5=5OV7%ux_r6d{7mW*TTKKVe2>TZj@1w9>I&O-kny_ zfs9SPt_6d|4QBx}T!1L7#is+}`tgKl_CcU;>M_fQk?0Ql#`kVEtqvp9O<*6Jx08rA z^{Y2k)7b*8d(+s+52ZuO?xByHMd*@SGd56Iq+E=WYSFW!h;gEl9rK`lA_tN%A&Dg{ zZX*qhs=B+>!0=utMdCq9$G=1jpFSpBC&C>D4kU=HqVqx!EzW#Pm!F~9q*B`SlVAUyX0L5);ho7d#m0qw z!G&{iHfbZ^19&oIuK52S0B1p%zD2B#G`+w4&mAkI@5BH#w4Zv#rhTotby~ItE0#7a ztHBaydJSFp%vjfzhfN3guECXEO{mj{SaGO@bYdMK2(31hRNhjcS75rg*12eNXbnof zx~-P+sDh2gO1zZ<$jC~*P(gkOrsVZQwPD@w-?+9fWdJMZVX3efVWI6>>2ztR1rG|5 z0bA&EI0&GneUC6H0#Y#fVUpER6##%lAq0N3YkV1KS(^r3H-wd0BCOyMDARR9p@>$| zAhX>I3aj!$y#)b5@W{H5e+FQp)DgU+M~`=kdA-@tX=8legd+Nc$N4mI-DY1o*7 ztS=&^qhQyr-)u|M`anyc+cMCSdqS=gwxt_t)N1L>M%A*>lQWB>f0X*wDC6^2?^C``RoYfm?Q!;eRie|uuu~X{geWG(0Kv#n1*XCge?)c!RLTO~yrYr-w2uD+;HYC$`;fpdE# zpEyNR`8_Ou_w7R}XbBkN-q80|45BoQ^#W{lS`3diJcwc)7&_trb|eQYS#>y`Ly~xD zg(5#vV-#!HJlZriEuFL@5ajDuSXQUxvy~9oks2}#F+=q|PVct{v6#Jr^lJ3^hzT@l zdk770p~8A=^B@pb6<~F(m5n}W-teUjL%v*9qG0O^S}UgbEY`f)S~-N$hp5fc(XTpC z;B61HxEwSJEk>K>TWxFf-y5sq78IzRYxWCVj;=b?QLm7Pw#ArQW%eSA! zV_H>^x!SqMSo8G&Spr(qGcztFjFpHQv`(I$b}cvh5wrw!G-Nqj1XW9;>uGeOW&Esr z8`c3W9U0T_O*ocUfeC>T*$?caowQ-OfNzQzSjl(#^yy%~KurDuK2>@q+FCC>_oY`} zD=Y%QHf8&rz_DBhfLd9DX1@gNCI;W+k5nlREWQV*3!Pd9r;HZKNvIp}iGd zN@$H^0meqtV!aaO{NT8Tnojs_PVmhF__9@u8t!!JajnU8HD4<&9en~Ig$zt%Ll@7d zM8P^JBuHMthtp4Vm}s-B)?lA|MO(T}T(oIoj;T;1;%Ujx}h-dJ?99mX4U|NL{Sn zOh?#cJDa^)vC|qYq!4vP3zI*b;e#!BRDF;ghbx+jdf_8t02&%)Q8HWn-dGJe?jS~@ zS~A)I%44{i5=9a)(_UaLkFI89>Tp}{$Ej$F)}{%ot~|8Sr%>9^8knZ04O60E9s6jN zfmSR!6&pI7hm}R$N*_v!%fgg~o3fg!5IAVak>d4K_^{`t*f%ilVP)&KQqzm=+geF_ zjyS_tIqxAy{caTH7eH%a$$^&CXQ3Fr0bKnHS^y_Zgor@+CPYlmIyIzwfm}D!NniT%6Rl{H9l?}jjh=}}Nn#bDq%>1JrLYfQ`RdoR=U;d!``)Xs zXM6YU&-NWSn9bz(-+cbrg0uw2sr;VnBoc=G!MT0y2X7@g#Ow5~?>J)p5p6^=RCk8Q zN(#~E#nxBF@SYm2Sg*rSFTms!R&!NfYQels8H$^HGH6B8hyXjli@&k;xYuB{iU}#U zts{R@0Iv(}Q=()O0bj1FprxZvVpJ-TtB`?dY}hDRf`RF!b$5i1MW8|m5no{?jfRGB;9Pd)9TX-H!Nq>ddw;fiT5U%Bc&nDHeL#q;>=K@`om zQWB35i0gEuoO8Wkq3rtF=%++V%j(7iw&WT;E}(TJ09mog9;@82It>d(5b;1J=i#IG za#;SPZSfa^1sJF!!s8p|4s(TQlthK9f|fvAS-YQ@OMNU|7&9PEdCgc+yFA|qT2<1u zF-wLzX~W76D>V->92m0|^przqQ%tBKD zt8BGmI^-Sm7TlMax{fHz316fu)eS!NnxytM)Z0plf*lwh{>?75-zoRes+&Fpl<9AX z-AEt$Kr6*a(+3C=Whz3?Y7K+arC{;5yvAa{I>EOxFEw>2poQn3JAW~|nFAGI>Lb-- zt?mZ|CM*D&b?*<=prsW3r+^mz1!zezJW_}NEwqj4SJ09PP9hZmlqyBqKG=#i9*)%k zl}-AHGNq*Ye04!cZvhyPnnOhC&3sbay=SijA=GWzXi_IerFbqNsuPe(d5!DWuV-7o z^-MGpB_p(&GzGMDYS4Gy>p+&?M~QezWNfor_pB#q0WMG!Kki9$VG`C+m{j+0M6({` z;C=V*JK5E1H{7^#?Yf(&C8AXpd3pc+53);_ujXGMXTuSlL@)w$9r4s^c~gpAG+f0< zt!WE_R`a@4eSM_(5RFQOE<_h?TChg({DUqwl%Bh^5$VI#3l|D4dg`PP%RsA>m2gPw z)%B%v5wU{HdweXeoa@+3b!GK@vi-)Imr)~<^}z=pCIgv-#}V<;5lg9Kv*0zqwA@_D zIbRvH#NGim1c+#9!_xjOhTj&9RHUZnY(yj0csSOACp78n)r2-RrR^T{;}D&C^X*;P zfqa4+pP0<%^6UM`MNL0+^;VrmlzKrp23SYfRfnN^J6Qo(6|`bCcD{z;b?-%qaK&J} z*FkH?&fTsUUH}VlHFRXmMU2LrgL=am9>Z5hh3FL~;Sd<%v(BXeXXhLg=`^FRnes+X za!{IITya2!Xx2{xwk5ak+;yo*UtL$X9qDoGh;CtjZ8U6BYOwOZAMP@sg+ME1)n(a$ zw_=sPh5$62Z{5Zxt$2R;g>Hh@lN*sfj43sJ7zeG@#OJr0hIYdqp#UL^MJIUaEtm>d zfD|97;Q9DAg~(M%k`e^yS~#*681lOd`3E0991z9A_5CDZJc-`}?(}hl3gtCa+H>K~ z$I^1Mu5I3HSZbZ&ckkQZm!KsRr4+<>;=>h759+8$=ygJqe$1_2qAc*cLaGnF5+yy? z?;w?GhB`KJw6!YJf=~MjzipL3OJ7?b099!i9vd1CH`^t?Qy;C6y@NEBwx9(Fivbp* zT8M7x{&~89UO-J3gO7NC$Y-Y@kr-RwB~T~8rE9pl0zICUhh+oD*Nv2;J{O%9!>1US zF6DDjN@UVr^YU{z{MoL7)|t7v-|S}ku!@VkHahJTv{LJw>Kb|?MW`(rszhz7_i|iq zJ03vO`yYG|JdZf%Wh)SUh4X8mw3>V!@tT0Lc8iSaqtWZI5#fW6RtU6q?b+M6hNX7Z zSREfDT~P1qxu+-WkRMiP(l4v6!uGD;xH0fh75?(_VfNWZ9!}G{Dn5a!si-3^TtebWNXjRid?C-Ga(q#HDTIcOCV}_ z<-Ch@`6m72Cr&5(Y{@o5X+mu}D)1zam%@B$qCF8XCv7?9uR}zuQ_u<-nCe=)vQ(~a zyoW$DB9gsaU0tyG8*kF0LJu640TofK-O+Var(?@%WYD$FlyA0$3lWjzd? zp=u6ezUJY$o_F85=dC-l78uq`Y%TTJXezzvJhoO`LHwZgI@G=B>UtR2NQ%$%N<)Az zYEcGS;xLX0Ur+Ebi|xd{z261Eym|AcYcph_MOxj2(tk0~(%00N64WVSU&=Uj;GV<& z;ooj}rEL~yZQrr0Rim{hzb6k4H6kYft&tqKq!_+ows|s}nO$&Y5*Dyzl8v?6k?55~ zu2NPF7Fzl!e=QqXnm9JqW?O*w7qSXb>j~8!sIYoc0g)JwwhGo^KH5wj;;}MDl=Ho| zbSN`H?Fh7*u-XY|*}jLd_Bql_+Q%h2dg&h{+q({0XXoZVUp0M*i4?$9WtE0reb|ej zRaR@IQ(o3|6d=*b>bteV`o{K9;I6GOL=W>=xe$$%3*(u()Zdkcm4u3+91)k?9dkXAZ}n(pov zoU|{Ng&@7c(7NYWO=rq$>vJox+DQ*dYhbEA937y&YY8bHgBP3RMENJI`b zj9KW^farrJy>LKBz2w+^&(SqldS#&xxUi2^i~Q}XLwIS)szbmQL91w~Ad!=h>7SP@;o#0)-2p5w&e0h$_35xHi2IiRy<{hnURozx$w&=Eel8BN*0r(+3f@SKmmX5PquE zq*Obpmw8WN9?=nF{2xX2ZI5-Pq+^9f(7KLH{I4uXYNz)UO9kCqvCQE0usFvD%vSZ^ zLUmhJhK&SjkQV4Fk5(N?afAQVmi188^kHiM!nyJGE!f5h`ClLSO1o zitPo!q~6NsJr#mT6tde;w=Qb8wN@H_d_G(4^z@5cpW1iM`BL#AF2=fy_du)iw_ z3ll=C4gptgqrXL;7CS_n`*n&~?<&$rR5u zg4R%W^w^YxV!7_P-gb50h^Ih27M=37)WJ5ES5^x40Xo{GqgFa?=%Q4fx+gs5#L4Nl z`mL4x^R}$uy-=KwK7{T zroIIZ>0=$zhE>vs+8Zmi|Dj!dh+3cesl5fSXOqB8)$Qrj-=c{+l>y(vQu_)M<^1a4NUc8mX_AOEbU9M%NRO5>^{_b zy$BxrhY9xn{rk?d3sw_nXJ)dAd;-9vfXU~LA8pT`&+iSi-vQWIf3lR+oPJKq^*u7O z)>L|WddAxmF;ufxc8zt^(cV9Rv|f&Ybpl$b(}KMNYP2+HO&&e&09sbU-plU=JIRhs z9?hnkuI(Bie3PxfhCqdWJb(d^u0c)%oQ4~nHVi?JPSXMWZE7qYfto68TZ7$5O{)lj zMgWv;AnhAIaGLZq-1fm&Cn>}#zFH|}rmeK$(D3Ki4YX3yhZ3E_!6B7c7M;Rmi*%9> zi(*3VB*o{8)(9|#K(EYK%UKXK;bo~}WNg7ekHD7Rud=iz9_&=RjK>%hKQ zK!$yK{<|**BY&Zlc9JqpX+>4l-Y*T5BsS~HN+qZA$pDkw!sXpK8J%Iv&h(cuN z*i@@GCthzk|2)(YFR4qiZt%X>v2|DY9qLu}oEd{H*)RO7p(qt9$|7ZY(SX2HX&atE z(L0{osfSjq{z~^g>|nKF=S`$LO&_`*fhBN-G?#@dt179b5GeRy$3}`IRaQu^c^Wfo z$MZTyqK&A}YFi{J*7ip~S5x^%AAOvyoWD?N)lgVLs6bBt-WNG5_I_MWNF6Q}YP#e& zLv?1hmQTZ$uMSRD9lBMJGqY{>4)}kgsq}$?0WI-k(hlqmsM^-H%1okDcH)%Z0~CCA z5jH)A2_F6bs+<=Mbb7*+f;fj%5vP@m&n4P93d8wk;ssMga$1{vGjcn*t&H2 zN#daZp>F`3e6H_4!%IA_4$RoeTAPeYdds)nGK&T= zEUgpG3Z>Wt?8;gLS;#_EOFX*DB2%`oT^^%B(hE*Y?SGfwi8t7-Ten;k!)~vva6VL* zC$Qx+H?{T-c$~F&n9Bd(ug>sx67@x|w3(@fEpa3lVA4RP9plAJvn*os()V6Vaw_+M zMQW=d9X)#G`>*F8&Qt3STKDeVi>6Nnii%OLt!+MMIELYTBKiKSuLl<+q(;B&D$i%1 zf3a}AeW0czk@lKur>Lv{RUb?!=tX>CBO-hRe;uP{yA=&N?RzA zzMANldGgeBusB=bLQ--Xv}W_qNE^My&$n;i$)--8@%nD1M6)CkCTYmCGxLRdB%hUm z?3Y+Nl-6aL)rFx5QvpIvge!f;;aHmi>`0fL@5`(pbe08k?WU#;tE3O>!c`|xEMJ60 zM~PZ14+H)7ENtnY@!Zxnmpb#q(rH8uOCf)%f@Q{|M+IOitRPG{E_sXwFyHfhASTuCN>wBJF?rg;EKfB}g-2t--$ zB%N-u_6s_y5vnn=u=VjLpLkaumVrg;<0O?S`-aJ9GeAp2qCg9VhAkg}UAS-|zh^GF zg#fW=Q! z`f9_9ptaO`e8XsT!F}V?-_kINxs_SX^SySimXcsxOX|*~*Q4{#a_Q)m0%+lPh-wvE z@bqu$(5CUqR*~sw1twep0iQQkSqm2%DYL@bycW})ai@1}BN0k7 z_f0YU_8r;IJ^LMK-Mn?%T_=FncN(zeOSQEcARAArGG94- zfyU=`m1vfvD0Q8c{7yGR1~};Smk+c;Fk@4h+O)LMGd!g4>Zu&0%_M8KO;+ec`a z)7!wlt)4&MS_P(;tmDJx!GnkH8y-U9*RJ1i5hRS2)zvjPa|P(j1*mITW}v>tr2KRX z60C~UHFBx_A$1xN`+Uw=RmiHt#!5~Bt)*;wcD?{wJ9qEt;}$$yEA^_g#n5HVfc5rc ztLLyCv>egj@XBg&%%mpQ zcEj<#Zk?8n6vgVaQb8*O5ba)AtHC~pzG8a~S^!b~W^AocRDc%ruv%OyM4YPn30=5& zu?@83XGE1^{v>WS&-ELXYuRvo+8fN8)@pl)8FwC5T85=aANIRpsZIr^Op4L~Shw1d zi8uynsj&6z^Dh+6&$pj@A(~Rs5fQzz%>tTz?H~N;tz>Az3a$mXu0Qp3cB7&(vIDKN zGfC$Z$D*M_(sOd|@GV?wZ?NyDPoF8Q-b{gIyv~cS6l>wW`P8>dTQikiH(dx{wN^|Y zV@foxmqF`b4pZ=UYxtnOmrdk=0H{g=t$bX)dd>U!h^Sb2_1v*mf%oY%Gsz1)uwAT3 z3>Dg2@Hy;>W`)c;B@H&>af^=?sK?shh%c74qbL-^m%xgEpN^_YB<=79rww&!PMJ-{ zhNcZwRBLP0tZ0R_pEItD93ZSB}%Gdg(ZPFgJuY7nY`mYnNHY88m~QnNlE4<^Ty3DQ~zgrZeCeS&C{zPbTNLcv9XSPq4f+>&M884U^c%G zP!ok?Juq~*l1&62J2N{UE%vr`Z`xWxA0HydHU;$RYi|@5FvM01%Hwp@&^p5Fbh6Ka zBX$gOALzQf)VeDjbxeh`UIeWxSFW@`3# z%Kh2+f_mKxQ-vsxG71gB5TaNb9-N1liH?O*hqC`VdM2+o=}bqbimigw%Egvf*F^b> z!O3P(zKx`X+7@k8+AyI_&x0)+t(lp*&s9kucG_B}o}bogTl#R(lTwUW|X~C+K8w%z1`3Ob$q^1tN8-J{7 z`vfw5hNX>^X2Ti&*wl%>1}&WiteV;aXjPq1_3PoezDX4xTKb!@O$l0%(Ax|dZ0bnS zfqc?S`PQ!?OIFOGw_=t18xtA6)k{O{vIwDt4LLTvt}c|8`~1d@8`;;lemhuSXQNUW zI&J8ygTww*soAr~f#*u0dzDmRuQ<)u1+7!3Pdk7IXu-ze$mpbt{Omh8hzz~S^3hA zvJbj;E44mLAW}!;TFs?5aJ3=EvZ@bGN*f*?eqqBwt4{iGJqq8erVo9+5JSzQtu2Ce ziPwD$0YJr`f>l6kwdF6?iVEf5#>#xcbYZ_uAzr+6sa8}AMeS?*x7ylnou1h-@`m@SHk5aG)it!)yep;qtvTX#J2n>_l$i39Ail zYRg7#u;2PQ5`76-6NsC6Y7=Ut3sE!p&8MDitN%KA>P)3c49@R*-%-zm{g-s1-o6Gh z9pym}Ltp9~Uk)%ySc6en!Dyp>@E6m1@*7(V&(XFM-MF>_TlSjZXM2xTO=0&MXx+Sd z(}5Oz(-6r5XdOh#Cs3p1ix8n!HTIrNgoQ($YaBO35zTEv@3hee!`{=^-9g9 zCY<=TrRZk< zp(XYX)*0S`Z4O!|&rA;tXkpUV=^}ths3A1|Z(*nEN=FS(*q)AVX){f6iO1jd{%PQ{ z4Xu6qh3BU&Uk8?^EA;Cb{rmbn@^YkEws^rkJi2e zjYt*%!Gf0cv63hc>Ojk)_qeBYk3=2SNoo0Fn;m1dxNSNu{!}TDWvwFc9+NKxEpI62 zk2MuHELHXncuXuph4Uqll?qCDoQAws5&Xol4TUT~VMRCi2U|8vDd|IP2G(h7om#$C z%Kxdj`f#<9!KkF^@b6+<^XS#4sp-6FtFuzthfp9xNB>ZtBrq1LbbC>fD5k^gRPV%)R-8?CMMnXFz{MBiYF1C z1yctagElyX>vM{2%JwmE4zy311tmNl{SjkPvoq7vZO_9w(h(_~L%kvm=hyIAfq%0-{UUCs78h&GN*9B%`y;nDF{dQQVa3TR2h^~A~3 zg{ao4(`So!*>`0HDvVLc^OJ^G17TEgM^*^2XBZ*hIP;=|jDOZZpz{zM}Xl zs}I+rM5_fz091+RR>-;`RFfotr1wdpS+dHo%wtPnYssV$HGmKSyo^lbRmH?BGPpl zXdC;vwdFar_IlfbY1y&}F;@HT*uA%P?R@oM+B*w&E537HcFm>jl8wy87B__M7i(Br zbx}qyf)*@a_Uu38dL1Hl*hnFcw}IA?vB_2>s}-5a0Rk&jQ$O?Y{(xDsM77}5Ugh%= zUpfvq3-WcNXT7=)e*>hTHVpR|wvU4Qkin>|DlA5|KK9mH#Q+JfIcbXM?QoH(#FU?; zS2sJFg@IIIt3B7d@0Pp44-bEC%Vw(A(}#K@*WiQSl{Ip1PZzER4NINJ)AG4eII^o3 z@w1I)`BoC9!l1yP>@!;BbOKuM*GNC2j~$jQ%P~k)F6>0V)Ru-tVZ3}`0YYstJV5Kz zndug2;lr+9LCdBDtMtkXr65x$?XqaeRQ`=U6xFi8<+C}^0Dx%LqeqXTkOg2aOX=y6 z5^cpjiJC_g)z9Sj(a6}in_ysU`T7sHXD@&M4R6aMeg2+(?z^Rt3b9A|YM}VsMzgT; zuR_}>3{NW?xtzvjzjn*1yjk)_lz-BuCJgL%u6Zh75 z(_?FKX(jo2_!5lIEnTP%sM2*(sM|tD0QZglf`ZytpTVfLZ_rV#<(2d8MeQiIF99W- z8>!FIby`)TP`)Dg&5C9LK(%~ri#$!FKeef#)eq@IUsOvb_Y_l2U%JrQJLKELHuc{C z6`{U`e!s2rt(A7#Gs`|^vBWMx!x8qYQP94ct>(az8p_5S8Q+v-TPUckveFPA99OSi zb=C`Optu$Z3>m)K)*KL2tdDmpqoQ3=%a z{@@z`~>U01CdnKBsja{MgBK}QG8}?KBFcj62+NvskPfIKQ2GjtdvX(Qx zhRJ%BosRbD8m?5>(m=S>+#ejHE^1B%Eu{Q@T+&8Kzv*3*>7}J6)UHJU9gHq6w~ixJ zwR>PWP%@l6`yupVmC zTsFS?jjAZ&WqnGJPs3kx0*OxP^$WTZ8+Nt z(X38D3!edShToCH?yf!iTx}lew0xi?HClGm0WE>86x$Kk{bF_1>u+^-c0Rjx`*!JP zuQNK$zqD#l5_qv5TiV3*@POGiS(eP z5B*WC<*2_?3<#t(O)Pp<7O}A_>=u{TRyQ_Q>76eapjumrcvI~)*h#I`(x7!a!JJe8 z2p<~Gh9Pi_z7>|K1JO{4Ld-8N7C`Id>FI$2EnTZ+R~uFZt!}OwL&^*FM7A#<_7RhG zSrIls08nfrLb6z*E@a6-ad0mQUp!9b$E#QUT~}`QIG5eLZ?qjmRnW3^THS)b&2GVy z0$Lb)6(0VN0qc;|FPU{99>wo2RoSeqLdza}cE0=IL8bbxd-v`)qA`FKRZMRkKA^(Bej~4HvDu?fY!{+!e@IueW+`h zihft&x~s0eZUI2nqCEJ&ys@lr7H$AQ3PZrDAMfhJX4FoiS+YWMqg~*A&zY}pi2Cq7JNlOHCcuYG-+*W$qf*F-)U z==)gip&h&Txnk}zAoQ7U>f^%Csp;|cmb^z1sXKk|EK1m`(BC zyMMn`H-kdumXFrVY}2sx>_CB*g{@Rz(uSdS6&bc6_67LA46!&!Ng2VxTtkDLw~(in zuZ9Zu7*Z$CzwmP5@v+wzn2-W_3kR@YKpLbIQ{7JC3aKWy+BW|Jf(Xhp&wbYmr`iQR zmO>V5i{iCvxY^_Xz7?K0k16*Fw%=(zU@wE#o_&W3s}5oBfC(R9l?qyC^3RxK$4@wz z(oldXko5fnq|7IJxjCDfn>SsrM7x5p6Cr&lby>01d%6Hz8?DBSPeZUJV0XCC6nd(y z4Ua^xB$X)2^;wk?wZ-5Ffak0a|N?@vEg#Ep3zFbAXS5gMFS$raRY&elgnJPaCK|1unVxZ0 z5l=t+-NG^Gevv6DL)~<`>L`O%pI4eRB=5z0zZ1~1_6`6o7?zIY|F%G@xgrk{mI;qn z6u`kbtov$@;MU$W?MyW{mCwQTs0W;E`go-}p_kPq>4=q$P)T9CEx6Z!CSc{FWb*uG z3URYihQ21!G2m>DOIvzTW$D8e(|#@@0)fOK3fd54MNl`w66fKOINNGQjB&b zruHI}S~~nIpoJAV04>yKNw34Hlcxp}v_dZBh-_d&52f5>LahT_DNzxmzhVG^eZzL% z_~G`}y?|?{AuE*r3i&|kg#vQy@;m?=&Iy2fJq1t%Tww`6ytv-nzAI=>s$KOVwB4x_ zjZC>-F#vb|WzJcDn>XUvtD{rUIxuv^r4IpC0$P9rbR2+f0{pJ#^3RXc)3dHtN{Zn_ z2AzNgU&N>iXswr8=B0_zoRq$Ph4i3_KuMZXN2YWiMMSy;$RxTYK)YEfLk!*jF{z34 z(D0MJ30ev1L*3605w6XOYS|Q`0FnTJZv1Q`SU#%=8=YASz=$sLt^%BhMr}sHFD6Pv z)nc_*EAYI^VKHU@8q4_~WarLba1gra@!MLv7LA{gA{0ktSNoEK*7VF=6SQXYH}urN zf|i~z0U_4d6tIE19KePzI)Ug9o+qtlbSerXmTJ^Px2k#KYu_l;L;*g~gxc;eBAB?| zxGzv|_{?{{8!_J8T3VN;)2TQvfh}oS1F-96`cTsHs101n@6)%ozwM4epEF-g8qS4I zvEs`C&ROg__)>wAD)n6liR}4+6o11#VYivGN^}rFYuDZb4z{Ei{?PEK1FfkOr(Jdc z_lOj=%QeRJx|x4TL?;ZaVm)!{RCfHtsY3lxEA6EsT)hBVuoFoE4aq2JO9SbrSO!}f zkd8F{#wJwll>n;LV>MQA9xH6;$R@2al%XTusMRX1&l(>7OizMVO8QXOC2eNO!P`@A*{87ulHbR=oT|#>rgf>U%s;8btt#4+gf3w2uJZ3NJ2SZge1r_P*xEI`XnrVexJs(a1JzN;T*mAz1M4Q#qI+<7S|773|$Gv`HR_N{@IU|(`eHP9_@PSfEJ?r`0^<45xf?L2EZzj*72jq z8tKkR{gZZyw{3AkktP96n=16VzDop4S{fm$C64=>VN4oJ8zK|ZvrVK2DSfEh>j+#m zem>vk&aNX`(vaFlv{HH;hJdrm{vtJ3=Z#(GIby7bW7g+jCI6j#Gwig!;CenW#_GKU zv~J$I-2yFKAGps0w$Rt?aRaSb>l;kCzLjUv%P$ngDz56=R%p0vqcHNgw|4Ali+;ZR z>KkriN4p!?H_YeP2(5Q?d!SftkcO>L8d0_-K&iLAd+&kDPVu-8G3i~tawQub9nW5T z>6K`$oZT-#41V{@t3PN2 zC_s|}T4iRo*cKurb?Rras{2F^YZE!dpx7S6^={3-Kq5khh#Ee3FXeM1?nyizuY<^{ zg){j~ge6Z|p}7XFBTfG+-TEiwl_fQ7x*4?f$!cw*>E|VpKh$JxW?fdOiFEmMhF|Dy z(CVY~VZq3>Inj&zyR~MpD-d-wOGm##2Bu;>DnDZq^7&`^`X}lXBv$;T^mo%A3@Btr zzpSbzeE1;2>jCgE09Yun?=)17=i|cyH9N4KD2oCDw6JnfK2$E|AHo1F*g9y?+O=oz zV*^@t$sofE8t3CS;w87SaL&GkWJUcg+edViP_X3M<)?CMSK)^&& zck*}?#UpZ2WtHGi{=xd(^DhQLR?eRV#K!sE=8f<{I5(2wtYbWyQk!L=ORjk*JroBC zv4*Ti9)itQK)xZ7qp^vj*|Dic55&`Frrl~n zx5|8WzSK4WnSixb?n_=DEFVk>NQI(Ox@X}?bCE!y?an5+zx(VuL@70DhlYng+tZ-c zZ|Or{DzM=RwOmLC#%vv=pgU9`?*p+^(9(7X5-Gzs9(jJ*go0I3bIsSphgX$4uiLlp zxVAcgocC&)>iH}p&<}Cm)W*de`rAS4N;c!_C{7nZYw!L8j|FJy$se%g1FV$QYdXCY zE3Pjaw(uL*2$5?*k4*Lg1U3a12C1!4w{mUNY2jijzbEXyDyszXCFOX2zx?2bZ>n@= zc}qgDjkry0v(X;`Oab(Z>)>VIKv=V^BNjptbkFq5N~=j7$CDi{oa27PbfWmT9IGV+#m`A}*3{41of+W&O19vj9(7M9tXR{SQ9q_yY;Yis-?GrUzG5Pz7iK_yn}zM}yid z4O;jY{zZchTGq_e!jbM<=Zk>g`Rftku(0*<$Dd^T4-E%_ASG%gFoS*fK_Fm4r^#B! z`qa1Gq$=qhfc;25!AVL`ukZsvrJBb2>=$s1R&^n(EP^Qj7J@H(9vh1cw)M1M)_Q~1 z{^qK~k+DhV$iA3=j^MKh_r^wn7QPgpI5oXy5Sr*Cb+~CJYQalVa~J?9DK?L77to_Y z3lXgl)cJZ4%HwRrOVW?hD-ru5by*IwT*Pi{Q-RB-4Pooi^G&1^LF>tWN+0UtcmXQ0 zF<2{_Kkr>d*ytY0(8_0+lZyxblMI7M|uTC(AG{u8=&G}AHexw)~5BaKRC7`Tzv@82L~Cn(EbRZg$ZAr;W6=JwKBeRu2)Y(-}4u*1zFc!_GIxXo`=6KSwUX%ENY z;m`F2Xq}mx`^|n!A8ObVXp*)vl3Mhwyc6Fi3rhlEWuSHU-o0qrY^`n3iu=FpkGw9R z!?riU2Z%3n)Y|8K8|!Hm0l>O*=We!o;iA{+J-h$je1Gc(1cuOT30R}d?X7c)~G<-z|$ zy&k1-K4kC-fYFep%~55)aV)mwkI&*l+6S#C=;{=q4BrYviEM?UgM$iMXu$)}LS)Of z;2Fv%eR%L8t@uf^&DTbD6Ts&gUKgL0u=|cGexD1h$_!a%G@^PdE(PiXtxeT-{G}(GDfi(+Yp~lp*Uy?GE$k#@<-_fmypwQ~dRy6DI$dN7m zq^jw|hYufZ>Z(Hx0|0?FC@Qwo@kN^~faxOk5TLbz*3xn_VznH!p|B}Li4q}t1=zZr z!>X(hbby#cjzo%JcnaghZbz~Zy~6Tid?O3hvFYd@yueT+fnsffkOjQD@d3 z(UM+=r>4&iw7r8h>hwKEL&kci3ibZrwUAb`sl6|K`3dKSZiRFG?DH?Qfq_6k$OBA3 zGn7KKQKwkX#LzZ$O3{Mr%inv|+qfESc6|E^DAUog^}Z(hwL$=_qn^E99A6i-cII&9 z11)iepE!D=09yhq0y0?DhcAko1zREbl2x*3gC<4v*yo@LXcMlqfoK_MS!hZDEgR7i zn}<*>*GAWB=_b~4l%`d1{_tTdqNR)Q%Ye|HD}3`2xYCaUV4*HRH`DCKn;+l00B*}G?JaX8;#Tw@ zJJ$j&S$*j1BdO2T+ICh7#qa>FGiPU7&hW?bZ+wFcT5FMrt)=a0V*XRz8X+43Oyn}; zu`vAfE!u$5iX8M@)zC82Xi(X*FG3nMr`q+Kv zX1!b9*hpdMaRQJb80~k^+Pi2%rJ>bjHJ&6~G2-R(VQ z5s?HdP0*6sDS*%F`86LcM9Eyel&YB;GU>xI(30Ot^eW`DB@wO7FfG;dURjUFX4>%6 zTl!69=|ec8YhAf^ZG#O<7YZh$7}8+c2Vl0&C=6P~)SmCP#h&5A4?k*wllAoSMYaUU z?C*<_p;ZSdSFT>|xJRN-r~w1`*tSDDwJDJ_IX7}_(jZ#gkt|QB!EiUyn5kpix4+}ApHJ}r@j0ja_Fvam`BI}&n-xoShEj(1 z^9X1V;5zXpl$dWI)=<}Ka8I!7(3&)C19HK%?A=Agu4_f1Gpw-%bLXrE> zCagL{wnNLoW&AnQTl!Hc=|kOrXfx7>03ja?iE*igt)h8oIcSB7z%^*e>kBN!>b3ll zuGIoyVN%2P*W&{N+eAMwUm?3h0_}=P4P@9ioxa5X;eM=BtQxZLJfDvi9)kk-L2`!o z!9!|Yjjxr?dhKVO=EveBfA^hx-unvQHuvm1R0<|?K70`(=>Zs8byt>B#K1mi2W>6v zJC31lJDv5qXR1P-uJ`kSSYOv@ZQtRVNgp~qnjOet3eNC|=m50va}l)GqBH;zq=tJL zvb4Wp%Idul)vFK#E8OKXH{_WWEQXg=hfOeR**f%yS5{ft5S&rk+i+<3i+u@N{g6JC zNxeMswb}+%NuXt*so`g}oIQBB*1AFabv2%|RJpzkRt{KT@Td#U?WJ$@J9pa7k3gwD zUP=AQLIVLUo5pOcl)UYtWEQe~EqGuTVSTjv9ke7hRwW%4D&&r($kt^5e zj?v`z(WCdg_ZEJShT$*)^+lg_EmF$y=?IRmz724O*TQSY_6hrJ8+pf$+1FBMJr*eF zlxk`;)7IEoi0%d0>a^D(x)U5eGM*hgJkn|^eRyQt8__!E(uFrSq}Hk%pUn+WI++9; zqpHo$2OoUc2x#Q@v#;%rPNmv3U#pls2Q!^w-0VitsZFG@NUQAe2Zo1#b4$Of*VBgr z3RR#+KuAE#M#OZDmIW;VHu-h|{r~K}>vJS$cIL-fX|&Rgw4$^T{!IHXp#51P&xif) ziP$e24%6EMfco?3w_{4=s2Ab?94&51hlkXYXa#74C@w z{P;XlxE;@(#v6~`QUPh1Rlwx$NhSo0QFOz~F|QyTrHQm={ulGX6SF*KK|ZY8s)xgn zwi=PII+WR4w2#*xKC1lT`%LbkX4uH7Li+o0uaE)k0FYyG6dXeP5gCV-*INz%Bm7rY zsO)C<`NTa>{C(uPS@Q*21P`c|pvoXuy)`MvtB$`%-j72Eo-@8ejzdK@Hef)*uNi65huw4Yk};Xb>jZOj zRo-*Na=z%b>`RMX_h~LP@OuI|ig%#WJ61YsptZhnb*7WywTe$D7ipRo<~k;7ZZrq9 z06HX~&_({={{A1L{l(GU-u+|$Ouc1Tl;0OMOm_(k-O@uzgGfq?NDML30uJ2*GPJaG zqrlKG!$=L?AgwTfq(~zI(p~zFzyI^R*YoNAdaiSybN1S6?X`DM^zWoyK#~e+(7>aO z`Rl++qx^O6AKZz@m<~wN@r-O!oJje1nux{@aK!BH4QSf~$NoomsL~CaP8h!R?oH-h z*AZWoqR?o#y0#*0Ewki2QO|TFrV~d|X!mPnILGSRP2zt2ROz|WrlJT1n{$?Nld!tw zRiBQRl1|Y!N0YJfG{zrMA;8>+0Gz*W{B9j$H#>BZpTA!|7UMU)LCiFKBn&iN)RC9d zR_$kx;(cvW!sJ~dw@y3AI3xBu;P3G(09mVCAsx=|_@228I^}?*03V;3Zkc6%71G`& zCWxEk%7k}~S_miGYe_6DY_xLg^L{PU4ldk<-?CgJSPv^TdLN(P^vewXxl9Nyp7Oi6 z8z5286OZOB>wZNBK4w~H(8So!Se^>~_RCslwTX`L)q+J`MwM~#u*!k6=W1k!<2#da zYO(lbn%zwe=N~yeGICvgLJFvbuZ)OxHkvW)Y>|<0hW{8}mSDF(463{^njyt{*jnnU6-?pu*DPGiyVUhZgUOlgM-2q4HH}lX;`^oTW13Sj_x;}r zk3~;xXINH%_h#bN=|PoHfc$cFtj9w&!|Tr#CFPr~DTO4U$E~XA9Zu~(BC&lQ<2*NF z$4#u9M8qq*y!P5&vA=8atksvUtpyiv7${jyubm*s z@$m7cioL0@zlp^Q{*!Mn$TcIRWBj3%as=J|((`ney}@;qj0bYg+#0*5KL_vR8wRv#ONKw;sdKk9)`{cTzADI@fvlm~l`?&1)`#iQhRyH`Le^d$5_XG$^JR zj1_bwCvcOX)U2Q^t-OalJ9wLNl7n4Y!OFkbSXfxuE^Y=f9T~24)Nq6;*x&*mK@Ij? z9j;#^hl)3bj<*t#r_OX9of62dXfVyrRq&$dI6lP9ZC^9Hq{kp2D^1%6Df0$m325t4Yta#S9U zdC6N8m05fM;k)$pC*jJZa^RSS+Xo|FclSxE8PkONGE%9D|N>DBK zUCL8UVLu}80IEuvw(tRk!dnaWm6Jl=I@d%ai*Z$-&D<9k|-)gSz+_4ii1nm6L8U}i6uJivZ5%8Vn|fa?r8pd>P@x#RUZY3kx=EssBij)jAiU*b zF?Y!`eg9#VnVAsMSWn9L<%mc~y#trK--pp28`ZXOD~LQRxuk_AlS-K2rV;A8#J?}J z{7`^nWnW`utsb(m__cJD;z^4?vB2rM2QF8F*&P2D+_m-!?!+Hf>O`?!u6E3$eR z=rXkbJ*~cI;%Z`>=2X&fv!BweDdXo$`DIt66(iOt5L`KbMt&S4RP9r%PAL=a(%p~I z@IxD?Rm#A#ptt$?yUjhp}GeSIE&$}a6bbQmjnDEs?^ zyDdO(VwH4iQg>6nkqRJ7Y11R>Fkd4U3QYnN8{ZRT7B$OH~6A3eoK)7Jp%FdmAtPPG| zWAiXMe9eI;c8W}@n*PWH0J7zW`y5?wUsvdVe*C+=c242Oc6psu6~+_!%*gaQDng!z z;TjGUKzc#L!h%oY=WDGbLO!0frmVyV75rk@Z0ev~6HDQ-X1>0&!*tiA#LUmUQVbrd zy8g0jOzzO=YNfoF@4qYumR&jYi|sK~rdyUdW{ZrYjHsmLJoA}X;Ai-zcIY2~@wrvR zYkvfN4oKnGOIyK`j15&rNc<)=A+`?6H*;bBqteCn$g7nrX4Kc8!d9RFxU=PrWuCK@ zOoQS8T$rAAvwLv;a92A0+>w|AjV0YfZK*|&x6L00hK(u(^|s(5c_u0bcGY@xj_&Ny zv+bcP;V&xnD7ACBP1n<({nEoO>}avbZRU~xs8#qB8Gn9tOn4wS0>cb+3Ta>ZX>d`F z3*kwg)y6@#(HjW3TzjY5`w@URE$-xC-!dz&>Ws?Xv%NA4j5pnph6 z7^&y_^{^6-3oP=9+ZddY=QhdL2MTvXrCf{Kb&;_6t@m-08YL4W@MpMx!I2TwDEfCc#j z4=Gw~t=x*z^Xa=HCb7Y3cXDP6B-dXCpBQwm(;IN=fbBCdIa!qzk6`V@pd{B^U!T=Vb5wVf9z;1irNPV?;xHwaz;Dyb)Wh z^z_{PcpmEo!%FkV<9quElYBFL3$5!YSybN(6Lan_5Fn=-y+h!Gp+A99jw}gy+|ZO2 zA`bN--~@e4u>mZi@L}MA>Wt7%TpCvO7T76MOV}HCqLm`ng;d0D@Xj1ZxY}7G@)vU7 zZJTo7sTjYY8J@Xhm3jS_{PjO&e(^#!-D;9rT0B^gUj4SZg_|QW*Vl1@ zEPC0L+CTg8t#xJetKMnTv@b(jNpxDDX8oNmZUemZTCm<~dC3OM=4pk-Zm1G3n(DpH zP_d#&B`gy~a=9r6h^5*XcRc9*D9G%zG4EB-b^l!H1}B(8pBmzHBr)>z_(hqziP@2l zYgEBI{KXg(zaowou4+b+1Qa^n>elh^2Mc4~+|3uTN77Y~B3@@WWG;SYzQu7pCgCFN zGWfdR|MrU^%$-h!^f1uBfik|?{fC#b-`bR+h=XP8&psVulwj~3-ZSC4r@q9j!~44C zHk))8OQBo8Fhh_iQnGTP!ww1*%9jT#HCLFSY((~1Kktk^=-}o7?k>b2!Ga19Vf|+5 z&@Rg>(WlE#ndY)9UFV&ZZa;S<@s7pdfvNKhOL*azd+N>Dt5hkS19r?UrodSeEnJ!0 zjV;o-$Y%J;aO-yPC(48#w3l|&QPw^!DQSy;;z|F(a!?tx1bcIh1sk;_y`Z2C<0M)RweMUQFWpAshI)hYP#CO9vzoD+9q~>BNdC9`_x{7!;WB9xDk1Wu#9@JTm4FalIa|q$2~L#loQQrb{>f}3dvxzBlcsT&%ALvouKv`{g52Ul`O4kqDg$Y=l~0OZTAI45QCsZpy0)s` zJzfc%7_kuRNbex1H6O(qs8H;<+1)c3?()9cJJzvMbXL4M>;$ zeQv6zbC^r;MnI*cOK>)3<^I#D_V6g%_42P)1)C7@2v;28;b_{!u)}Qts^u=4RGbjs z!Zmn?&_c-TQ6?4Fnr3_Gugea2**W%^3^1gqnpc~s_YkU5bf!S`M%I|h^__y5cOf2a z$JBsF|0^e0_;%c@Z-QRjk(kOzt%H)_>-w?MJI3_%t?SQ!pcDOFW9xguyla(Hbkr5&b?5U{~^)p z&dGvg?LLWzTY9kiR;AHrV2a1y>JeLeG<2d@pD4h>Y&Y|3UC)C+l&8WFvALo2StBF- zOxm@v`{r{;^2^7MEAj-{f70IvRZrDFw);@P(geK?7a9!T+ep4e#@6nN;D?Ql<`@R! zmg+1}Dk%k=OZgWxZmc_9-Cg>LH(l|y$Ta9XL6tT+A09G4A-sDAdh$N#(po@;G_maX zjtJ%HdP)ZNHQ<#^adf6&&oF#WRa};Kn&8ZTHSIr{x$sg}~We4 z(djFP#`oj>l?W9KMjD=cd-f|8SGdEPlP(6l11p{x?;(KkJTW&;Wo*fh^1yjBn;`h@ zgGZMX9T1;eORJ#h(q!1qG=6A?Nqf6~LzoZ13-Wsk7z^xTu=xpUPc+o{>{B5b|(< zX_RqqQ#5Y7Qae|mc_A?z2E^biZjIKLk$}!#NhlW86L;r9x=we<^urSV%DhbGYf4>) zErdP4a^^U>vdc<7E{V{-e9de}1RWs|jvk(|!+R{SR_ZU1;(7OPdsVHNF#0gEh{O@HZdAuE zTs90D&xfcqBez#_Xil#-W7@3Q?37M+S$%Rhp5J*=hy5h5uy?H0KBxDg$CHf&>7J$z zM&I1St({;Z*e-vr_4L8(VZN|5%Fp1Z2dArX>0)^z>=!`2m|g~aax`itT0xWaHUTtp zf>(vQFl#{_8-D%jOt2dl4Z|O|N$w+@Bv}Z-Hf4z>x=2y@%ZN~La`0kU-f1D^ znFz5U2(}I!XN0xl{aKg8u9rmjwQAhvCw_GqA^=xd$xC=XsI~3a2v`jz`1?4W0O>;y z{!}IT^Jn7+9>^LnZ{o4U9fmNO#DR>|8p2Ps`ei9sxY1!AyRw8P56kiVPQD1?@F9^@ z9vVo{5r1=n>DMc`w(_=@?z_dO_z9+eiZ7iS3xn26-{(MwZ?Q&6G-=8$Y-8c%B6qE= z(Au{%e=U{XaB`EL>{47e)+UFj-WN5~KP)`Nj2_=A1hfT{odra_?@382EWmxX4|X6O z4C>%a!2_yf(%~Ep1@tV}rr=SgY)sg8yP9w*{X-`j z>FaI#2aj<7s$E&<(L(agWe;yyimN2wvaa_tDU-639b+FXCb|*6JaV-ZF`;!%r4Wyd zJ82ROCc2~?Y+`!s&~d0OpIt{V_I$Vfqo#bUr|~ErDbHxS{jg7SOK3vK;hl4F%{t1V zAA9)Qo%#Mnwmuo8Y&eERdi94Bj!o(%34p!zB)P*3j|%LE5Ij8xYBJp&DRF#EnD_Fc z!X3u`e5E-2q0u_J<{-N4%KD`t;r9P}y2=@y% zU;G_dmcnSnEHSp5e`dc`fc#ojEk-7lI!Jgp9L%QVm8KE@@2A?aysfWFYNzJ{1^jw# zWsb9%v9lizA#$AqDJMeBXf?ouO{iB}AinC)smXD#C%y|1K}|eW=PeQqkacjM=AGg`eW9$=tJzI8#*rSC z_?nL;3ZF7!iMH|gC{*dONA3x0K!y=3p?{BioRvL{)i2@_nD>Z{M*>y=!qKWd0~j95 z4x8oiji|F?waP+m;Uj|dzuUh9JF}mN9tdxcQrW@qB^0^}@gTjXcKy+b$H_{!l%a}` z&~5YJH&dK~U@T#+sFY04C%r+Oi$Op3JBuUmMk0Zu@Tcxvng|xWS6x}1*_}6wE_Pi9 z#XK+c`l0u0%+IkImP888auX?ii4Y;T-&fw;Tdx5(Xz0=+e+M%mNDVp#xB7lxAm;Wi zX}L>ol?#XZ$n-Ni&8GLy1xkCSH%YNpjS`kCe*77Y!$q2>Q35@S7#445@`4V6O!MKk zrF_aeLA5ti+^~23vwVfn-Kpt7Q2hJdO@L2r_K!lH@3P5EA5(X%brEyQ>80K7W%+2! zbBmFgyfaykdRnNd)9sPkjI{=vGzIty9!{qKPRByJzj^L9U;F4!U1xBR9n9~budGBD zIc|XH%)8ArnX@e0#>_c6=%hVN$nog9ezT*wPH&HNk^lwRAr7!a@YsvE-=twliGmpI z!N%oUd6ANXAd>A7aI1nv4}?I&<+p6>UGoTp4v{-2P3hYr@kut4UzfbXH=!kAG4;S); zlW$XH0u|BIDQ|^OM(9a4L+aF;c8_eRQ1x=eXz>MfbmB%fWz0XL=0w)i+8F6}@_0e} z>N5SfsFn9UMcv}j(ZM}6O04U$GdcfUdGwulN5=aT&SCf&$tHFQ$;V+(m`FV~@p1eT zVa_^YPwYhzGhMy?`SY6JmIs%CWX6pU_91d`eVp%|h41qxUWP+L!!Zic97w{o)us+_ zRA_+zFL>VXm&3PQqoBCtWoSdS5`X>Ch32F;i5LU9AhPDN_%FmNncSZF8 z7q5&l_)Gwyabpsq*a34C7qEptKmMo~^qdfxfGimxYm(2N%hyZ@^&AKz)1u#dzB3J; z0a{YS>I<)(6|4cIVU1Q!2OU+?d0G1on{_wd_0dSO$zzB(*J|=uME#A7FnT?e?l92A z-UJ@Ae<8s~hjL$8zSWuDQd<_`UFzBv(al^z%%oL}>HUzCJ9rxdy z&m;+;e@UDlz6F}jY!fqVh6u6HY@!+L&#{{+!T#|uLt^j;niI%Et?jEOWl~1)Yw`J$ zaJsiFpFUa2Ep{|*Jv)IaXQ`FF+r$i>^A^W&ln%@vej^-}t?dkm?RzTru>?1>x%!{{ z%+J3s84_w?#$6UNUKwm1P3HSd8J0!j_yM5(ZH~`7jYipmUg7)xMY{gS%~VTcb{TU; z?y!@hZ5+Ge*>^12Qw0{GXP!ep>AM&iO~cMbT<)bf6rUiHSz_{3el zb*8e+WR?NmlU0Ezc$SO~RciF#m-W0V$FitcUssXi~Y3eVeNy*7np z6ZE9xCU$Rh{v;W&fn5?N@_Q_>HiuY=Ak#wr+ePrlV+!$7skdK{7Y%%v zmX{*zY46lwcxF3vM`@0wheJ}IS0gIAaNh?s4qw+~@Dqh4-aXCA&Q%f&;&GmQKwHui zu6u(dNIwb^+}t!-3shiNkFaT zFP{c0sqa5C{hKuKz5DA{t!EV%8Xs6h;oZZRD9(YS4d>(w_J>GhMfA|l>M471KzX5oy$B~$1yYS%At+8UeO zHSODUQ&`HdA%mS(;mEh_=lgeWz%6K5Ig5a_b7DD>nf-LVGlYGbJ>>DGPmiVIe>yJ#T9=i{x z)pL$pqMB_H_n?Q>OedVyZiF_n2eXftzFE!9kCXrEYPH_f9&wAYtcrD}9?vz|V#2B= zOX=FCj_scKIRt;L%p4|T+)N}WSE}6&%I6NjS_w(r*}9QwV?nABeysGxZc6%Ig1?$U z9mgv*U+YCpC}=j-aJA@C!%hmx|GG-jNg=Sjc4r5SNyt1`C=tB1ilD`wY7Tg5wt^=Me8Yq`OKygPb* zMo8-+0S2Ct^<~|Od9%O;Z>=i#VTFM<;wBbo!uiOYy1ysTjUQdkSX9uGx(qohAs ziaMwcN5?v*oD?~7%stybdwd-%2syq3?v(Y_odV*a=dhPWX2xw|rXe(SUXy?i@TROq`9-(r5JzNAS0gh zi}Tc$>rJ?zd8MoE3*ijmL)o$ft3Iz9vL;&sp;Rq)KI~rpE_g0 zVK1k{=M92?XpD@Ll?%WI%AFyrXK{7t@k(W7?tM=H#-aw>w(x>yhTlku?*!)x8sjNd z3mV5g9S+%MvZ-+kFr}Eq5%z*oFO8B3T|6#W8&IiTA%Xbq7AO@YQIcw&DIza?G)yFT z*>@2~H*tGKB=q`j*>zO)WqQ@UKCTWW6C0VP69iw6u5!UEn}EiGHqo!v>bJ$tU_r>_ z^>hKEdRU4WWsmbnpAQ52HA07ZyQelJozQQum+%SAvKN7$-m0?+8y8`NE4{Uq=wgU* zgb5!;iE2BlkNk-de=nKU+4wWg7`@p&%gG}- zQihdf;zWYHNWWz#tUSt$Q@D-qH$fED^3a1I3yyY*(#0o{vpyJhIC#(vZg!lzGAq1V ze%PFr0(vcFRozGD`k^88#YlxtxOS_D0Jh1Rn`cqjvsu2J-9o}n63y?-|BwPKlMGxj z!6Mv*MVZ~nhD?a+PP@x`ga&7ae-twKG56**OS()wTek0zZ9@M;&~{S$YujA~D)p>? zvMiH9;Na}|_;dpodpSQp+9{xJ-;#+`ZW_-)Sc#7H^8gnAdy8MN!H zi!015O@`@$v*&xE=;`D%Knl(Y<0ldN>L7)WVn{LO&^(i7S!6hXnj^N(A`Gyh8+aUr zzE$}#<fso_dKe08+Dn-(Cf5M?%1`k1$-G=Fro*6e zPBZqRUYa>M%5`20%|w6#kAGfb4Tyor9Y zten8&rp}HiNE}mZ?1TG(CKjBXHa+THV}1Y32Qx)WY4Wl^ulAeh4SR1&e7K~T znZTYVHA1CCvKqB`{2~EnW^{mECGq$ZJO)8u4f!$Ow`Jzs+zGGWkeq1i|w` zYpC7Z_c1o; z51r%(w_Y7sGvq=2n(x{Ttr2f-8F7)1hGVpzY~xmK>O}~huxkq>N6xm0w_L%MI;W)O zNBOek3q7WpE9H-eILwVnxyX_7n<4c%-*P`3Q<~TGs{t_6MF>4A3Bb~>A1%;e+0f%( zUlx2E#5-mq2xq8pgd^f;(Ompo^F^g+nZ=oU2aRpNL#$pC?{d6bPQj^)Q>Xr zQU@B^G^9V%#~s&U8Co|Yi0f_1uwG(-C;^wAgo?}TmKsh5rlW2l0d37J*i!yAs-R9Qzlp&Unw+@kfOC_%BZ9ln%@SwkZ#K>aw( zS39%XJ6_Cy;xuGotWGo#2b-X_SO_V4ckPO+y@E zVH{P7iRn7Cj!1H50q+G zC^mf6i<(=?Ihd|WX|3&-huLdDkxB1|XgM}E3q`cCym#S#^!hU&6&I5&HDWqHEM1Q> zpBh(MWaP+NPm|*O`fbIlbH?jE6wTvGr-U=;y$iv3Cg~s-;u!b^|%Pb|6LR%5B

AkN7yhkJ42INsifV@M1$6z{5J(zFps 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 I=akR{0Hs_3aR2}S diff --git a/app/src/main/res/drawable-xhdpi/wifi.png b/app/src/main/res/drawable-xhdpi/wifi.png deleted file mode 100644 index aa14b473858459055a86c53d9ad183d543327f97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14959 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 Y4nuyGc3@^091ewy3`~hdr(JIU4=gBA;{X5v diff --git a/app/src/main/res/drawable/actionbar_search_bg.xml b/app/src/main/res/drawable/actionbar_search_bg.xml index 2151310ba7..eae02df297 100644 --- a/app/src/main/res/drawable/actionbar_search_bg.xml +++ b/app/src/main/res/drawable/actionbar_search_bg.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/border.xml b/app/src/main/res/drawable/border.xml index 8aa461834d..ae344c0915 100644 --- a/app/src/main/res/drawable/border.xml +++ b/app/src/main/res/drawable/border.xml @@ -1,7 +1,7 @@ - + + android:color="@color/theme" /> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_dialog_bg.xml b/app/src/main/res/drawable/border_dialog_bg.xml index 50a9df2417..1185c7605c 100644 --- a/app/src/main/res/drawable/border_dialog_bg.xml +++ b/app/src/main/res/drawable/border_dialog_bg.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/border_green_bg.xml b/app/src/main/res/drawable/border_green_bg.xml index ddccf20f8a..9b14d3c305 100644 --- a/app/src/main/res/drawable/border_green_bg.xml +++ b/app/src/main/res/drawable/border_green_bg.xml @@ -4,9 +4,9 @@ + android:color="@color/tag_green" /> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_normal_bg.xml b/app/src/main/res/drawable/border_normal_bg.xml index 89f099a193..3eb1d2aaff 100644 --- a/app/src/main/res/drawable/border_normal_bg.xml +++ b/app/src/main/res/drawable/border_normal_bg.xml @@ -1,5 +1,9 @@ - - - + + + + + + diff --git a/app/src/main/res/drawable/border_red_bg.xml b/app/src/main/res/drawable/border_red_bg.xml index d422c8fefd..6b0bfcc73f 100644 --- a/app/src/main/res/drawable/border_red_bg.xml +++ b/app/src/main/res/drawable/border_red_bg.xml @@ -8,6 +8,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_update_bg.xml b/app/src/main/res/drawable/border_update_bg.xml index 51b80ae9f0..04d164d0c8 100644 --- a/app/src/main/res/drawable/border_update_bg.xml +++ b/app/src/main/res/drawable/border_update_bg.xml @@ -2,7 +2,7 @@ - + - + + android:color="@color/content" /> diff --git a/app/src/main/res/drawable/cardview_item_style.xml b/app/src/main/res/drawable/cardview_item_style.xml index b4a124bd14..ba6e33ce72 100644 --- a/app/src/main/res/drawable/cardview_item_style.xml +++ b/app/src/main/res/drawable/cardview_item_style.xml @@ -1,7 +1,7 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_download_dn.xml b/app/src/main/res/drawable/game_item_btn_download_dn.xml index b77b281c10..60c304d536 100644 --- a/app/src/main/res/drawable/game_item_btn_download_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_download_dn.xml @@ -3,16 +3,16 @@ - + - + - + diff --git a/app/src/main/res/drawable/game_item_btn_download_up.xml b/app/src/main/res/drawable/game_item_btn_download_up.xml index 595c27ec5f..b3417d4088 100644 --- a/app/src/main/res/drawable/game_item_btn_download_up.xml +++ b/app/src/main/res/drawable/game_item_btn_download_up.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/game_item_btn_downloading_style.xml b/app/src/main/res/drawable/game_item_btn_downloading_style.xml index c39ad0f88b..65f8bca25b 100644 --- a/app/src/main/res/drawable/game_item_btn_downloading_style.xml +++ b/app/src/main/res/drawable/game_item_btn_downloading_style.xml @@ -4,10 +4,10 @@ + android:color="@color/theme" /> - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_launch_dn.xml b/app/src/main/res/drawable/game_item_btn_launch_dn.xml index e069827456..8c9437c650 100644 --- a/app/src/main/res/drawable/game_item_btn_launch_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_launch_dn.xml @@ -5,14 +5,14 @@ - + - + diff --git a/app/src/main/res/drawable/game_item_btn_launch_up.xml b/app/src/main/res/drawable/game_item_btn_launch_up.xml index 3a913cc78b..db0e1bb952 100644 --- a/app/src/main/res/drawable/game_item_btn_launch_up.xml +++ b/app/src/main/res/drawable/game_item_btn_launch_up.xml @@ -4,6 +4,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_pause_dn.xml b/app/src/main/res/drawable/game_item_btn_pause_dn.xml index 57b9ffbf3f..7621ebbbc7 100644 --- a/app/src/main/res/drawable/game_item_btn_pause_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_pause_dn.xml @@ -5,14 +5,14 @@ - + - + diff --git a/app/src/main/res/drawable/game_item_btn_pause_up.xml b/app/src/main/res/drawable/game_item_btn_pause_up.xml index f195cdb8b8..bd80a724fd 100644 --- a/app/src/main/res/drawable/game_item_btn_pause_up.xml +++ b/app/src/main/res/drawable/game_item_btn_pause_up.xml @@ -4,6 +4,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugin_dn.xml b/app/src/main/res/drawable/game_item_btn_plugin_dn.xml index 9e17b7b3a5..465d2fe43a 100644 --- a/app/src/main/res/drawable/game_item_btn_plugin_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_plugin_dn.xml @@ -5,14 +5,14 @@ - + - + diff --git a/app/src/main/res/drawable/game_item_btn_plugin_up.xml b/app/src/main/res/drawable/game_item_btn_plugin_up.xml index 0f1d02010b..0730c573ad 100644 --- a/app/src/main/res/drawable/game_item_btn_plugin_up.xml +++ b/app/src/main/res/drawable/game_item_btn_plugin_up.xml @@ -4,6 +4,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugining_style.xml b/app/src/main/res/drawable/game_item_btn_plugining_style.xml index 044c03304e..4b22501013 100644 --- a/app/src/main/res/drawable/game_item_btn_plugining_style.xml +++ b/app/src/main/res/drawable/game_item_btn_plugining_style.xml @@ -4,10 +4,10 @@ + android:color="@color/btn_plugin" /> - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/md_back_off.xml b/app/src/main/res/drawable/md_back_off.xml index 20d2fb1460..b34f5882b5 100644 --- a/app/src/main/res/drawable/md_back_off.xml +++ b/app/src/main/res/drawable/md_back_off.xml @@ -1,15 +1,20 @@ - + + - - + + + + + - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/news_search_bg.xml b/app/src/main/res/drawable/news_search_bg.xml index e833c4e722..394e64cc8f 100644 --- a/app/src/main/res/drawable/news_search_bg.xml +++ b/app/src/main/res/drawable/news_search_bg.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/news_search_btn.xml b/app/src/main/res/drawable/news_search_btn.xml index 4733e6b7b5..a2fafc0107 100644 --- a/app/src/main/res/drawable/news_search_btn.xml +++ b/app/src/main/res/drawable/news_search_btn.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_download_hint_bg.xml b/app/src/main/res/drawable/oval_download_hint_bg.xml index 4e1c685659..d3ac2782f4 100644 --- a/app/src/main/res/drawable/oval_download_hint_bg.xml +++ b/app/src/main/res/drawable/oval_download_hint_bg.xml @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_gray_bg.xml b/app/src/main/res/drawable/oval_gray_bg.xml index 34774f7b7a..c93462b846 100644 --- a/app/src/main/res/drawable/oval_gray_bg.xml +++ b/app/src/main/res/drawable/oval_gray_bg.xml @@ -3,7 +3,7 @@ - + diff --git a/app/src/main/res/drawable/oval_hint_up.xml b/app/src/main/res/drawable/oval_hint_up.xml index e7a77aea5b..1d3925ba22 100644 --- a/app/src/main/res/drawable/oval_hint_up.xml +++ b/app/src/main/res/drawable/oval_hint_up.xml @@ -2,7 +2,7 @@ - + - + diff --git a/app/src/main/res/drawable/oval_scarlet_bg.xml b/app/src/main/res/drawable/oval_scarlet_bg.xml index 1e8a0b4675..f488ade1dc 100644 --- a/app/src/main/res/drawable/oval_scarlet_bg.xml +++ b/app/src/main/res/drawable/oval_scarlet_bg.xml @@ -3,7 +3,7 @@ - + diff --git a/app/src/main/res/drawable/oval_search_bg.xml b/app/src/main/res/drawable/oval_search_bg.xml index 6e7663beef..c63f83ebd4 100644 --- a/app/src/main/res/drawable/oval_search_bg.xml +++ b/app/src/main/res/drawable/oval_search_bg.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/progressbar_bg_style.xml b/app/src/main/res/drawable/progressbar_bg_style.xml index bc376327c4..2f8a6c9626 100644 --- a/app/src/main/res/drawable/progressbar_bg_style.xml +++ b/app/src/main/res/drawable/progressbar_bg_style.xml @@ -7,8 +7,8 @@ + android:endColor="@color/btn_pause" + android:startColor="@color/btn_pause" /> @@ -19,8 +19,8 @@ + android:endColor="@color/theme" + android:startColor="@color/theme" /> diff --git a/app/src/main/res/drawable/progressbar_normal_radius_style.xml b/app/src/main/res/drawable/progressbar_normal_radius_style.xml index 3eaa4af658..5fc04d220c 100644 --- a/app/src/main/res/drawable/progressbar_normal_radius_style.xml +++ b/app/src/main/res/drawable/progressbar_normal_radius_style.xml @@ -4,9 +4,10 @@ - + + @@ -15,8 +16,8 @@ + android:endColor="@color/theme" + android:startColor="@color/theme" /> diff --git a/app/src/main/res/drawable/progressbar_normal_style.xml b/app/src/main/res/drawable/progressbar_normal_style.xml index e5d009a356..37790ac132 100644 --- a/app/src/main/res/drawable/progressbar_normal_style.xml +++ b/app/src/main/res/drawable/progressbar_normal_style.xml @@ -4,8 +4,8 @@ + android:endColor="@color/btn_pause" + android:startColor="@color/btn_pause" /> @@ -13,8 +13,8 @@ + android:endColor="@color/theme" + android:startColor="@color/theme" /> diff --git a/app/src/main/res/drawable/reuse_list_item_style.xml b/app/src/main/res/drawable/reuse_list_item_style.xml index b4a124bd14..ba6e33ce72 100644 --- a/app/src/main/res/drawable/reuse_list_item_style.xml +++ b/app/src/main/res/drawable/reuse_list_item_style.xml @@ -1,7 +1,7 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/reuse_listview_item_style.xml b/app/src/main/res/drawable/reuse_listview_item_style.xml index 3819be1a69..478e6faff8 100644 --- a/app/src/main/res/drawable/reuse_listview_item_style.xml +++ b/app/src/main/res/drawable/reuse_listview_item_style.xml @@ -1,8 +1,8 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/reuse_radiobutton_item_style.xml b/app/src/main/res/drawable/reuse_radiobutton_item_style.xml deleted file mode 100644 index b442d76dc6..0000000000 --- a/app/src/main/res/drawable/reuse_radiobutton_item_style.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/shape.xml b/app/src/main/res/drawable/shape.xml index 9405f1297f..cb51b50fcd 100644 --- a/app/src/main/res/drawable/shape.xml +++ b/app/src/main/res/drawable/shape.xml @@ -1,9 +1,9 @@ - - + + diff --git a/app/src/main/res/drawable/ssdk_oks_classic_progressbar.xml b/app/src/main/res/drawable/ssdk_oks_classic_progressbar.xml index 5e67f84ad0..90f2b04c28 100644 --- a/app/src/main/res/drawable/ssdk_oks_classic_progressbar.xml +++ b/app/src/main/res/drawable/ssdk_oks_classic_progressbar.xml @@ -14,7 +14,7 @@ android:centerX="0.50" android:centerY="0.50" android:endColor="#09bb07" - android:startColor="#ffffff" + android:startColor="@android:color/white" android:type="sweep" android:useLevel="false" /> diff --git a/app/src/main/res/drawable/textview_blue_dn.xml b/app/src/main/res/drawable/textview_blue_dn.xml index 6ebdd1fabc..09d83e7f9e 100644 --- a/app/src/main/res/drawable/textview_blue_dn.xml +++ b/app/src/main/res/drawable/textview_blue_dn.xml @@ -3,7 +3,7 @@ - + diff --git a/app/src/main/res/drawable/textview_blue_up.xml b/app/src/main/res/drawable/textview_blue_up.xml index 22326d4a15..2029f6051e 100644 --- a/app/src/main/res/drawable/textview_blue_up.xml +++ b/app/src/main/res/drawable/textview_blue_up.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/activity_concern.xml b/app/src/main/res/layout/activity_concern.xml index ac53e0bcd8..355b12ae69 100644 --- a/app/src/main/res/layout/activity_concern.xml +++ b/app/src/main/res/layout/activity_concern.xml @@ -2,7 +2,6 @@ + android:layout_height="match_parent" + android:background="@color/background"> - + - - + diff --git a/app/src/main/res/layout/activity_downloadmanager.xml b/app/src/main/res/layout/activity_downloadmanager.xml index 6152a6d718..0460e2c8dc 100644 --- a/app/src/main/res/layout/activity_downloadmanager.xml +++ b/app/src/main/res/layout/activity_downloadmanager.xml @@ -9,7 +9,7 @@ @@ -57,7 +57,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="游戏更新" - android:textColor="#333333" /> + android:textColor="@color/title" /> @@ -75,7 +75,7 @@ android:id="@+id/downloadmanager_slide_line" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> @@ -42,7 +42,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="加载中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> @@ -68,7 +68,7 @@ android:layout_height="match_parent" android:background="@drawable/textview_blue_style" android:gravity="center" - android:textColor="#ffffff" /> + android:textColor="@android:color/white" /> + android:background="@android:color/white" > + android:textColor="@color/theme" /> + android:background="@color/theme" /> + android:textColor="@color/title" /> + android:background="@color/theme" /> + android:background="@color/theme" /> + android:background="@color/background"> diff --git a/app/src/main/res/layout/activity_gamedetails.xml b/app/src/main/res/layout/activity_gamedetails.xml index 50088e3d63..1c9dafca9c 100644 --- a/app/src/main/res/layout/activity_gamedetails.xml +++ b/app/src/main/res/layout/activity_gamedetails.xml @@ -21,7 +21,7 @@ android:id="@+id/gamedetails_ll_top" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="#ffffff" + android:background="@android:color/white" android:orientation="vertical" > @@ -70,7 +70,7 @@ android:background="@drawable/textview_red_style" android:gravity="center" android:text="关注" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="12sp" /> @@ -93,7 +93,7 @@ android:layout_weight="1" android:gravity="center" android:text="详情" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="16sp" /> @@ -122,19 +122,19 @@ android:id="@+id/titlebar_slide_line" android:layout_width="wrap_content" android:layout_height="2dp" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> + android:background="@color/theme" /> @@ -157,7 +157,7 @@ android:layout_weight="1" android:gravity="center" android:text="详情" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="16sp" /> @@ -186,12 +186,12 @@ android:id="@+id/gamedetails_slide_line" android:layout_width="wrap_content" android:layout_height="2dp" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> + android:background="@color/theme" /> + android:textColor="@android:color/white" /> diff --git a/app/src/main/res/layout/activity_gamedetails_news.xml b/app/src/main/res/layout/activity_gamedetails_news.xml index edb82b031b..730c0370a1 100644 --- a/app/src/main/res/layout/activity_gamedetails_news.xml +++ b/app/src/main/res/layout/activity_gamedetails_news.xml @@ -1,11 +1,13 @@ + android:background="@color/background"> + + + + + + + + + + + + - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c693e9103a..fc65b95bde 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -37,7 +37,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="游戏" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="11sp" /> @@ -61,7 +61,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="资讯" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="11sp" /> @@ -85,7 +85,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我的光环" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="11sp" /> diff --git a/app/src/main/res/layout/activity_new_gamedetails.xml b/app/src/main/res/layout/activity_new_gamedetails.xml index faa23d0126..2dbb4be59f 100644 --- a/app/src/main/res/layout/activity_new_gamedetails.xml +++ b/app/src/main/res/layout/activity_new_gamedetails.xml @@ -14,7 +14,7 @@ android:id="@+id/gamedetails_rv" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/bg_color" + android:background="@color/background" android:layout_above="@id/gamedetails_ll_bottom"/> + android:textColor="@android:color/white" /> diff --git a/app/src/main/res/layout/activity_plugin.xml b/app/src/main/res/layout/activity_plugin.xml index 4a06f782c9..f842e52b06 100644 --- a/app/src/main/res/layout/activity_plugin.xml +++ b/app/src/main/res/layout/activity_plugin.xml @@ -15,7 +15,7 @@ android:id="@+id/plugin_list" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/bg_color" > + android:background="@color/background" > + android:background="@color/theme" /> diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 21e714f903..c4412dba75 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/bg_color" + android:background="@color/background" android:orientation="vertical"> @@ -40,7 +40,7 @@ android:gravity="center" android:text="一键修复下载" android:textSize="18dp" - android:textColor="#FFFFFF"/> + android:textColor="@android:color/white"/> @@ -68,7 +68,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="正文字号" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> @@ -111,7 +111,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自动安装" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> @@ -287,7 +287,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="清除缓存" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> @@ -327,7 +327,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="意见反馈" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index 80e487e098..bf617e3574 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -14,7 +14,7 @@ android:id="@+id/splash_ll_normal" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/theme_colors" + android:background="@color/theme" android:gravity="center" android:orientation="vertical" > diff --git a/app/src/main/res/layout/activity_subject.xml b/app/src/main/res/layout/activity_subject.xml index 502a6e8b05..c9fb9d93f8 100644 --- a/app/src/main/res/layout/activity_subject.xml +++ b/app/src/main/res/layout/activity_subject.xml @@ -15,7 +15,7 @@ android:id="@+id/subject_list" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/bg_color" > + android:background="@color/background" > + android:background="@color/theme" /> diff --git a/app/src/main/res/layout/activity_suggest.xml b/app/src/main/res/layout/activity_suggest.xml index 9c652f6492..a057f1c915 100644 --- a/app/src/main/res/layout/activity_suggest.xml +++ b/app/src/main/res/layout/activity_suggest.xml @@ -104,7 +104,7 @@ android:foreground="?android:attr/selectableItemBackground" app:cardCornerRadius="0dp" app:cardElevation="2dp" - app:cardBackgroundColor="#1BA4FC" + app:cardBackgroundColor="@color/theme" app:cardUseCompatPadding="true"> diff --git a/app/src/main/res/layout/activity_viewimage.xml b/app/src/main/res/layout/activity_viewimage.xml index e8fbcf66df..be9f1d193a 100644 --- a/app/src/main/res/layout/activity_viewimage.xml +++ b/app/src/main/res/layout/activity_viewimage.xml @@ -15,7 +15,7 @@ android:id="@+id/viewimage_slide_line" android:layout_width="match_parent" android:layout_height="1dp" - android:background="@color/theme_colors" + android:background="@color/theme" android:layout_alignParentBottom="true" android:layout_marginBottom="10dp"/> diff --git a/app/src/main/res/layout/app_update_hint_dialog.xml b/app/src/main/res/layout/app_update_hint_dialog.xml index aed42d4e51..ba103630df 100644 --- a/app/src/main/res/layout/app_update_hint_dialog.xml +++ b/app/src/main/res/layout/app_update_hint_dialog.xml @@ -64,7 +64,7 @@ + android:background="@color/content"/> diff --git a/app/src/main/res/layout/app_updating_dialog.xml b/app/src/main/res/layout/app_updating_dialog.xml index 300ac77005..9d29993839 100644 --- a/app/src/main/res/layout/app_updating_dialog.xml +++ b/app/src/main/res/layout/app_updating_dialog.xml @@ -13,7 +13,7 @@ android:layout_marginBottom="10dp" android:layout_marginTop="10dp" android:text="正在更新" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="16sp" /> @@ -72,7 +72,7 @@ android:background="@drawable/textview_cancel_style" android:gravity="center" android:text="取消" - android:textColor="#FFFFFF" + android:textColor="@android:color/white" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/common_alertdialog.xml b/app/src/main/res/layout/common_alertdialog.xml index 17cc2b94bf..7f30207f4a 100644 --- a/app/src/main/res/layout/common_alertdialog.xml +++ b/app/src/main/res/layout/common_alertdialog.xml @@ -56,7 +56,7 @@ android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" - android:background="@color/theme_colors" + android:background="@color/theme" android:gravity="center" android:text="确定" android:textColor="#fff" diff --git a/app/src/main/res/layout/concern_item.xml b/app/src/main/res/layout/concern_item.xml index 32a5043960..aa28609dde 100644 --- a/app/src/main/res/layout/concern_item.xml +++ b/app/src/main/res/layout/concern_item.xml @@ -22,7 +22,7 @@ android:ellipsize="end" android:gravity="center" android:singleLine="true" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/concern_rv_item.xml b/app/src/main/res/layout/concern_rv_item.xml index eb1cba5537..70c542d439 100644 --- a/app/src/main/res/layout/concern_rv_item.xml +++ b/app/src/main/res/layout/concern_rv_item.xml @@ -39,7 +39,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="少年三国志" - android:textColor="#00b7fa" + android:textColor="@color/theme" android:textSize="16sp" android:layout_marginBottom="5dp"/> @@ -51,7 +51,7 @@ @@ -59,7 +59,7 @@ diff --git a/app/src/main/res/layout/downloadmanager.xml b/app/src/main/res/layout/downloadmanager.xml index 70526a315b..9c857e6287 100644 --- a/app/src/main/res/layout/downloadmanager.xml +++ b/app/src/main/res/layout/downloadmanager.xml @@ -9,16 +9,6 @@ android:layout_height="match_parent" > - + \ No newline at end of file diff --git a/app/src/main/res/layout/downloadmanager_item.xml b/app/src/main/res/layout/downloadmanager_item.xml index 41b638eee7..938ce22562 100644 --- a/app/src/main/res/layout/downloadmanager_item.xml +++ b/app/src/main/res/layout/downloadmanager_item.xml @@ -37,7 +37,7 @@ android:layout_height="wrap_content" android:ellipsize="end" android:singleLine="true" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="15sp" /> @@ -84,7 +84,7 @@ android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:background="@drawable/textview_blue_style" android:gravity="center" android:textSize="14sp" /> @@ -109,7 +109,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="3dp" android:text="删除" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/downloadmanager_item_head.xml b/app/src/main/res/layout/downloadmanager_item_head.xml index 85ce038d21..58eecaa02b 100644 --- a/app/src/main/res/layout/downloadmanager_item_head.xml +++ b/app/src/main/res/layout/downloadmanager_item_head.xml @@ -11,7 +11,7 @@ android:layout_marginLeft="12dp" android:layout_marginTop="8dp" android:text="下载中" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/downloadmanager_rv_item.xml b/app/src/main/res/layout/downloadmanager_rv_item.xml index 730d678772..b4bfd7b828 100644 --- a/app/src/main/res/layout/downloadmanager_rv_item.xml +++ b/app/src/main/res/layout/downloadmanager_rv_item.xml @@ -76,7 +76,7 @@ android:gravity="right" android:singleLine="true" android:text="44.5%" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="10sp" /> @@ -124,7 +124,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/essaydetails_item_top.xml b/app/src/main/res/layout/essaydetails_item_top.xml index b44f07f8d5..1d558f5a9f 100644 --- a/app/src/main/res/layout/essaydetails_item_top.xml +++ b/app/src/main/res/layout/essaydetails_item_top.xml @@ -93,14 +93,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="12dp" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> @@ -113,7 +113,7 @@ android:background="@drawable/textview_red_style" android:gravity="center" android:text="关注" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="12sp" /> diff --git a/app/src/main/res/layout/fm_downloadmanager_item.xml b/app/src/main/res/layout/fm_downloadmanager_item.xml index ea2648931e..30daf32dd3 100644 --- a/app/src/main/res/layout/fm_downloadmanager_item.xml +++ b/app/src/main/res/layout/fm_downloadmanager_item.xml @@ -96,7 +96,7 @@ android:layout_width="60dp" android:layout_height="28.5dp" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:background="@drawable/game_item_btn_download_style" android:gravity="center" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/fm_search.xml b/app/src/main/res/layout/fm_search.xml index 8ec6c61465..bb49e7e356 100644 --- a/app/src/main/res/layout/fm_search.xml +++ b/app/src/main/res/layout/fm_search.xml @@ -31,43 +31,12 @@ android:layout_height="wrap_content" android:layout_margin="10dp" android:text="搜索中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> - + - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_update_item.xml b/app/src/main/res/layout/fm_update_item.xml index e69981a07a..468e503fb8 100644 --- a/app/src/main/res/layout/fm_update_item.xml +++ b/app/src/main/res/layout/fm_update_item.xml @@ -66,7 +66,7 @@ android:background="@drawable/game_item_btn_download_style" android:gravity="center" android:text="更新" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/fragment_news.xml b/app/src/main/res/layout/fragment_news.xml index 5303284f0c..d0b81ea636 100644 --- a/app/src/main/res/layout/fragment_news.xml +++ b/app/src/main/res/layout/fragment_news.xml @@ -9,7 +9,7 @@ + android:background="@android:color/white" > + android:textColor="@color/theme" /> + android:textColor="@color/title" /> + android:textColor="@color/title" /> + android:textColor="@color/title" /> + android:background="@color/theme" /> + android:background="@color/theme" /> + android:background="@color/background"> + android:background="@color/theme" /> @@ -36,25 +36,13 @@ android:layout_height="wrap_content" android:gravity="center" android:text="我的游戏" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:paddingLeft="16dp" android:textSize="12sp" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news4.xml b/app/src/main/res/layout/fragment_news4.xml index 8478f21e0a..1435cbefcf 100644 --- a/app/src/main/res/layout/fragment_news4.xml +++ b/app/src/main/res/layout/fragment_news4.xml @@ -16,7 +16,7 @@ android:id="@+id/news4_rv" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/bg_color"> + android:background="@color/background"> @@ -25,21 +25,11 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_centerInParent="true" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_original.xml b/app/src/main/res/layout/fragment_original.xml index 96858c284a..ede35af083 100644 --- a/app/src/main/res/layout/fragment_original.xml +++ b/app/src/main/res/layout/fragment_original.xml @@ -17,7 +17,7 @@ android:id="@+id/original_list" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/bg_color"> + android:background="@color/background"> @@ -26,7 +26,7 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_centerInParent="true" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> diff --git a/app/src/main/res/layout/game_download_dialog.xml b/app/src/main/res/layout/game_download_dialog.xml index 8e313dfbe4..ce868f4e3a 100644 --- a/app/src/main/res/layout/game_download_dialog.xml +++ b/app/src/main/res/layout/game_download_dialog.xml @@ -9,7 +9,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:background="#ffffff" + android:background="@android:color/white" android:orientation="vertical" > + android:background="@color/theme" /> + android:textColor="@android:color/white" /> \ No newline at end of file diff --git a/app/src/main/res/layout/game_news_type_list_item.xml b/app/src/main/res/layout/game_news_type_list_item.xml index bcc767d36b..3b142d6dbc 100644 --- a/app/src/main/res/layout/game_news_type_list_item.xml +++ b/app/src/main/res/layout/game_news_type_list_item.xml @@ -12,7 +12,7 @@ android:layout_height="match_parent" android:gravity="center" android:textSize="16sp" - android:textColor="#FFFFFF" + android:textColor="@android:color/white" android:background="@drawable/game_item_btn_download_up"/> \ No newline at end of file diff --git a/app/src/main/res/layout/game_normal_item.xml b/app/src/main/res/layout/game_normal_item.xml index 774ff6b3f5..85ea402a62 100644 --- a/app/src/main/res/layout/game_normal_item.xml +++ b/app/src/main/res/layout/game_normal_item.xml @@ -2,8 +2,8 @@ + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp"> @@ -131,7 +131,7 @@ android:background="@drawable/game_item_btn_download_style" android:gravity="center" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/game_test_item.xml b/app/src/main/res/layout/game_test_item.xml index cf775fdd63..96f8dc6c92 100644 --- a/app/src/main/res/layout/game_test_item.xml +++ b/app/src/main/res/layout/game_test_item.xml @@ -13,7 +13,7 @@ android:text="1" android:gravity="center" android:layout_centerVertical="true" - android:textColor="#333333" + android:textColor="@color/title" android:layout_marginRight="4dp" android:maxLength="3" android:textSize="14sp" @@ -94,7 +94,7 @@ android:gravity="right" android:singleLine="true" android:text="44.5%" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="10sp" /> @@ -132,7 +132,7 @@ android:paddingRight="4dp" android:paddingTop="2dp" android:text="null" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="12sp" /> @@ -159,7 +159,7 @@ android:background="@drawable/game_item_btn_download_style" android:gravity="center" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/gamedetails.xml b/app/src/main/res/layout/gamedetails.xml index 486729aaf1..1f744809fc 100644 --- a/app/src/main/res/layout/gamedetails.xml +++ b/app/src/main/res/layout/gamedetails.xml @@ -28,7 +28,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="加载中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/gamedetails_attention_dialog.xml b/app/src/main/res/layout/gamedetails_attention_dialog.xml index 6fc78ced40..fef8284a4e 100644 --- a/app/src/main/res/layout/gamedetails_attention_dialog.xml +++ b/app/src/main/res/layout/gamedetails_attention_dialog.xml @@ -13,7 +13,7 @@ android:layout_marginLeft="15dp" android:layout_marginTop="8dp" android:text="关注成功" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="16sp" /> @@ -83,7 +83,7 @@ android:paddingRight="14dp" android:paddingTop="3dp" android:text="确定" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/gamedetails_item_intro.xml b/app/src/main/res/layout/gamedetails_item_intro.xml index b003c6e12d..74ddaf3b5b 100644 --- a/app/src/main/res/layout/gamedetails_item_intro.xml +++ b/app/src/main/res/layout/gamedetails_item_intro.xml @@ -2,7 +2,7 @@ + android:background="@android:color/white" > + android:background="@color/theme" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetails_item_loading.xml b/app/src/main/res/layout/gamedetails_item_loading.xml index a09af5e8c4..8f75ec8c7c 100644 --- a/app/src/main/res/layout/gamedetails_item_loading.xml +++ b/app/src/main/res/layout/gamedetails_item_loading.xml @@ -18,7 +18,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="加载中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetails_item_news_item.xml b/app/src/main/res/layout/gamedetails_item_news_item.xml index 20f7852a77..de3cd0077a 100644 --- a/app/src/main/res/layout/gamedetails_item_news_item.xml +++ b/app/src/main/res/layout/gamedetails_item_news_item.xml @@ -7,7 +7,7 @@ + android:background="@color/background" /> diff --git a/app/src/main/res/layout/gamedetails_item_newservice.xml b/app/src/main/res/layout/gamedetails_item_newservice.xml index 41a8a8b1c6..34781865eb 100644 --- a/app/src/main/res/layout/gamedetails_item_newservice.xml +++ b/app/src/main/res/layout/gamedetails_item_newservice.xml @@ -2,7 +2,7 @@ + android:background="@android:color/white" > + android:background="@color/theme" /> + android:background="@android:color/white" > + android:background="@color/background" /> + android:background="@color/background" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetails_item_screenshot.xml b/app/src/main/res/layout/gamedetails_item_screenshot.xml index 32febb3f65..8a221c8d6d 100644 --- a/app/src/main/res/layout/gamedetails_item_screenshot.xml +++ b/app/src/main/res/layout/gamedetails_item_screenshot.xml @@ -2,14 +2,14 @@ + android:background="@android:color/white" > + android:background="@color/background" /> + android:background="@color/background" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetails_newservice_item.xml b/app/src/main/res/layout/gamedetails_newservice_item.xml index a6a9908702..c65c459282 100644 --- a/app/src/main/res/layout/gamedetails_newservice_item.xml +++ b/app/src/main/res/layout/gamedetails_newservice_item.xml @@ -17,7 +17,7 @@ android:paddingBottom="3dp" android:background="@drawable/border_gray_bg" android:gravity="center" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="12sp" /> diff --git a/app/src/main/res/layout/gamedetails_rv_item_top.xml b/app/src/main/res/layout/gamedetails_rv_item_top.xml index 1d4d153c00..bfa26362ae 100644 --- a/app/src/main/res/layout/gamedetails_rv_item_top.xml +++ b/app/src/main/res/layout/gamedetails_rv_item_top.xml @@ -64,7 +64,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="关注" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gameinformaiton_item_search.xml b/app/src/main/res/layout/gameinformaiton_item_search.xml index 26defc4d25..d47aa5e795 100644 --- a/app/src/main/res/layout/gameinformaiton_item_search.xml +++ b/app/src/main/res/layout/gameinformaiton_item_search.xml @@ -2,7 +2,7 @@ @@ -92,7 +92,7 @@ android:layout_weight="1" android:ellipsize="end" android:singleLine="true" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> + android:background="@color/background" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gameinformation.xml b/app/src/main/res/layout/gameinformation.xml index 3aa49aace0..efdd5f7bbb 100644 --- a/app/src/main/res/layout/gameinformation.xml +++ b/app/src/main/res/layout/gameinformation.xml @@ -28,7 +28,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="加载中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/gameinformation_item.xml b/app/src/main/res/layout/gameinformation_item.xml index 1392af869a..3e9260159a 100644 --- a/app/src/main/res/layout/gameinformation_item.xml +++ b/app/src/main/res/layout/gameinformation_item.xml @@ -16,7 +16,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="12sp" /> + android:background="@color/background" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gameinformation_select_item.xml b/app/src/main/res/layout/gameinformation_select_item.xml index d5ddda39ff..697f805181 100644 --- a/app/src/main/res/layout/gameinformation_select_item.xml +++ b/app/src/main/res/layout/gameinformation_select_item.xml @@ -11,7 +11,7 @@ android:layout_centerInParent="true" android:background="@drawable/textview_search_style" android:gravity="center" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gamestrategy.xml b/app/src/main/res/layout/gamestrategy.xml index 90e9b74d91..90f8d44673 100644 --- a/app/src/main/res/layout/gamestrategy.xml +++ b/app/src/main/res/layout/gamestrategy.xml @@ -28,7 +28,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="加载中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/gameupdate.xml b/app/src/main/res/layout/gameupdate.xml index 64d843c36d..78d93790d8 100644 --- a/app/src/main/res/layout/gameupdate.xml +++ b/app/src/main/res/layout/gameupdate.xml @@ -9,17 +9,7 @@ android:layout_height="match_parent" > - + diff --git a/app/src/main/res/layout/gameupdate_item.xml b/app/src/main/res/layout/gameupdate_item.xml index dea0f2780c..cdc16ad441 100644 --- a/app/src/main/res/layout/gameupdate_item.xml +++ b/app/src/main/res/layout/gameupdate_item.xml @@ -28,21 +28,21 @@ android:id="@+id/gu_item_tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="15sp" /> @@ -54,7 +54,7 @@ android:background="@drawable/textview_green_style" android:gravity="center" android:text="更新" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> @@ -65,7 +65,7 @@ android:layout_marginTop="3dp" android:ellipsize="end" android:singleLine="true" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="12sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gameupdate_item_top.xml b/app/src/main/res/layout/gameupdate_item_top.xml index 2acff4de64..f7ebfec90c 100644 --- a/app/src/main/res/layout/gameupdate_item_top.xml +++ b/app/src/main/res/layout/gameupdate_item_top.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/res/layout/home3_fragment.xml b/app/src/main/res/layout/home3_fragment.xml index 64a7934fa2..8291ce4c0d 100644 --- a/app/src/main/res/layout/home3_fragment.xml +++ b/app/src/main/res/layout/home3_fragment.xml @@ -14,7 +14,7 @@ android:id="@+id/me_rl_top" android:layout_width="match_parent" android:layout_height="260dp" - android:background="#FFFFFFFF"> + android:background="@android:color/white"> @@ -81,14 +81,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:background="#FFFFFFFF" + android:background="@android:color/white" android:visibility="gone"> + android:background="@color/theme"/> diff --git a/app/src/main/res/layout/home3_fragment_function.xml b/app/src/main/res/layout/home3_fragment_function.xml index 2a4de61dfe..4e00c85413 100644 --- a/app/src/main/res/layout/home3_fragment_function.xml +++ b/app/src/main/res/layout/home3_fragment_function.xml @@ -2,7 +2,7 @@ + android:background="@color/theme" > @@ -78,7 +78,7 @@ android:background="@drawable/oval_hint_red_bg" android:gravity="center" android:text="2" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="10sp" /> @@ -88,7 +88,7 @@ android:layout_marginBottom="10dp" android:layout_marginTop="3dp" android:text="下载管理" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> @@ -126,7 +126,7 @@ android:background="@drawable/oval_hint_red_bg" android:gravity="center" android:text="2" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="10sp" /> @@ -136,7 +136,7 @@ android:layout_marginBottom="10dp" android:layout_marginTop="3dp" android:text="更新管理" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> @@ -166,7 +166,7 @@ android:layout_marginBottom="10dp" android:layout_marginTop="3dp" android:text="设置" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/home_actionbar.xml b/app/src/main/res/layout/home_actionbar.xml index d422c6d708..e65954a211 100644 --- a/app/src/main/res/layout/home_actionbar.xml +++ b/app/src/main/res/layout/home_actionbar.xml @@ -3,7 +3,7 @@ android:id="@+id/home_actionbar" android:layout_width="match_parent" android:layout_height="48dp" - android:background="@color/theme_colors" + android:background="@color/theme" android:baselineAligned="false" android:gravity="center_vertical" android:orientation="horizontal" > @@ -31,7 +31,7 @@ android:layout_marginTop="8dp" android:background="@drawable/oval_hint_red_bg" android:gravity="center" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="8sp" /> diff --git a/app/src/main/res/layout/home_consolegame_item.xml b/app/src/main/res/layout/home_consolegame_item.xml index cd62ef8995..e71e314a23 100644 --- a/app/src/main/res/layout/home_consolegame_item.xml +++ b/app/src/main/res/layout/home_consolegame_item.xml @@ -28,7 +28,7 @@ android:gravity="left" android:maxLength="3" android:text="1" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="14sp" android:visibility="gone" android:clipChildren="false" /> @@ -105,7 +105,7 @@ android:gravity="right" android:singleLine="true" android:text="44.5%" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="10sp" /> + android:orientation="horizontal"> + + diff --git a/app/src/main/res/layout/home_game_head_item.xml b/app/src/main/res/layout/home_game_head_item.xml index 825732cf78..690f18ba67 100644 --- a/app/src/main/res/layout/home_game_head_item.xml +++ b/app/src/main/res/layout/home_game_head_item.xml @@ -2,13 +2,14 @@ @@ -16,11 +17,10 @@ android:id="@+id/head_title" android:layout_width="wrap_content" android:layout_height="match_parent" - android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/head_thumb" android:gravity="fill_vertical|center" android:text="新测卡牌" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" /> + \ 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 d717b75b62..0b12efa30c 100644 --- a/app/src/main/res/layout/home_game_normal_item.xml +++ b/app/src/main/res/layout/home_game_normal_item.xml @@ -12,7 +12,7 @@ android:text="1" android:gravity="center" android:layout_centerVertical="true" - android:textColor="#333333" + android:textColor="@color/title" android:layout_marginRight="4dp" android:maxLength="3" android:textSize="14sp" @@ -89,7 +89,7 @@ android:gravity="right" android:singleLine="true" android:text="44.5%" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="10sp" /> @@ -154,7 +154,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/home_game_test_item.xml b/app/src/main/res/layout/home_game_test_item.xml index 5a0967f721..ea5f7ee691 100644 --- a/app/src/main/res/layout/home_game_test_item.xml +++ b/app/src/main/res/layout/home_game_test_item.xml @@ -14,7 +14,7 @@ android:gravity="center" android:maxLength="3" android:text="1" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="14sp" android:visibility="gone" /> @@ -57,7 +57,7 @@ android:ellipsize="end" android:singleLine="true" android:text="九游版 1.2MB/s(剩3分30秒)" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="12sp" /> @@ -97,7 +97,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> @@ -141,7 +141,7 @@ android:paddingRight="4dp" android:paddingTop="2dp" android:text="null" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="12sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/home_list_item_gamenormal_type.xml b/app/src/main/res/layout/home_list_item_gamenormal_type.xml index 1721bb48e5..c1118ebfd5 100644 --- a/app/src/main/res/layout/home_list_item_gamenormal_type.xml +++ b/app/src/main/res/layout/home_list_item_gamenormal_type.xml @@ -20,7 +20,7 @@ android:layout_toRightOf="@id/home1_game_thumb" android:ellipsize="end" android:singleLine="true" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="15sp" /> @@ -97,7 +97,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="下载" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> @@ -109,7 +109,7 @@ android:layout_marginTop="5dp" android:ellipsize="end" android:maxLines="2" - android:textColor="#666666" + android:textColor="@color/content" android:textSize="13sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/home_list_item_newsimage_type.xml b/app/src/main/res/layout/home_list_item_newsimage_type.xml index 61ff41568e..49d04b1d1b 100644 --- a/app/src/main/res/layout/home_list_item_newsimage_type.xml +++ b/app/src/main/res/layout/home_list_item_newsimage_type.xml @@ -25,7 +25,7 @@ android:ellipsize="end" android:gravity="left" android:maxLines="1" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="16sp" android:textStyle="bold" /> @@ -36,7 +36,7 @@ android:ellipsize="end" android:gravity="right" android:maxLines="1" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="15sp" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/home_list_item_newsnormal_type.xml b/app/src/main/res/layout/home_list_item_newsnormal_type.xml index b1637045d3..119a8c3e70 100644 --- a/app/src/main/res/layout/home_list_item_newsnormal_type.xml +++ b/app/src/main/res/layout/home_list_item_newsnormal_type.xml @@ -15,7 +15,7 @@ android:gravity="center" android:paddingLeft="1dp" android:paddingRight="1dp" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="12sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/mygame_item.xml b/app/src/main/res/layout/mygame_item.xml index 28b2a52d1b..2180287eee 100644 --- a/app/src/main/res/layout/mygame_item.xml +++ b/app/src/main/res/layout/mygame_item.xml @@ -38,7 +38,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="15sp" /> @@ -58,14 +58,14 @@ android:background="@drawable/textview_orange_style" android:gravity="center" android:text="打开" - android:textColor="#ffffff" /> + android:textColor="@android:color/white" /> @@ -33,7 +33,7 @@ android:layout_below="@id/platform_item_tv_name" android:gravity="center" android:text="插件化" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/news_list_item_category.xml b/app/src/main/res/layout/news_list_item_category.xml index 6cb430b246..28c0707667 100644 --- a/app/src/main/res/layout/news_list_item_category.xml +++ b/app/src/main/res/layout/news_list_item_category.xml @@ -11,7 +11,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="我的游戏" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:paddingLeft="16dp" android:textSize="12sp" /> diff --git a/app/src/main/res/layout/news_list_item_gamenormal_type.xml b/app/src/main/res/layout/news_list_item_gamenormal_type.xml index b00095e133..a0daf58637 100644 --- a/app/src/main/res/layout/news_list_item_gamenormal_type.xml +++ b/app/src/main/res/layout/news_list_item_gamenormal_type.xml @@ -19,7 +19,7 @@ android:layout_toRightOf="@+id/news_game_thumb" android:ellipsize="end" android:singleLine="true" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="15sp" /> - + diff --git a/app/src/main/res/layout/plugin1_autoscrollviewpager_viewholder.xml b/app/src/main/res/layout/plugin1_autoscrollviewpager_viewholder.xml index a708c4d4dd..4756b6ba1b 100644 --- a/app/src/main/res/layout/plugin1_autoscrollviewpager_viewholder.xml +++ b/app/src/main/res/layout/plugin1_autoscrollviewpager_viewholder.xml @@ -28,7 +28,7 @@ android:layout_height="match_parent" android:gravity="center" android:text="加载失败,点击重试" - android:textColor="#333333" + android:textColor="@color/title" android:textSize="14sp" android:visibility="gone" /> diff --git a/app/src/main/res/layout/plugin1_fragment.xml b/app/src/main/res/layout/plugin1_fragment.xml index f777de33ba..63892c93bb 100644 --- a/app/src/main/res/layout/plugin1_fragment.xml +++ b/app/src/main/res/layout/plugin1_fragment.xml @@ -12,7 +12,7 @@ android:id="@+id/game_list" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/bg_color"> + android:background="@color/background"> @@ -21,7 +21,7 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_centerInParent="true" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> diff --git a/app/src/main/res/layout/plugin_container_fragments.xml b/app/src/main/res/layout/plugin_container_fragments.xml index 73940a893c..9e51688c1b 100644 --- a/app/src/main/res/layout/plugin_container_fragments.xml +++ b/app/src/main/res/layout/plugin_container_fragments.xml @@ -9,7 +9,7 @@ + android:background="@android:color/white" > + android:textColor="@color/theme" /> + android:textColor="@color/title" /> + android:textColor="@color/title" /> + android:background="@color/theme" /> + android:background="@color/theme" /> \ No newline at end of file diff --git a/app/src/main/res/layout/refresh_footerview.xml b/app/src/main/res/layout/refresh_footerview.xml index 97d1fb8f60..2313cd6300 100644 --- a/app/src/main/res/layout/refresh_footerview.xml +++ b/app/src/main/res/layout/refresh_footerview.xml @@ -18,7 +18,7 @@ android:layout_height="wrap_content" android:layout_margin="10dp" android:text="加载中..." - android:textColor="#666666" + android:textColor="@color/content" android:textSize="14sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_actionbar.xml b/app/src/main/res/layout/reuse_actionbar.xml index 48dfcdffb2..fa260578a8 100644 --- a/app/src/main/res/layout/reuse_actionbar.xml +++ b/app/src/main/res/layout/reuse_actionbar.xml @@ -3,7 +3,7 @@ android:id="@+id/reuse_actionbar" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/theme_colors" > + android:background="@color/theme" > \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_no_connection.xml b/app/src/main/res/layout/reuse_no_connection.xml index 29d561d5eb..0fc3bf4cb9 100644 --- a/app/src/main/res/layout/reuse_no_connection.xml +++ b/app/src/main/res/layout/reuse_no_connection.xml @@ -3,22 +3,30 @@ android:id="@+id/reuse_no_connection" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/bg_color" - android:gravity="center" android:orientation="vertical" + android:gravity="center" android:visibility="gone" > + android:src="@drawable/reuse_network_error" /> + android:text="噢,网络好似开小差了~" + android:textColor="#c7c7c7" + android:textSize="15sp" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_nodata_skip.xml b/app/src/main/res/layout/reuse_nodata_skip.xml new file mode 100644 index 0000000000..08859efa67 --- /dev/null +++ b/app/src/main/res/layout/reuse_nodata_skip.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_none_data.xml b/app/src/main/res/layout/reuse_none_data.xml new file mode 100644 index 0000000000..8373e4c291 --- /dev/null +++ b/app/src/main/res/layout/reuse_none_data.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_none_date.xml b/app/src/main/res/layout/reuse_none_date.xml deleted file mode 100644 index 43f7078a68..0000000000 --- a/app/src/main/res/layout/reuse_none_date.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/search_actionbar.xml b/app/src/main/res/layout/search_actionbar.xml index 2ba9e32029..52fac246ee 100644 --- a/app/src/main/res/layout/search_actionbar.xml +++ b/app/src/main/res/layout/search_actionbar.xml @@ -2,7 +2,7 @@ @@ -62,7 +62,7 @@ android:layout_weight="1.5" android:gravity="center" android:text="搜索" - android:textColor="#FFFFFF" + android:textColor="@android:color/white" android:textSize="16sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/search_history_delete_dialog.xml b/app/src/main/res/layout/search_history_delete_dialog.xml index 50bb663c15..9a49f85b00 100644 --- a/app/src/main/res/layout/search_history_delete_dialog.xml +++ b/app/src/main/res/layout/search_history_delete_dialog.xml @@ -13,7 +13,7 @@ android:layout_marginLeft="20dp" android:layout_marginTop="8dp" android:text="清空" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="16sp" /> @@ -73,7 +73,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="确定" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/set_wait_dialog.xml b/app/src/main/res/layout/set_wait_dialog.xml index caf34d030b..7b5efe0af4 100644 --- a/app/src/main/res/layout/set_wait_dialog.xml +++ b/app/src/main/res/layout/set_wait_dialog.xml @@ -11,7 +11,7 @@ android:layout_marginLeft="70dp" android:layout_marginRight="70dp" android:layout_marginTop="15dp" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> \ No newline at end of file diff --git a/app/src/main/res/layout/setting_disclaimer_dialog.xml b/app/src/main/res/layout/setting_disclaimer_dialog.xml index dc79d4e5ed..05cbf74d5e 100644 --- a/app/src/main/res/layout/setting_disclaimer_dialog.xml +++ b/app/src/main/res/layout/setting_disclaimer_dialog.xml @@ -12,7 +12,7 @@ android:layout_marginBottom="3dp" android:layout_marginLeft="20dp" android:layout_marginTop="8dp" - android:textColor="@color/theme_colors" + android:textColor="@color/theme" android:textSize="16sp" /> @@ -51,7 +51,7 @@ android:background="@drawable/textview_blue_style" android:gravity="center" android:text="确定" - android:textColor="#ffffff" + android:textColor="@android:color/white" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/viewimage_item.xml b/app/src/main/res/layout/viewimage_item.xml index 56ff42b54d..6d0eecb805 100644 --- a/app/src/main/res/layout/viewimage_item.xml +++ b/app/src/main/res/layout/viewimage_item.xml @@ -21,6 +21,6 @@ android:layout_height="40dp" android:layout_centerInParent="true" android:visibility="gone" - android:background="@color/theme_colors" /> + android:background="@color/theme" /> \ No newline at end of file diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816444..0000000000 --- a/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 5293b0003c..ab21eb9fe4 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,18 +1,32 @@ - #6633B5E5 - #1BA4FC - #F5F5F5 - #edf2f4 - #FFFFFF - #E7E7E7 - #ffffff - #c9c9c9 - #666666 - #DCDCDC - #333333 - #666666 + + #00B7FA + + #3A3A3A + + #9A9A9A + + #B3B3B3 + + #EDF2F4 + + #EDEDED + + #E7E7E7 + + + #00B7FA + #06D0A8 + #FFB13C + #C7C7C7 + #A7A8B2 + + + #05C400 + #FFB13C + #FF6A28 #fda34d @@ -24,6 +38,5 @@ #fda34d #2ec991 - - #1BA4FC + \ No newline at end of file