diff --git a/README.md b/README.md index 79cd0aaa7e..b96a84d1c8 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,53 @@ # 光环助手Android客户端 -### Sourceset/debug/release +### sourcesets/debug/release + * https://developer.android.com/studio/build/build-variants.html#sourcesets -### 多渠道打包配置 +### APK打包配置 + * 使用[ApkChannelPackage](https://github.com/ltlovezh/ApkChannelPackage)的方案 -* 正式打包命令:请使用./gradlew channelPubRelease打包渠道包 +* 打包命令,视情况使用: + + > 打包Tinker基准包:`./scripts/tinker_release_base.sh` + + > 以Tinker基准包打渠道包:`./scripts/tinker_release_channel.sh` + + > 以Tinker基准包打补丁包:`./scripts/tinker_release_patch.sh` ### 混淆配置 + * 配置文件:Android默认配置+proguard-rules.txt等 -* 参考libraries下每个项目独立的配置文件``proguard-project.txt`` +* 参考libraries下每个项目独立的配置文件`proguard-project.txt` ### apk大小优化 + * 限制resConfig资源集 * 开启ShrinkResources * 开启混淆,使用minifyEnabled(仅在release开启) * pngquant对png压缩、png/jpg->webp(未尝试) ### 第三方appkey等配置 -* 修改``gradle.properties``文件将各种key填入其中,实现统一管理 + +* 修改`gradle.properties`文件将各种key填入其中,实现统一管理 * 通过gradle文件内的resValue/buildConfigField/manifestPlaceHolder方式实现编译期间修改,具体情况请参考``./build.gradle``和``./app/build.gradle``配置 ### 拉取代码步骤 + 1. 拉取主项目代码: `git clone -b dev git@gitlab.ghzhushou.com:halo/assistant-android.git` 2. 初始化公用类库: `bash ./scripts/init_submodules.sh` ### submodule管理方式(只拉取master) + * 提交代码,需要cd到submodule文件夹去做修改 - - ### TODO + * GSON 序列化用统一的一个, GsonUtil fromJson * CleanApkAdapter 转化字符串size工具函数 比如SpeedUtils * getString 解决 字符串hardcode问题 * Adapter 里面clicklistener 用接口传参将点击操作委托给controller * Adapter ViewHolder的功能,部分重写到ViewHolder类本身 -* activity 统一入口未完成(外部入口相关) +* activity 统一入口未完成(外部入口相关),去除多余activity使用,统一toolbar +* release / debug compile不同的类库,不需要再做什么开关 diff --git a/app/build.gradle b/app/build.gradle index d94d9000f5..a30219faf4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply from: 'tinker-support.gradle' android { compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } dexOptions { @@ -178,7 +178,7 @@ dependencies { implementation "com.android.support:appcompat-v7:${androidSupport}" implementation "com.android.support:support-annotations:${androidSupport}" implementation "com.android.support:percent:${androidSupport}" - + implementation "com.android.support.constraint:constraint-layout:${constraintLayout}" implementation "com.kyleduo.switchbutton:library:${switchButton}" implementation "com.readystatesoftware.systembartint:systembartint:${systemBarTint}" @@ -243,12 +243,11 @@ dependencies { implementation project(':libraries:WechatShare') implementation project(':libraries:iosched') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "com.android.support.constraint:constraint-layout:${constraintLayout}" } File propFile = file('sign.properties') if (propFile.exists()) { - def Properties props = new Properties() + Properties props = new Properties() props.load(new FileInputStream(propFile)) if (props.containsKey('keyAlias') && props.containsKey('keyPassword') && diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/debug/java/com/gh/gamecenter/DataUtils.java similarity index 90% rename from app/src/main/java/com/gh/common/util/DataUtils.java rename to app/src/debug/java/com/gh/gamecenter/DataUtils.java index 1871551d11..0452e002fe 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/debug/java/com/gh/gamecenter/DataUtils.java @@ -1,12 +1,13 @@ -package com.gh.common.util; +package com.gh.gamecenter; import android.app.Activity; import android.app.Application; import android.content.Context; +import android.os.Debug; import com.gh.common.constant.Config; -import com.halo.assistant.TinkerApp; -import com.tencent.bugly.beta.tinker.TinkerManager; +import com.gh.common.util.PackageUtils; +import com.tencent.bugly.Bugly; import com.tencent.bugly.crashreport.CrashReport; import com.tencent.mta.track.StatisticsDataAPI; import com.tencent.stat.MtaSDkException; @@ -14,7 +15,6 @@ import com.tencent.stat.StatConfig; import com.tencent.stat.StatCrashReporter; import com.tencent.stat.StatReportStrategy; import com.tencent.stat.StatService; -import com.tencent.tinker.lib.tinker.Tinker; import com.tendcloud.tenddata.TCAgent; import java.util.HashMap; @@ -27,18 +27,22 @@ import java.util.Properties; */ public class DataUtils { + public static final boolean DEBUG = false; + /** * 初始化各种统计工具,仅在release build(非debug)模式启用统计 * * @param context - * @param debug 是否debug模式 * @param channel */ - public static void init(final Application context, final boolean debug, String channel) { + public static void init(final Application context, String channel) { + + // 神烦这些SDK上报,debug就不开了 + if (!DEBUG) return; //TalkingData try { - TCAgent.LOG_ON = debug; + TCAgent.LOG_ON = DEBUG; TCAgent.init(context, Config.TALKINGDATA_APPID, channel); /** * @@ -61,10 +65,10 @@ public class DataUtils { crashReporter.setJavaCrashHandlerStatus(false); // crashReporter.setEnableInstantReporting(true); - StatConfig.setDebugEnable(debug); + StatConfig.setDebugEnable(DEBUG); // 设置数据上报策略 - if (debug) { + if (DEBUG) { StatConfig.setStatSendStrategy(StatReportStrategy.INSTANT); } else { StatConfig.setStatSendStrategy(StatReportStrategy.PERIOD); @@ -92,7 +96,8 @@ public class DataUtils { // init bugly try { - CrashReport.setIsDevelopmentDevice(context, debug); + + CrashReport.setIsDevelopmentDevice(context, "GH_TEST".equals(channel)); CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context); strategy.setEnableANRCrashMonitor(false); @@ -100,7 +105,7 @@ public class DataUtils { strategy.setAppChannel(channel); strategy.setAppVersion(PackageUtils.getPatchVersionName()); - CrashReport.initCrashReport(context, Config.BUGLY_APPID, debug, strategy); + CrashReport.initCrashReport(context, Config.BUGLY_APPID, DEBUG, strategy); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index 8a136f67ea..cf1380b158 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -5,19 +5,17 @@ import android.support.annotation.NonNull; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; -import android.widget.Toast; -import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.RunningUtils; import com.gh.common.util.ShareUtils; import com.gh.common.util.StringUtils; +import com.gh.gamecenter.DataUtils; import com.gh.gamecenter.LoginActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBShowDialog; import com.lightgame.download.FileUtils; -import com.lightgame.utils.AppManager; import com.lightgame.utils.Utils; import org.greenrobot.eventbus.EventBus; @@ -35,7 +33,7 @@ import pub.devrel.easypermissions.EasyPermissions; import static com.gh.common.util.EntranceUtils.KEY_DATA; import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; -public abstract class BaseActivity extends BaseAppCompatToolBarActivity implements EasyPermissions.PermissionCallbacks{ +public abstract class BaseActivity extends BaseToolBarActivity implements EasyPermissions.PermissionCallbacks { protected String mEntrance; private boolean mIsPause; @@ -43,39 +41,24 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity implemen @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - init(mContentView); - AppManager.getInstance().addActivity(this); EventBus.getDefault().register(this); + ButterKnife.bind(this); mEntrance = getIntent().getStringExtra(KEY_ENTRANCE); if (getIntent().getBundleExtra(KEY_DATA) != null) { mEntrance = getIntent().getBundleExtra(KEY_DATA).getString(KEY_ENTRANCE); } } + @Override + protected void onDestroy() { + EventBus.getDefault().unregister(this); + super.onDestroy(); + } + @Override protected boolean onNavigationIconClicked() { - return false; - } - - private void init(View contentView) { - setContentView(contentView); - - ButterKnife.bind(this); - - View back = findViewById(R.id.actionbar_rl_back); - if (back != null) - back.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - protected void initTitle(String title) { - TextView actionbar_tv_title = (TextView) findViewById(R.id.actionbar_tv_title); - actionbar_tv_title.setText(title); -// setNavigationTitle(title); + onBackPressed(); + return true; } public void toast(String msg) { @@ -83,16 +66,17 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity implemen } public void toast(int msg) { - Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); + toast(getString(msg)); } //如果是游戏分享,newsTitle默认为空 - public void showShare(String url, String gameName, String icon, String newsTitle, ArrayList tag, boolean isToolsBox) { + public void showShare(String url, String gameName, String icon, String newsTitle, ArrayList tagList, boolean isToolsBox) { //判断是否是官方版 boolean isPlugin = false; - if (tag != null) { - for (String s : tag) { +// tagList.contains("官方版")??? + if (tagList != null) { + for (String s : tagList) { if (!"官方版".equals(s)) { isPlugin = true; } @@ -108,10 +92,9 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity implemen } } - @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(final EBShowDialog showDialog) { - //TODO 改为缓存到UI可见时才调用,参考beier-assist + //TODO 改为缓存到UI可见时才调用,参考beier-assist Lifecycle组件 if (!mIsPause && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { if ("hijack".equals(showDialog.getType())) { DialogUtils.showQqSessionDialog(this, "2586716223");// 建议用户联系客服 @@ -120,7 +103,7 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity implemen @Override public void onConfirm() { if (FileUtils.isEmptyFile(showDialog.getPath())) { - Utils.toast(BaseActivity.this, getString(R.string.install_failure_hint)); + toast(getString(R.string.install_failure_hint)); } else { startActivity(PackageUtils.getUninstallIntent(BaseActivity.this, showDialog.getPath())); } @@ -150,26 +133,16 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity implemen } } - @Override - protected void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - AppManager.getInstance().finishActivity(this); - } - @Override protected void onPause() { super.onPause(); -// DataUtils.onPause(this); mIsPause = true; } @Override protected void onResume() { super.onResume(); -// DataUtils.onResume(this); mIsPause = false; -// DownloadManager.getInstance(this).initGameMap(); } @Override diff --git a/app/src/main/java/com/gh/base/BaseAppCompatToolBarActivity.java b/app/src/main/java/com/gh/base/BaseToolBarActivity.java similarity index 52% rename from app/src/main/java/com/gh/base/BaseAppCompatToolBarActivity.java rename to app/src/main/java/com/gh/base/BaseToolBarActivity.java index d63f2db6e6..0f024531c5 100644 --- a/app/src/main/java/com/gh/base/BaseAppCompatToolBarActivity.java +++ b/app/src/main/java/com/gh/base/BaseToolBarActivity.java @@ -1,9 +1,10 @@ package com.gh.base; import android.os.Bundle; +import android.support.annotation.StringRes; import android.support.v7.widget.Toolbar; import android.view.MenuItem; -import android.view.View; +import android.widget.TextView; import com.gh.gamecenter.R; import com.lightgame.BaseAppCompatActivity; @@ -12,10 +13,10 @@ import com.lightgame.BaseAppCompatActivity; * Created by csheng on 15-10-12. */ -public abstract class BaseAppCompatToolBarActivity extends BaseAppCompatActivity { +public abstract class BaseToolBarActivity extends BaseAppCompatActivity { private Toolbar mToolbar; - + private TextView mTitleTv; @Override protected void onCreate(Bundle savedInstanceState) { @@ -23,11 +24,26 @@ public abstract class BaseAppCompatToolBarActivity extends BaseAppCompatActivity initToolbar(); } + public void setNavigationTitle(String title) { + if (mTitleTv != null) { + mTitleTv.setText(title); + } + } + + public void setNavigationTitle(@StringRes int res) { + if (mTitleTv != null) { + mTitleTv.setText(getString(res)); + } + } + private void initToolbar() { - mToolbar = (Toolbar) findViewById(R.id.toolbar_navigation); + mToolbar = findViewById(R.id.toolbar_navigation); if (mToolbar != null) { setSupportActionBar(mToolbar); - mToolbar.addView(View.inflate(this, R.layout.reuse_actionbar, null)); + mToolbar.findViewById(R.id.actionbar_rl_back).setOnClickListener(v -> onBackPressed()); + mTitleTv = findViewById(R.id.actionbar_tv_title); + getSupportActionBar().setDisplayHomeAsUpEnabled(false); + getSupportActionBar().setDisplayShowHomeEnabled(false); getSupportActionBar().setHomeButtonEnabled(false); } } diff --git a/app/src/main/java/com/gh/base/GHActivityLifecycleCallbacksImpl.java b/app/src/main/java/com/gh/base/GHActivityLifecycleCallbacksImpl.java index dbbcd1ffc1..0c8f4a2ae8 100644 --- a/app/src/main/java/com/gh/base/GHActivityLifecycleCallbacksImpl.java +++ b/app/src/main/java/com/gh/base/GHActivityLifecycleCallbacksImpl.java @@ -4,8 +4,13 @@ import android.app.Activity; import android.app.Application.ActivityLifecycleCallbacks; import android.os.Bundle; -import com.gh.common.util.DataUtils; import com.gh.download.DownloadManager; +import com.gh.gamecenter.DataUtils; +import com.lightgame.config.CommonDebug; +import com.lightgame.utils.AppManager; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; /** * 1、写点针对生命周期的统计代码 @@ -18,10 +23,10 @@ import com.gh.download.DownloadManager; */ public class GHActivityLifecycleCallbacksImpl implements ActivityLifecycleCallbacks { - @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { + AppManager.getInstance().addActivity(activity); } @Override @@ -33,6 +38,7 @@ public class GHActivityLifecycleCallbacksImpl implements ActivityLifecycleCallba public void onActivityResumed(Activity activity) { DataUtils.onResume(activity); + //FIXME 这里应该只是部分Activity需要 try { // 初始化gameMap DownloadManager.getInstance(activity).initGameMap(); @@ -58,7 +64,7 @@ public class GHActivityLifecycleCallbacksImpl implements ActivityLifecycleCallba @Override public void onActivityDestroyed(Activity activity) { - + AppManager.getInstance().finishActivity(activity); } } diff --git a/app/src/main/java/com/gh/base/SuggestionType.java b/app/src/main/java/com/gh/base/SuggestionType.java deleted file mode 100644 index 73e3da0151..0000000000 --- a/app/src/main/java/com/gh/base/SuggestionType.java +++ /dev/null @@ -1,48 +0,0 @@ -//package com.gh.base; -// -//import java.io.Serializable; -// -//public enum SuggestionType implements Serializable { -// -// FEEDBACK("普通反馈", 1), -// SUGGESTION("功能建议", 2), -// CRASH("发生闪退", 3), -// GAME("游戏问题", 4), -// COLLECT("游戏收录", 5), -// POST("文章投稿", 6); -// -// private String mName; -// private int mIndex; -// -// private SuggestionType(String name, int index) { -// mName = name; -// mIndex = index; -// } -// -// public static String getName(int index) { -// for (SuggestionType c : SuggestionType.values()) { -// if (c.mIndex == index) { -// return c.mName; -// } -// } -// return ""; -// } -// -// public static int getIndex(String name) { -// for (SuggestionType c : SuggestionType.values()) { -// if (c.mName == name) { -// return c.mIndex; -// } -// } -// return -1; -// } -// -// public int getIndex() { -// return mIndex; -// } -// -// public String getName() { -// return mName; -// } -// -//} diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java index b50f09264c..9bc5a32a6f 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java @@ -3,11 +3,14 @@ package com.gh.base.fragment; import android.os.Bundle; import android.support.annotation.LayoutRes; import android.support.annotation.Nullable; +import android.support.annotation.StringRes; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.gh.base.BaseActivity; +import com.gh.base.BaseToolBarActivity; import com.gh.base.OnListClickListener; import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.EntranceUtils; @@ -29,9 +32,9 @@ import rx.schedulers.Schedulers; * Fragment 基类 */ public abstract class BaseFragment extends Fragment implements OnRequestCallBackListener, - View.OnClickListener, OnListClickListener{ + View.OnClickListener, OnListClickListener { - private View view; + protected View view; protected boolean isEverPause; @@ -54,6 +57,16 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB handleOnClick(v); } + protected void setNavigationTitle(@StringRes int res) { + setNavigationTitle(getString(res)); + } + + protected void setNavigationTitle(String title) { + if (getActivity() instanceof BaseToolBarActivity) { + ((BaseToolBarActivity) getActivity()).setNavigationTitle(title); + } + } + protected void initView(View view) { } @@ -111,10 +124,22 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB EventBus.getDefault().unregister(this); } + public void toast(@StringRes int res) { + toast(getString(res)); + } + public void toast(String msg) { Utils.toast(getContext(), msg); } + public void toastLong(@StringRes int msg) { + toastLong(getString(msg)); + } + + public void toastLong(String msg) { + RuntimeUtils.getInstance().toastLong(getContext(), msg); + } + public boolean isEverPause() { return isEverPause; } @@ -125,7 +150,7 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB } @Override - public void loadDone(Object obj) { + public void loadDone(T obj) { } @@ -140,7 +165,7 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB } @Override - public void onListClick(View view, int position, T data) { + public void onListClick(View view, int position, LIST data) { } diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment_ViewPager.java b/app/src/main/java/com/gh/base/fragment/BaseFragment_ViewPager.java index 3ab26e243a..1d60e19309 100755 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment_ViewPager.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment_ViewPager.java @@ -35,7 +35,7 @@ import java.util.List; */ public abstract class BaseFragment_ViewPager extends BaseFragment implements DoubleTapTextView.OnDoubleTapListener { - protected static final String ARGS_INDEX = "index"; + public static final String ARGS_INDEX = "index"; protected int mCheckedIndex = 0; protected PagerAdapter mAdapter; protected List mFragmentsList; diff --git a/app/src/main/java/com/gh/common/util/CommentUtils.java b/app/src/main/java/com/gh/common/util/CommentUtils.java index 83eb65c0f8..3aa005614d 100644 --- a/app/src/main/java/com/gh/common/util/CommentUtils.java +++ b/app/src/main/java/com/gh/common/util/CommentUtils.java @@ -138,7 +138,7 @@ public class CommentUtils { break; case "查看对话": - context.startActivity(CommentDetailActivity.getCommentDetailIntent(context, commentEntity.getId())); + context.startActivity(CommentDetailActivity.getIntent(context, commentEntity.getId())); break; } } @@ -151,27 +151,27 @@ public class CommentUtils { } - private static void showReportTypeDialog(final CommentEntity commentEntity, final Context mContext) { + private static void showReportTypeDialog(final CommentEntity commentEntity, final Context context) { final String[] arrReportType = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息", "违法有害信息", "其它"}; - int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; + int widthPixels = context.getResources().getDisplayMetrics().widthPixels; - final Dialog reportTypeDialog = new Dialog(mContext); - LinearLayout container = new LinearLayout(mContext); + final Dialog reportTypeDialog = new Dialog(context); + LinearLayout container = new LinearLayout(context); container.setOrientation(LinearLayout.VERTICAL); - container.setPadding(0, DisplayUtils.dip2px(mContext, 12), 0, DisplayUtils.dip2px(mContext, 12)); + container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12)); container.setBackgroundColor(Color.WHITE); for (final String s : arrReportType) { - TextView reportTypeTv = new TextView(mContext); + TextView reportTypeTv = new TextView(context); reportTypeTv.setText(s); reportTypeTv.setTextSize(17); - reportTypeTv.setTextColor(ContextCompat.getColor(mContext, R.color.title)); + reportTypeTv.setTextColor(ContextCompat.getColor(context, R.color.title)); reportTypeTv.setBackgroundResource(R.drawable.textview_white_style); reportTypeTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10, LinearLayout.LayoutParams.WRAP_CONTENT)); - reportTypeTv.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 12), - 0, DisplayUtils.dip2px(mContext, 12)); + reportTypeTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12), + 0, DisplayUtils.dip2px(context, 12)); container.addView(reportTypeTv); reportTypeTv.setOnClickListener(new View.OnClickListener() { @@ -185,16 +185,16 @@ public class CommentUtils { e.printStackTrace(); } - PostCommentUtils.addReportData(mContext, jsonObject.toString(), + PostCommentUtils.addReportData(context, jsonObject.toString(), new PostCommentUtils.PostCommentListener() { @Override public void postSuccess(JSONObject response) { - Utils.toast(mContext, "感谢您的举报"); + Utils.toast(context, "感谢您的举报"); } @Override public void postFailed(Throwable error) { - Utils.toast(mContext, "举报失败,请检查网络设置"); + Utils.toast(context, "举报失败,请检查网络设置"); } }); reportTypeDialog.cancel(); diff --git a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java index 36732c723b..9b8e2ec818 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -8,6 +8,7 @@ import android.view.View; import com.gh.common.constant.Config; import com.gh.common.view.DownloadDialog; import com.gh.download.DownloadManager; +import com.gh.gamecenter.DataUtils; import com.gh.gamecenter.DownloadManagerActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.DetailViewHolder; 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 467485caf7..02599c3a2c 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -13,6 +13,7 @@ import android.widget.TextView; import com.gh.common.constant.Config; import com.gh.common.view.DownloadDialog; import com.gh.download.DownloadManager; +import com.gh.gamecenter.DataUtils; import com.gh.gamecenter.DownloadManagerActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameViewHolder; diff --git a/app/src/main/java/com/gh/gamecenter/AboutActivity.java b/app/src/main/java/com/gh/gamecenter/AboutActivity.java index 05df0694ae..0d420a1b15 100644 --- a/app/src/main/java/com/gh/gamecenter/AboutActivity.java +++ b/app/src/main/java/com/gh/gamecenter/AboutActivity.java @@ -2,113 +2,23 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.support.annotation.NonNull; -import android.text.TextUtils; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.RelativeLayout; -import android.widget.TextView; -import android.widget.Toast; -import com.gh.base.BaseActivity; -import com.gh.common.util.PackageUtils; -import com.gh.common.util.StringUtils; -import com.gh.gamecenter.manager.UpdateManager; -import com.tencent.bugly.beta.tinker.TinkerManager; - -import java.lang.ref.WeakReference; - -import butterknife.BindView; -import butterknife.OnClick; -import butterknife.OnLongClick; +import com.halo.assistant.fragment.AboutFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by khy on 2017/2/28. */ -public class AboutActivity extends BaseActivity { - - @BindView(R.id.about_version_tv) - TextView mAboutVersion; - @BindView(R.id.setting_rl_update) - RelativeLayout mAboutUpdateRl; - @BindView(R.id.about_version_pb) - ProgressBar mAboutPb; - @BindView(R.id.about_tv_version) - TextView mVersionName; - - private Handler handler = new MyHandler(this); +@Deprecated +public class AboutActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context) { - return new Intent(context, AboutActivity.class); + + return new IntentFactory.Builder(context) + .setActivity(AboutActivity.class) + .setFragment(AboutFragment.class).build(); } - @Override - protected int getLayoutId() { - return R.layout.activity_about; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_about)); - -// ((TextView) findViewById(R.id.about_tv_version)).setText("V" + PackageUtils.getVersionName(this)); - mVersionName.setText(getString(R.string.about_version_name, PackageUtils.getPatchVersionName())); // 版本号暂时与gradle versionName不一致 - } - - @Override - protected void onDestroy() { - super.onDestroy(); - handler.removeCallbacksAndMessages(null); - } - - @OnClick({R.id.about_shengming, R.id.setting_rl_update}) - public void OnClick(View view) { - if (view.getId() == R.id.setting_rl_update) { - UpdateManager.getInstance(AboutActivity.this).checkUpdate(false, handler); // 检出更新 - } else if (view.getId() == R.id.about_shengming) { - Intent intent = WebActivity.getWebIntent(this); - startActivity(intent); - } - } - - @OnLongClick(R.id.about_tv_version) - public boolean OnLongClick(View view) { - if (view.getId() == R.id.about_tv_version) { - String tinkerId = TinkerManager.getNewTinkerId(); - if (!TextUtils.isEmpty(tinkerId)) { - mVersionName.setText(getString(R.string.about_version_name_and_tinerid, PackageUtils.getPatchVersionName(), tinkerId)); - } else { - Toast.makeText(getApplicationContext(), R.string.toast_upload_latest, Toast.LENGTH_SHORT).show(); - } - } - return false; - } - - private static class MyHandler extends Handler { - - private WeakReference mWeakReference; - - public MyHandler(AboutActivity activity) { - mWeakReference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - final AboutActivity activity = mWeakReference.get(); - if (activity != null) { - if (msg.what == 0) { - final String version = (String) msg.obj; - activity.mAboutVersion.setText(StringUtils.buildString("发现新版本 V", version)); - } else if (msg.what == 1) { - activity.mAboutVersion.setText(R.string.toast_upload_latest); - } - } - } - } } diff --git a/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java index 8d38f5c89a..7319cf8433 100644 --- a/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/AskQuestionsDetailActivity.java @@ -153,7 +153,7 @@ public class AskQuestionsDetailActivity extends BaseActivity implements Fragment private void showMenu(String type) { switch (type) { case QUESTIONS_DETAIL_ANSWER: - initTitle("编辑答案"); + setNavigationTitle("编辑答案"); if (mAnswerPost == null) { addAnswerPostView(); } else { @@ -163,7 +163,7 @@ public class AskQuestionsDetailActivity extends BaseActivity implements Fragment mShareIv.setVisibility(View.GONE); break; case QUESTIONS_DETAIL: - initTitle("问题详情"); + setNavigationTitle("问题详情"); if (mShareIv == null) { addShareView(); } else { @@ -173,14 +173,14 @@ public class AskQuestionsDetailActivity extends BaseActivity implements Fragment mAnswerPost.setVisibility(View.GONE); break; case QUESTIONS_DETAIL_INVITE: - initTitle("达人推荐"); + setNavigationTitle("达人推荐"); if (mShareIv != null && mShareIv.getVisibility() == View.VISIBLE) mShareIv.setVisibility(View.GONE); if (mAnswerPost != null && mAnswerPost.getVisibility() == View.VISIBLE) mAnswerPost.setVisibility(View.GONE); break; case QUESTIONS_DETAIL_FOLD: - initTitle("折叠答案"); + setNavigationTitle("折叠答案"); if (mShareIv != null && mShareIv.getVisibility() == View.VISIBLE) mShareIv.setVisibility(View.GONE); if (mAnswerPost != null && mAnswerPost.getVisibility() == View.VISIBLE) diff --git a/app/src/main/java/com/gh/gamecenter/AskTabOrderActivity.java b/app/src/main/java/com/gh/gamecenter/AskTabOrderActivity.java index 700bbdcad7..7e35cf66d8 100644 --- a/app/src/main/java/com/gh/gamecenter/AskTabOrderActivity.java +++ b/app/src/main/java/com/gh/gamecenter/AskTabOrderActivity.java @@ -59,7 +59,7 @@ public class AskTabOrderActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.ask_tab_order_title)); + setNavigationTitle(getString(R.string.ask_tab_order_title)); final AskQuestionsNewViewModel.Factory factory = new AskQuestionsNewViewModel.Factory(getApplication()); mViewModel = ViewModelProviders.of(this, factory) diff --git a/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java b/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java index 08400acb5b..b550e001fa 100644 --- a/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java @@ -157,12 +157,11 @@ public class ChooseReceiverActivity extends BaseActivity implements View.OnClick @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_choose_activity)); + setNavigationTitle(getString(R.string.title_choose_activity)); mTitleTv.setTextColor(Color.WHITE); mBackIv.setImageResource(R.drawable.reuse_kc_back); - // 添加分享图标 TextView hintTv = new TextView(this); hintTv.setText("操作说明"); @@ -173,8 +172,7 @@ public class ChooseReceiverActivity extends BaseActivity implements View.OnClick ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.CENTER_VERTICAL); - RelativeLayout reuse_actionbar = (RelativeLayout) mContentView.findViewById( - R.id.reuse_actionbar); + RelativeLayout reuse_actionbar = (RelativeLayout) findViewById(R.id.reuse_actionbar); reuse_actionbar.addView(hintTv, params); //修改沉浸栏以及ActionBar 颜色 diff --git a/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java b/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java index 5edbd7605d..c6d24aa5bf 100644 --- a/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java @@ -2,240 +2,23 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; -import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v4.util.ArrayMap; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.text.Html; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.RelativeLayout; -import android.widget.TextView; -import com.gh.base.BaseActivity; -import com.gh.common.util.DialogUtils; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.gamecenter.adapter.CleanApkAdapter; -import com.gh.gamecenter.entity.InstallGameEntity; -import com.gh.gamecenter.eventbus.EBSkip; -import com.lightgame.utils.Utils; - -import org.greenrobot.eventbus.EventBus; - -import java.io.File; -import java.text.DecimalFormat; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; +import com.halo.assistant.fragment.ApkCleanerFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by khy on 2017/1/24. */ -public class CleanApkActivity extends BaseActivity implements CleanApkAdapter.OnScanListener { - - @BindView(R.id.apk_count) - TextView mApkCount; - @BindView(R.id.apk_rv) - RecyclerView mApkRv; - @BindView(R.id.delete_btn) - TextView mApkDeleteBtn; - @BindView(R.id.select_game_all) - CheckBox mApkSelectAll; - @BindView(R.id.scan_pb) - ProgressBar mScanPb; - @BindView(R.id.reuse_nodata_skip_tv_hint) - TextView mNodataSkipTv; - @BindView(R.id.reuse_nodata_skip_tv_btn) - TextView mNodataSkipBtn; - @BindView(R.id.reuse_nodata_skip) - LinearLayout mNodataSkipLl; - @BindView(R.id.delete_bottom) - LinearLayout mDeleteBottom; - @BindView(R.id.select_game_installed_ll) - RelativeLayout mInstallAllData; - - private CleanApkAdapter mAdapter; +@Deprecated +public class CleanApkActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context) { - Intent intent = new Intent(context, CleanApkActivity.class); - return intent; +// Intent intent = new Intent(context, CleanApkActivity.class); + return new IntentFactory.Builder(context) + .setActivity(CleanApkActivity.class) + .setFragment(ApkCleanerFragment.class).build(); } - @Override - protected int getLayoutId() { - return R.layout.activity_clean_apk; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_clean_apk)); - - mNodataSkipLl.setVisibility(View.GONE); - - mAdapter = new CleanApkAdapter(this, this, mApkDeleteBtn, mApkSelectAll); - mApkRv.setLayoutManager(new LinearLayoutManager(this)); - mApkRv.addItemDecoration(new VerticalItemDecoration(this, 8, true)); - mApkRv.setAdapter(mAdapter); - - mApkSelectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ArrayMap selectPosition = new ArrayMap<>(); - ArrayMap selectPosition1 = mAdapter.getSelectPosition(); - int itemCount = mAdapter.getItemCount(); - if (isChecked) { - for (int i = 0; i < itemCount; i++) { - selectPosition.put(i, true); - } - } else { - int selectCount = 0; - for (Integer integer : selectPosition1.keySet()) { - if (selectPosition1.get(integer)) { - selectCount++; - } - } - - if (selectCount != itemCount) { - return; - } - - for (int i = 0; i < itemCount; i++) { - selectPosition.put(i, false); - } - } - - mAdapter.setSelectPosition(selectPosition); - mAdapter.notifyItemRangeChanged(0, itemCount); - mAdapter.checkBoxControl(isChecked, 0); - } - }); - - mNodataSkipBtn.setText("去首页看看"); - mNodataSkipTv.setText("安装包已清理干净\n快去发现更多好玩的游戏吧!"); - mNodataSkipTv.setLineSpacing(0, 1.5f); - - } - - @OnClick({R.id.delete_btn, R.id.reuse_nodata_skip_tv_btn}) - public void onClick(View view) { - switch (view.getId()) { - case R.id.delete_btn: { - String s = mApkDeleteBtn.getText().toString(); - if ("停止扫描".equals(s)) { - mAdapter.isStopScan(); - } else { - if ("一键删除".equals(s)) { - Utils.toast(CleanApkActivity.this, "请选择需要删除的安装包"); - return; - } - - final List apkList = mAdapter.getApkList(); - final ArrayMap selectPosition = mAdapter.getSelectPosition(); - - for (int i = 0; i < apkList.size(); i++) { - if (selectPosition.get(i) && apkList.get(i).getInstallStatus() == 1) { - DialogUtils.showWarningDialog(CleanApkActivity.this, "删除安装包" - , Html.fromHtml(getString(R.string.delete_apk_hint)) - , "取消 ", "确定" - , new DialogUtils.ConfirmListener() { - @Override - public void onConfirm() { - deleteApk(apkList, selectPosition); - } - }, null); - return; - } - } - - deleteApk(apkList, selectPosition); - } - break; - } - case R.id.reuse_nodata_skip_tv_btn: { - Intent intent = MainActivity.getMainIntent(this); - startActivity(intent); - - mNodataSkipBtn.postDelayed(new Runnable() { - @Override - public void run() { - EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 0)); - } - }, 300); - break; - } - } - } - - private void deleteApk(List apkList, ArrayMap selectPosition) { - long size = 0; - for (int i = 0; i < apkList.size(); i++) { - if (selectPosition.get(i)) { - InstallGameEntity installGameEntity = apkList.get(i); - size = size + installGameEntity.getGameSize(); - File file = new File(installGameEntity.getGamePath()); - if (file.isFile() && file.exists()) { - file.delete(); - mAdapter.deleteApk(i); - i--; - } - } - } - - double allSize = (((float) size / 1024) / 1024); - DecimalFormat df = new DecimalFormat("#.00"); - String sizeName = df.format(allSize) + "MB"; - Utils.toast(CleanApkActivity.this, "删除成功,已为您节省" + sizeName + "空间"); - mApkDeleteBtn.setText("一键删除"); - mAdapter.notifyDataSetChanged(); // 刷新Adapter position - - updateScanData(); - - if (apkList.size() == 0) { // 全部删除 - mNodataSkipLl.setVisibility(View.VISIBLE); - mInstallAllData.setVisibility(View.GONE); - mDeleteBottom.setVisibility(View.GONE); - } - } - - private void updateScanData() { - long allSize = 0; - List apkList = mAdapter.getApkList(); - for (InstallGameEntity installGameEntity : apkList) { - allSize = allSize + installGameEntity.getGameSize(); - } - - double size = (((float) allSize / 1024) / 1024); - DecimalFormat df = new DecimalFormat("0.00"); - String sizeName = df.format(size) + "MB"; - - mApkCount.setText(Html.fromHtml(getString(R.string.clean_apk_count, apkList.size(), sizeName))); - } - - @Override - public void onScanOver() { - mApkDeleteBtn.setText("立即删除"); - mApkDeleteBtn.setBackgroundResource(R.drawable.game_item_btn_red_style); - - updateScanData(); - - mScanPb.setVisibility(View.GONE); - mApkSelectAll.setVisibility(View.VISIBLE); - mApkSelectAll.setChecked(true); - } - - @Override - public void noData() { - mNodataSkipBtn.setText("去首页看看"); - mNodataSkipTv.setText("暂无安装包"); - mNodataSkipLl.setVisibility(View.VISIBLE); - mInstallAllData.setVisibility(View.GONE); - mDeleteBottom.setVisibility(View.GONE); - } } diff --git a/app/src/main/java/com/gh/gamecenter/CollectionActivity.java b/app/src/main/java/com/gh/gamecenter/CollectionActivity.java index 3850896a4a..2aa1ebeb33 100644 --- a/app/src/main/java/com/gh/gamecenter/CollectionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CollectionActivity.java @@ -3,33 +3,25 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; -import com.gh.base.BaseActivity; -import com.gh.gamecenter.collection.CollectionFragment; +import com.gh.base.fragment.BaseFragment_ViewPager; +import com.gh.gamecenter.collection.CollectionWrapperFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by khy on 18/07/17. */ +@Deprecated +public class CollectionActivity extends CommonActivity { -public class CollectionActivity extends BaseActivity { - - - public static final Intent getCollectionActivity(Context context) { - Intent intent = new Intent(context, CollectionActivity.class); - return intent; + @NonNull + public static Intent getCollectionActivity(Context context) { + Bundle args = new Bundle(); + args.putInt(BaseFragment_ViewPager.ARGS_INDEX, CollectionWrapperFragment.INDEX_TOOL); + return new IntentFactory.Builder(context) + .setActivity(CollectionActivity.class) + .setFragment(CollectionWrapperFragment.class).setArgs(args).build(); } - @Override - protected int getLayoutId() { - return R.layout.activity_collection; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initTitle(getString(R.string.collection_title)); - - getSupportFragmentManager().beginTransaction().replace( - R.id.layout_fragment_content, CollectionFragment.newInstance(0)).commitAllowingStateLoss(); - } } diff --git a/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java b/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java index bb677c71f9..f3f5a6d607 100644 --- a/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java @@ -1,241 +1,25 @@ package com.gh.gamecenter; -import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.ScrollView; -import android.widget.TextView; -import com.facebook.drawee.view.SimpleDraweeView; -import com.gh.base.BaseActivity; -import com.gh.common.util.CheckLoginUtils; -import com.gh.common.util.DialogUtils; import com.gh.common.util.EntranceUtils; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.PostCommentUtils; -import com.gh.gamecenter.adapter.CommentDetailAdapter; -import com.gh.gamecenter.adapter.OnCommentCallBackListener; -import com.gh.gamecenter.entity.CommentEntity; -import com.gh.gamecenter.entity.UserInfoEntity; -import com.gh.gamecenter.manager.UserManager; -import com.lightgame.utils.Utils; - -import org.json.JSONException; -import org.json.JSONObject; - -import butterknife.BindView; -import butterknife.OnClick; -import butterknife.OnTouch; -import retrofit2.HttpException; +import com.halo.assistant.fragment.comment.CommentDetailFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by khy on 2017/3/22. */ +@Deprecated +public class CommentDetailActivity extends CommonActivity { -// TODO: 16/11/17 时间比较紧 先暂时这么做 最好发表评论那块和评论详情整合 -public class CommentDetailActivity extends BaseActivity implements OnCommentCallBackListener { - - @BindView(R.id.comment_detail_rv) - RecyclerView mRecyclerView; - @BindView(R.id.comment_detail_close_comment) - View mCommentDetailCloseComment; - @BindView(R.id.comment_detail_comment_et) - EditText mCommentDetailCommentEt; - @BindView(R.id.comment_user_icon) - SimpleDraweeView mCommentUserIcon; - @BindView(R.id.comment_user_name) - TextView mCommentUserName; - @BindView(R.id.comment_send) - TextView mCommentSend; - @BindView(R.id.comment_detail_user_rl) - RelativeLayout mCommentDetailUserRl; - @BindView(R.id.comment_detail_comment_rl) - RelativeLayout mCommentDetailCommentRl; - @BindView(R.id.comment_detail_sv) - ScrollView mCommentDetailSv; - @BindView(R.id.reuse_none_data) - View mNoData; - - private Dialog mSendingDialog; - - private UserInfoEntity mUserInfo; - private CommentEntity mCommentEntity; // 回复评论的实体 用完马上清空 - - private CommentDetailAdapter mAdapter; - private LinearLayoutManager mLayoutManager; - - public static Intent getCommentDetailIntent(Context context, String commentId) { - Intent intent = new Intent(context, CommentDetailActivity.class); - intent.putExtra(EntranceUtils.KEY_COMMENTID, commentId); - return intent; - } - - - @Override - protected int getLayoutId() { - return R.layout.activity_comment_detail; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_comment_detail)); - - String commentId = getIntent().getStringExtra(EntranceUtils.KEY_COMMENTID); - - mAdapter = new CommentDetailAdapter(this, commentId, this, mNoData, mRecyclerView); - mLayoutManager = new LinearLayoutManager(this); - mRecyclerView.setLayoutManager(mLayoutManager); - mRecyclerView.setAdapter(mAdapter); - - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE && !mAdapter.isOver() && !mAdapter.isLoading()) { - mAdapter.loadData(mAdapter.getItemCount()); - } - } - }); - - mUserInfo = UserManager.getInstance().getUserInfoEntity(); - if (mUserInfo != null) { - ImageUtils.Companion.display(mCommentUserIcon, mUserInfo.getIcon()); - mCommentUserName.setText(mUserInfo.getName()); - } - } - - @Override - public void onCommentCallback(CommentEntity entity) { - mCommentEntity = entity; - setSoftInput(true); - } - - @OnTouch(R.id.comment_detail_close_comment) - public boolean OnRecyclerTouchListener() { - if (mCommentDetailCloseComment.getVisibility() == View.VISIBLE) { - setSoftInput(false); - } - return true; - } - - @OnClick(R.id.comment_send) - public void OnSendCommentListener() { - final String content = mCommentDetailCommentEt.getText().toString(); - - if (content.length() == 0) { - Utils.toast(this, "评论内容不能为空!"); - return; - } - - mSendingDialog = DialogUtils.showWaitDialog(this, getString(R.string.post_dialog_hint)); - - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("content", content); - } catch (JSONException e) { - e.printStackTrace(); - } - if (mCommentEntity != null && mCommentEntity.getId() == null) { - Utils.toast(this, "评论异常 id null"); - mSendingDialog.cancel(); - return; - } - - PostCommentUtils.addCommentData(CommentDetailActivity.this, null, jsonObject.toString(), mCommentEntity, - new PostCommentUtils.PostCommentListener() { - @Override - public void postSuccess(JSONObject response) { - mSendingDialog.dismiss(); - toast("发表成功"); - mCommentDetailCommentEt.setText(""); - - setSoftInput(false); - - } - - @Override - public void postFailed(Throwable e) { - mSendingDialog.dismiss(); - - if (e instanceof HttpException) { - HttpException exception = (HttpException) e; - if (exception.code() == 403) { - try { - JSONObject errorJson = new JSONObject(exception.response().errorBody().string()); - String detail = errorJson.getString("detail"); - switch (detail) { - case "too frequent": - toast(getString(R.string.comment_failed_toofrequent)); - break; - case "user blocked": - toast(getString(R.string.comment_failed_userblocked)); - break; - case "article blocked": - toast(getString(R.string.comment_failed_articleblocked)); - setSoftInput(false); - break; - case "illegal": - toast(getString(R.string.comment_failed_illegal)); - break; - default: - toast(getString(R.string.comment_failed_unknown)); - break; - } - } catch (Exception ex) { - ex.printStackTrace(); - toast("评论异常"); - } - return; - } - } - - toast(getString(R.string.post_failure_hint)); - } - }); - } - - //软键盘控制 - private void setSoftInput(boolean isShow) { - final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - if (isShow) { - CheckLoginUtils.checkLogin(this, new CheckLoginUtils.OnLoggenInListener() { - @Override - public void onLoggedIn() { - imm.showSoftInputFromInputMethod(mCommentDetailCommentEt.getWindowToken(), 0); - imm.toggleSoftInputFromWindow(mCommentDetailCommentEt.getWindowToken(), 0, InputMethodManager.HIDE_NOT_ALWAYS); - mCommentDetailCommentRl.setVisibility(View.VISIBLE); - mCommentDetailCommentEt.setFocusable(true); - mCommentDetailCommentEt.setFocusableInTouchMode(true); - mCommentDetailCommentEt.requestFocus(); - mCommentDetailCloseComment.setVisibility(View.VISIBLE); - - if (mCommentEntity != null && mCommentEntity.getUser() != null) { - mCommentDetailCommentEt.setHint(getString(R.string.comment_repty_hint, mCommentEntity.getUser().getName())); - } else { - mCommentDetailCommentEt.setHint(getString(R.string.message_detail_comment_hint)); - } - } - }); - } else { - imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); - - mCommentDetailCloseComment.setVisibility(View.GONE); - - mCommentDetailCommentRl.setVisibility(View.GONE); - if (mCommentEntity != null) { - mCommentEntity = null; // 清空当前评论实体 - mCommentDetailCommentEt.setHint(getString(R.string.message_detail_comment_hint)); - mCommentDetailCommentEt.setText(""); - } - } + public static Intent getIntent(Context context, String commentId) { + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_COMMENTID, commentId); + return new IntentFactory.Builder(context) + .setActivity(CommentDetailActivity.class) + .setFragment(CommentDetailFragment.class).setArgs(args).build(); } } diff --git a/app/src/main/java/com/gh/gamecenter/CommonActivity.java b/app/src/main/java/com/gh/gamecenter/CommonActivity.java index a1e11bf073..9e94a6b00a 100644 --- a/app/src/main/java/com/gh/gamecenter/CommonActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CommonActivity.java @@ -1,18 +1,40 @@ package com.gh.gamecenter; -import com.gh.base.BaseAppCompatToolBarActivity; +import android.content.Intent; +import android.support.v4.app.Fragment; +import android.view.MenuItem; -public class CommonActivity extends BaseAppCompatToolBarActivity { +import com.gh.base.BaseToolBarActivity; +import com.gh.gamecenter.normal.ToolbarController; + +import java.util.List; + +public class CommonActivity extends BaseToolBarActivity implements ToolbarController { @Override protected int getLayoutId() { - return R.layout.layout_wrapper_toolbar; + return R.layout.layout_wrapper_activity_toolbar; } @Override protected boolean onNavigationIconClicked() { - finish(); + onBackPressed(); return true; } + @Override + public void setNavigationTitle(int res) { + + } + + @Override + public void setNavigationTitle(CharSequence res) { + + } + + @Override + public void setToolbarMenu(int res) { + + } + } diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index 72d30b5f28..6b4e6d1792 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -4,209 +4,23 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.View; -import android.view.View.OnClickListener; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; -import com.gh.base.BaseActivity; -import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.EntranceUtils; -import com.gh.common.view.Concern_LinearLayout; -import com.gh.gamecenter.adapter.ConcernAdapter; -import com.gh.gamecenter.adapter.ConcernRecommendAdapter; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.eventbus.EBConcernChanged; -import com.gh.gamecenter.eventbus.EBReuse; - -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -import static com.gh.gamecenter.personal.PersonalFragment.LOGIN_TAG; - -public class ConcernActivity extends BaseActivity implements OnClickListener, OnRequestCallBackListener { - - @BindView(R.id.concern_rv_show) - RecyclerView mConcernRv; - @BindView(R.id.concern_rv_recommend) - RecyclerView mConcernRecommendRv; - @BindView(R.id.concern_rl_title) - RelativeLayout mConcernTitleRl; - @BindView(R.id.reuse_none_data) - LinearLayout mNoneData; - @BindView(R.id.reuse_tv_none_data) - TextView mNoDataTv; - @BindView(R.id.reuse_no_connection) - LinearLayout mNoConn; - - private ConcernAdapter concernAdapter; - private ConcernRecommendAdapter concernRecommendAdapter; +import com.halo.assistant.fragment.ConcernFragment; +import com.halo.assistant.ui.IntentFactory; +@Deprecated +public class ConcernActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context, String entrance) { - Intent intent = new Intent(context, ConcernActivity.class); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - return intent; + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_ENTRANCE, entrance); + return new IntentFactory.Builder(context) + .setActivity(ConcernActivity.class) + .setFragment(ConcernFragment.class).setArgs(args).build(); } - @Override - protected int getLayoutId() { - return R.layout.activity_concern; - } - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - initTitle(getString(R.string.title_concern)); - - mConcernTitleRl.setOnClickListener(this); - - mConcernRv.setHasFixedSize(true); - mConcernRv.setLayoutManager(new GridLayoutManager(this, 3)); - concernAdapter = new ConcernAdapter(this, this, mEntrance); - mConcernRv.setAdapter(concernAdapter); - - mConcernRecommendRv.setHasFixedSize(true); - mConcernRecommendRv.setLayoutManager(new GridLayoutManager(this, 4)); - - - } - - @Override - public void loadDone() { // 关注推荐 回调 - mConcernTitleRl.setVisibility(View.VISIBLE); - mConcernRecommendRv.setVisibility(View.VISIBLE); - int size = concernRecommendAdapter.getRecommendGameList().size(); - mConcernRecommendRv.setLayoutManager(new GridLayoutManager(this, size > 4 ? 4 : size)); - mConcernRecommendRv.getAdapter().notifyDataSetChanged(); - } - - // 关注的游戏加载完成 再加载热门推荐(根据已关注的游戏过滤) - @Override - public void loadDone(Object obj) { - mNoConn.setVisibility(View.GONE); - mNoneData.setVisibility(View.GONE); - - concernRecommendAdapter = new ConcernRecommendAdapter(this, this, (List)obj, mEntrance); - mConcernRecommendRv.setAdapter(concernRecommendAdapter); - - if (obj == null) { // 未登录状态 - mNoneData.setVisibility(View.VISIBLE); - mConcernRv.setVisibility(View.GONE); - mNoDataTv.setText(R.string.login_hint); - mNoDataTv.setTextColor(ContextCompat.getColor(ConcernActivity.this, R.color.theme)); - } - } - - @Override - public void loadError() { - mNoConn.setVisibility(View.VISIBLE); - mNoneData.setVisibility(View.GONE); - } - - @Override - public void loadEmpty() { - if (concernAdapter.getConcernGameList() == null - || concernAdapter.getConcernGameList().isEmpty()) { - mNoneData.setVisibility(View.VISIBLE); - mConcernRv.setVisibility(View.GONE); - mNoDataTv.setText(R.string.game_empty); - mNoDataTv.setTextColor(ContextCompat.getColor(ConcernActivity.this, R.color.c7c7c7)); - } - if (concernRecommendAdapter.getRecommendGameList() == null - || concernRecommendAdapter.getRecommendGameList().isEmpty()) { - mConcernTitleRl.setVisibility(View.GONE); - mConcernRecommendRv.setVisibility(View.GONE); - } else { - if (concernRecommendAdapter.getRecommendGameList().size() < 4) { - mConcernRecommendRv.setLayoutManager( - new GridLayoutManager(this, concernRecommendAdapter.getRecommendGameList().size())); - } - } - } - - @OnClick({R.id.concern_rl_title, R.id.reuse_tv_none_data}) - public void onClick(View v) { - switch (v.getId()) { - case R.id.concern_rl_title: - if (mConcernRecommendRv.getVisibility() == View.VISIBLE) { - ((Concern_LinearLayout) mContentView).hideRecyclerView(); - } else { - ((Concern_LinearLayout) mContentView).showRecyclerView(); - } - break; - case R.id.reuse_tv_none_data: - String hint = getString(R.string.login_hint); - if (hint.equals(mNoDataTv.getText().toString())) - startActivity(LoginActivity.getIntent(this)); - break; - } - } - // 关注事件 - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(EBConcernChanged changed) { - if (!changed.isSingle()) { - return; - } - if (changed.isConcern()) { - GameEntity concernGame = concernRecommendAdapter.concernGame(changed.getGameId()); - - if (concernGame != null) { - concernAdapter.getConcernGameList().add(0, concernGame); - concernAdapter.notifyDataSetChanged(); - if (mNoneData.getVisibility() == View.VISIBLE) { - mNoneData.setVisibility(View.GONE); - mConcernRv.setVisibility(View.VISIBLE); - } - } - - for (int i = 0, size = concernRecommendAdapter.getRecommendGameList().size(); i < size; i++) { - if (changed.getGameId().equals(concernRecommendAdapter.getRecommendGameList().get(i).getId())) { - concernRecommendAdapter.getRecommendGameList().remove(i); - concernRecommendAdapter.notifyItemRemoved(i); // 删除动画 - concernRecommendAdapter.notifyDataSetChanged(); // 防止列表串行 - if (concernRecommendAdapter.getRecommendGameList().isEmpty()) { - mConcernTitleRl.setVisibility(View.GONE); - mConcernRecommendRv.setVisibility(View.GONE); - } - break; - } - } - } else { - GameEntity gameEntity = concernAdapter.cancelConcern(changed.getGameId()); - if (gameEntity != null) { - concernRecommendAdapter.getRecommendGameList().add(0, gameEntity); - concernRecommendAdapter.notifyDataSetChanged(); - } - - if (concernRecommendAdapter.getRecommendGameList().isEmpty()) { - mConcernTitleRl.setVisibility(View.GONE); - mConcernRecommendRv.setVisibility(View.GONE); - } else { - mConcernTitleRl.setVisibility(View.VISIBLE); - mConcernRecommendRv.setVisibility(View.VISIBLE); - } - } - } - - // 登录事件 - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(EBReuse reuse) { - if (reuse.getType().equals(LOGIN_TAG)) { // 登入 - concernAdapter = new ConcernAdapter(this, this, mEntrance); - mConcernRv.setAdapter(concernAdapter); - mConcernRv.setVisibility(View.VISIBLE); - } - } } diff --git a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java index 2002f49a1a..10b9267f62 100644 --- a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java @@ -90,7 +90,7 @@ public class CropImageActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_crop_image)); + setNavigationTitle(getString(R.string.title_crop_image)); sp = PreferenceManager.getDefaultSharedPreferences(this); diff --git a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java index ebcda5c957..e7de893c5a 100644 --- a/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java +++ b/app/src/main/java/com/gh/gamecenter/DownloadManagerActivity.java @@ -47,7 +47,7 @@ public class DownloadManagerActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_downloadmanager)); + setNavigationTitle(getString(R.string.title_downloadmanager)); startDownloadFragment(); } diff --git a/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java b/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java index 64c18a5f00..2efe87081c 100644 --- a/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java +++ b/app/src/main/java/com/gh/gamecenter/FileReceiverActivity.java @@ -260,7 +260,7 @@ public class FileReceiverActivity extends BaseActivity implements OnReceiverCanc @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_file_receive)); + setNavigationTitle(getString(R.string.title_file_receive)); isDestroy = false; diff --git a/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java b/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java index 212419e634..c140220048 100644 --- a/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java +++ b/app/src/main/java/com/gh/gamecenter/FileSenderActivity.java @@ -173,7 +173,7 @@ public class FileSenderActivity extends BaseActivity implements FileSenderAdapte @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_file_sender)); + setNavigationTitle(getString(R.string.title_file_sender)); mFileInfos = (List) HaloApp.get("FileInfo", false); diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index 6533197333..fe2c1b173d 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -25,7 +25,6 @@ import com.gh.common.util.AppDebugConfig; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; import com.gh.common.util.DetailDownloadUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; @@ -121,7 +120,6 @@ public class GameDetailActivity extends BaseActivity { private String mGameId; private String downloadAddWord; private String downloadOffText; - private String name; // 页面位置 private String title; // 页面标题 private String shareCode; @@ -149,7 +147,7 @@ public class GameDetailActivity extends BaseActivity { private DetailViewHolder getDetailViewHolder() { // 每次获取需要重新创建, 防止数据刷新 return new DetailViewHolder(mContentView, mGameEntity, mDownloadEntity, downloadOffText, downloadAddWord, - false, mEntrance, name, title); // 下载按钮ViewHolder + false, mEntrance, getString(R.string.title_game_detail), title); // 下载按钮ViewHolder } /** @@ -195,10 +193,10 @@ public class GameDetailActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(""); + setNavigationTitle(""); // 增加actionBar Button - RelativeLayout reuse_actionbar = mContentView.findViewById(R.id.reuse_actionbar); + RelativeLayout reuse_actionbar = findViewById(R.id.reuse_actionbar); mShareIv = LayoutInflater.from(this).inflate(R.layout.menu_action_share, reuse_actionbar, false); // 绑定parentView 否则会丢失宽高 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mShareIv.getLayoutParams(); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); @@ -207,8 +205,6 @@ public class GameDetailActivity extends BaseActivity { mViewPager.setScrollable(true); - name = "游戏详情"; - mGameId = getIntent().getStringExtra(EntranceUtils.KEY_GAMEID); mEntrance = getIntent().getStringExtra(EntranceUtils.KEY_ENTRANCE); Bundle data = getIntent().getBundleExtra(EntranceUtils.KEY_DATA); diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java index ce65a11ad8..5131b8415e 100644 --- a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java @@ -4,216 +4,33 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v4.util.ArrayMap; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; -import com.gh.base.BaseActivity; -import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; -import com.gh.gamecenter.adapter.GameNewsAdapter; -import com.gh.gamecenter.adapter.GameNewsTypeListAdapter; -import com.gh.gamecenter.eventbus.EBTypeChange; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; - -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import retrofit2.HttpException; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import com.halo.assistant.fragment.game.GameNewsSearchFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by LGT on 2016/8/29. - * 游戏新闻界面 + * 游戏新闻界面,由于MTA界面统计未重新记录的原因,暂留此傀儡,连名字都不能改,真是可怕 */ -public class GameNewsActivity extends BaseActivity implements View.OnClickListener { - - @BindView(R.id.game_news_list) - RecyclerView mGameNewsRv; - @BindView(R.id.game_news_top_type_list) - RecyclerView mGameNewsTypeRv; - @BindView(R.id.reuse_none_data) - LinearLayout mNoDataLl; - @BindView(R.id.reuse_tv_none_data) - TextView mNoDataTv; - - private GameNewsAdapter adapter; - private GameNewsTypeListAdapter typeListAdapter; - private LinearLayoutManager layoutManager; - private ImageView ivSearch; - - private ArrayMap adapterMap; - - private List typeList; - - private String gameId; - - private float startY = 0; +@Deprecated +public class GameNewsActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context, String gameName, String gameId, String entrance) { - Intent intent = new Intent(context, GameNewsActivity.class); - intent.putExtra(EntranceUtils.KEY_GAMENAME, gameName); - intent.putExtra(EntranceUtils.KEY_GAMEID, gameId); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - return intent; +// Intent intent = new Intent(context, GameNewsActivity.class); +// intent.putExtra(EntranceUtils.KEY_GAMENAME, gameName); +// intent.putExtra(EntranceUtils.KEY_GAMEID, gameId); +// intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); +// return intent; + + final Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_GAMENAME, gameName); + args.putString(EntranceUtils.KEY_GAMEID, gameId); + args.putString(EntranceUtils.KEY_ENTRANCE, entrance); + return new IntentFactory.Builder(context) + .setActivity(GameNewsActivity.class) + .setFragment(GameNewsSearchFragment.class).setArgs(args).build(); } - @Override - protected int getLayoutId() { - return R.layout.activity_game_news; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - ivSearch = new ImageView(this); - ivSearch.setImageResource(R.drawable.ic_search_white); - - RelativeLayout.LayoutParams ivSearchParams = new RelativeLayout.LayoutParams( - DisplayUtils.dip2px(this, 20), DisplayUtils.dip2px(this, 20)); - ivSearchParams.addRule(RelativeLayout.CENTER_VERTICAL); - ivSearchParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - ivSearchParams.setMargins(0, 0, DisplayUtils.dip2px(this, 10), 0); - - RelativeLayout reuse_actionbar = (RelativeLayout) mContentView.findViewById(R.id.reuse_actionbar); - reuse_actionbar.addView(ivSearch, ivSearchParams); - ivSearch.setOnClickListener(this); - ivSearch.setVisibility(View.GONE); - - String gameName = getIntent().getStringExtra(EntranceUtils.KEY_GAMENAME); - initTitle(gameName); - - mNoDataTv.setText("暂无内容"); - - adapterMap = new ArrayMap<>(); - - typeList = new ArrayList<>(); - - gameId = getIntent().getStringExtra(EntranceUtils.KEY_GAMEID); - - mGameNewsRv.setHasFixedSize(true); - layoutManager = new LinearLayoutManager(this); - mGameNewsRv.setLayoutManager(layoutManager); - - mGameNewsRv.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (adapter != null && newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == adapter.getItemCount() - 1) { - if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) { - adapter.addList(adapter.getNewsList().size()); - } - } - } - - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - super.onScrolled(recyclerView, dx, dy); - - if (layoutManager.findFirstVisibleItemPosition() >= 1) { - mGameNewsTypeRv.setVisibility(View.VISIBLE); - ivSearch.setVisibility(View.VISIBLE); - } else { - mGameNewsTypeRv.setVisibility(View.GONE); - ivSearch.setVisibility(View.GONE); - } - - } - }); - - mGameNewsTypeRv.setHasFixedSize(true); - mGameNewsTypeRv.setLayoutManager(new GridLayoutManager(this, 5)); - - //禁止由于滑动出现的阴影 - mGameNewsTypeRv.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - startY = event.getY(); - } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (Math.abs(startY - event.getY()) > 0) { - return true; - } - } - return false; - } - }); - - if (!TextUtils.isEmpty(gameId)) { - getGameArticleType(); - } - } - - private void getGameArticleType() { - RetrofitManager.getInstance(this).getApi() - .getGameArticleType(gameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(List response) { - super.onResponse(response); - typeList = response; - typeList.add(0, "全部"); - adapter = new GameNewsAdapter(GameNewsActivity.this, typeList, mGameNewsRv, gameId, "全部", mEntrance, mNoDataLl); - adapterMap.put("全部", adapter); - mGameNewsRv.setAdapter(adapter); - - typeListAdapter = new GameNewsTypeListAdapter(GameNewsActivity.this, typeList, "全部"); - mGameNewsTypeRv.setAdapter(typeListAdapter); - - ViewGroup.LayoutParams params = mGameNewsTypeRv.getLayoutParams(); - params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(GameNewsActivity.this, 35) - + DisplayUtils.dip2px(GameNewsActivity.this, 12); - mGameNewsTypeRv.setLayoutParams(params); - } - - @Override - public void onFailure(HttpException e) { - super.onFailure(e); - } - }); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(EBTypeChange change) { - adapter = adapterMap.get(change.getType()); - if (adapter == null) { - adapter = new GameNewsAdapter(GameNewsActivity.this, typeList, mGameNewsRv, gameId, change.getType(), mEntrance, mNoDataLl); - adapterMap.put(change.getType(), adapter); - } - mGameNewsRv.setAdapter(adapter); - - mGameNewsTypeRv.setVisibility(View.GONE); - ivSearch.setVisibility(View.GONE); - typeListAdapter.setNewsType(change.getType(), change.getPosition()); - } - - @Override - public void onClick(View v) { - if (v == ivSearch) { - mGameNewsRv.scrollToPosition(0); - mGameNewsTypeRv.setVisibility(View.GONE); - ivSearch.setVisibility(View.GONE); - adapter.openKeyBoard(); - } - } } diff --git a/app/src/main/java/com/gh/gamecenter/InstallActivity.java b/app/src/main/java/com/gh/gamecenter/InstallActivity.java index 06b55196d7..98d7fb6d12 100644 --- a/app/src/main/java/com/gh/gamecenter/InstallActivity.java +++ b/app/src/main/java/com/gh/gamecenter/InstallActivity.java @@ -95,7 +95,7 @@ public class InstallActivity extends BaseActivity implements InstallFragmentAdap @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.personale_mygame)); + setNavigationTitle(getString(R.string.personale_mygame)); mNoDataSkip.setVisibility(View.GONE); mNoDataSkipHint.setText("暂无游戏"); mNoDataSkipBtn.setText("查看精品推荐"); @@ -200,7 +200,6 @@ public class InstallActivity extends BaseActivity implements InstallFragmentAdap } } - // 滑动item @Override public void onSmooth() { @@ -215,4 +214,5 @@ public class InstallActivity extends BaseActivity implements InstallFragmentAdap public void onOpen() { startActivityForResult(ChooseReceiverActivity.getIntent(this, true), KC_REQUEST); } + } diff --git a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java index 4d140c5b1b..593f43007b 100644 --- a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java +++ b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java @@ -16,6 +16,8 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.eventbus.EBKaiFuReset; import com.gh.gamecenter.kaifu.KaiFuFragment; +import com.gh.gamecenter.kaifu.KaiFuWrapperFragment; +import com.halo.assistant.ui.IntentFactory; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -25,97 +27,16 @@ import butterknife.BindView; /** * Created by khy on 18/08/17. */ - -public class KaiFuActivity extends BaseActivity { - - @BindView(R.id.reuse_actionbar) - RelativeLayout mReuseActionbar; - - private TextView mResetTv; - - private KaiFuFragment mKaiFuFragment; - private KaiFuFragment mGameKaiFuFragment; - - public static final String SINGLE_GAME_KAIFU = "SINGLE_GAME_KAIFU"; - public static final String ALL_GAME_KAIFU = "ALL_GAME_KAIFU"; +@Deprecated +public class KaiFuActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context, String entrance) { - Intent intent = new Intent(context, KaiFuActivity.class); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - return intent; - } - - - @Override - protected int getLayoutId() { - return R.layout.activity_kaifu; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initTitle("开服表"); - - mResetTv = new TextView(this); - mResetTv.setText("重置"); - mResetTv.setTextColor(ContextCompat.getColor(this, R.color.title)); - mResetTv.setGravity(Gravity.CENTER); - mResetTv.setVisibility(View.GONE); - mResetTv.setBackgroundResource(R.drawable.border_black_bg); - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( - DisplayUtils.dip2px(this, 48), DisplayUtils.dip2px(this, 28)); - params.addRule(RelativeLayout.CENTER_VERTICAL); - params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - params.setMargins(0, 0, DisplayUtils.dip2px(this, 8), 0); - mReuseActionbar.addView(mResetTv, params); - - - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - mKaiFuFragment = new KaiFuFragment(); - fragmentTransaction.add(R.id.layout_fragment_content, mKaiFuFragment); - fragmentTransaction.commit(); - mResetTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - resetFragment(); - } - }); - } - - private void resetFragment() { - mKaiFuFragment.setCurPage(mGameKaiFuFragment.getCurPage()); - - mResetTv.setVisibility(View.GONE); - mKaiFuFragment.onResume(); // 启动观察者 - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.remove(mGameKaiFuFragment); - fragmentTransaction.show(mKaiFuFragment); - fragmentTransaction.commit(); - } - - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEventMainThread(EBKaiFuReset reset) { - if (SINGLE_GAME_KAIFU.equals(reset.getControl())) { - mResetTv.setVisibility(View.VISIBLE); - - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.hide(mKaiFuFragment); - mKaiFuFragment.onPause(); - - Bundle args = new Bundle(); - args.putString(EntranceUtils.KEY_GAMEID, reset.getGameId()); - args.putInt("curPage", mKaiFuFragment.getCurPage()); - - mGameKaiFuFragment = new KaiFuFragment(); - mGameKaiFuFragment.setArguments(args); - - fragmentTransaction.add(R.id.layout_fragment_content, mGameKaiFuFragment, KaiFuFragment.class.getSimpleName()); - fragmentTransaction.commit(); - } else if (ALL_GAME_KAIFU.equals(reset.getControl())) { - resetFragment(); - } + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_ENTRANCE, entrance); + return new IntentFactory.Builder(context) + .setActivity(KaiFuActivity.class) + .setFragment(KaiFuWrapperFragment.class).setArgs(args).build(); } } diff --git a/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java b/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java index bd994f6cc7..e92658b8ae 100644 --- a/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java +++ b/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java @@ -83,7 +83,7 @@ public class KcSelectGameActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_select_game)); + setNavigationTitle(getString(R.string.title_select_game)); if (getIntent() != null && getIntent().getExtras() != null) { mIsConn = getIntent().getExtras().getBoolean(KEY_ISCONN); diff --git a/app/src/main/java/com/gh/gamecenter/LibaoActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoActivity.java index ac289f9acd..18fdc06019 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoActivity.java @@ -84,7 +84,7 @@ public class LibaoActivity extends BaseActivity implements View.OnClickListener, @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle("礼包中心"); + setNavigationTitle("礼包中心"); mZuixinTv.setSelected(true); diff --git a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java index bcedbaaf9e..b6549d2e22 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java @@ -173,8 +173,8 @@ public class LibaoDetailActivity extends BaseActivity implements LibaoDetailAdap protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mName = getString(R.string.libao_detail); - initTitle(mName); - mLibaoEntity = (LibaoEntity) HaloApp.get(LibaoEntity.TAG, true); + setNavigationTitle(mName); + mLibaoEntity = (LibaoEntity) HaloApp.get(LibaoDetailActivity.class.getSimpleName(), true); mIsScroll = true; diff --git a/app/src/main/java/com/gh/gamecenter/LoginActivity.java b/app/src/main/java/com/gh/gamecenter/LoginActivity.java index 545de6635f..24eac51802 100644 --- a/app/src/main/java/com/gh/gamecenter/LoginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LoginActivity.java @@ -40,7 +40,8 @@ public class LoginActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle("登录光环助手"); + setNavigationTitle("登录光环助手"); getSupportFragmentManager().beginTransaction().replace(R.id.layout_fragment_content, new LoginFragment()).commitAllowingStateLoss(); } + } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 477c126809..63047540d3 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -31,7 +31,6 @@ import com.gh.common.util.ClassUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataLogUtils; -import com.gh.common.util.DataUtils; import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.EntranceUtils; diff --git a/app/src/main/java/com/gh/gamecenter/MessageActivity.java b/app/src/main/java/com/gh/gamecenter/MessageActivity.java index 7da317cc43..5e9f7b44a7 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageActivity.java @@ -25,7 +25,7 @@ public class MessageActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_message_center)); + setNavigationTitle(getString(R.string.title_message_center)); getSupportFragmentManager().beginTransaction().replace( R.id.layout_fragment_content, MessageFragment.newInstance(0)).commitAllowingStateLoss(); } diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index 1cefddb18d..2c8354d8f2 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -188,7 +188,7 @@ public class MessageDetailActivity extends BaseActivity implements OnCommentCall mConcernEntity = null; } - initTitle(getString(R.string.title_message_detail)); + setNavigationTitle(getString(R.string.title_message_detail)); adapter = new MessageDetailAdapter(this, this, mMessageDetailRv, mConcernEntity, mEntrance); mLayoutManager = new LinearLayoutManager(this); diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 7f4e602c32..d5b170a6da 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -28,7 +28,6 @@ import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.CollectionUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; import com.gh.common.util.DetailDownloadUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; @@ -245,10 +244,10 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener, protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(""); + setNavigationTitle(""); // 增加actionBar Button - RelativeLayout reuse_actionbar = mContentView.findViewById(R.id.reuse_actionbar); + RelativeLayout reuse_actionbar = findViewById(R.id.reuse_actionbar); mNewsShare = LayoutInflater.from(this).inflate(R.layout.menu_action_share, reuse_actionbar, false); // 绑定parentView 否则会丢失宽高 mNewsShare.setVisibility(View.GONE); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mNewsShare.getLayoutParams(); diff --git a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java index d9c64def2a..c96f3bf4fd 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java @@ -3,318 +3,29 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.os.Handler; import android.support.annotation.NonNull; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.text.Html; -import android.util.DisplayMetrics; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.TextView; -import com.gh.base.BaseActivity; -import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; import com.gh.common.util.EntranceUtils; -import com.gh.common.util.NewsUtils; -import com.gh.common.view.VerticalItemDecoration; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder; -import com.gh.gamecenter.entity.NewsEntity; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; -import com.lightgame.utils.Utils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import butterknife.BindView; -import retrofit2.HttpException; -import rx.android.schedulers.AndroidSchedulers; -import rx.functions.Func1; -import rx.schedulers.Schedulers; +import com.halo.assistant.fragment.game.GameNewsSearchResultFragment; +import com.halo.assistant.ui.IntentFactory; /** * Created by khy on 2016/8/22. * 新闻搜索界面 */ -public class NewsSearchActivity extends BaseActivity { - - @BindView(R.id.gamedetail_news_rv) - RecyclerView mNewsSearchRv; - @BindView(R.id.tv_search) - TextView mNewsSearchTv; - @BindView(R.id.reuse_none_data) - LinearLayout mNoneData; - @BindView(R.id.et_search) - EditText mNewsSearchEt; - @BindView(R.id.gamedetail_news_ll_loading) - LinearLayout mLoading; - @BindView(R.id.reuse_no_connection) - LinearLayout mNoConn; - - private LinearLayoutManager layoutManager; - private List newsEntities; - private NewsSearchAdapter searchAdapter; - - private boolean isLoadOver = true; - private boolean isRemove = false; - private boolean isNetworkError = false; - - private String searchKey; - private String gameId; - - private Handler handler = new Handler(); - - private int page = 1; +@Deprecated +public class NewsSearchActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context, String gameName, String searchKey, String gameId, String entrance) { - Intent intent = new Intent(context, NewsSearchActivity.class); - intent.putExtra(EntranceUtils.KEY_GAMENAME, gameName); - intent.putExtra(EntranceUtils.KEY_SEARCHKEY, searchKey); - intent.putExtra(EntranceUtils.KEY_GAMEID, gameId); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - return intent; + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_GAMENAME, gameName); + args.putString(EntranceUtils.KEY_SEARCHKEY, searchKey); + args.putString(EntranceUtils.KEY_GAMEID, gameId); + args.putString(EntranceUtils.KEY_ENTRANCE, entrance); + return new IntentFactory.Builder(context) + .setActivity(NewsSearchActivity.class) + .setFragment(GameNewsSearchResultFragment.class).setArgs(args).build(); } - - @Override - protected int getLayoutId() { - return R.layout.activity_gamedetail_news; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - Intent intent = getIntent(); - String gameName = intent.getExtras().getString(EntranceUtils.KEY_GAMENAME); - searchKey = intent.getExtras().getString(EntranceUtils.KEY_SEARCHKEY); - gameId = intent.getExtras().getString(EntranceUtils.KEY_GAMEID); - - initTitle(gameName); - - DisplayMetrics outMetrics = new DisplayMetrics(); - getWindowManager().getDefaultDisplay().getMetrics(outMetrics); - - newsEntities = new ArrayList<>(); - searchAdapter = new NewsSearchAdapter(); - - layoutManager = new LinearLayoutManager(this); - - mNewsSearchRv.setLayoutManager(layoutManager); - mNewsSearchRv.setAdapter(searchAdapter); - mNewsSearchRv.addItemDecoration(new VerticalItemDecoration(NewsSearchActivity.this, 1, false)); - - mNewsSearchEt.setText(searchKey); - - loadNewsData(page); - - mNewsSearchTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - searchKey = mNewsSearchEt.getText().toString().trim(); - if (searchKey.length() >= 1) { - newsEntities.clear(); - searchAdapter.notifyDataSetChanged(); - mLoading.setVisibility(View.VISIBLE); - mNoneData.setVisibility(View.GONE); - InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(v.getWindowToken(), 0); - handler.postDelayed(new Runnable() { - @Override - public void run() { - page = 1; - loadNewsData(page); - } - }, 500); - - } else { - Utils.toast(NewsSearchActivity.this, getString(R.string.search_hint)); - } - - } - }); - - mNewsSearchRv.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE && layoutManager.findLastVisibleItemPosition() + 1 == searchAdapter.getItemCount() - && isLoadOver && !isRemove && !isNetworkError) { - isLoadOver = false; - page++; - loadNewsData(page); - } - } - }); - - mNoConn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mNoConn.setVisibility(View.GONE); - mLoading.setVisibility(View.VISIBLE); - handler.postDelayed(new Runnable() { - @Override - public void run() { - loadNewsData(1); - } - }, 1000); - } - }); - - } - - @Override - protected void onDestroy() { - super.onDestroy(); - handler.removeCallbacksAndMessages(null); - } - - private void loadNewsData(final int page) { -// DataUtils.onEvent(this, "游戏新闻搜索", searchKey); -// DataCollectionUtils.uploadSearch(this, searchKey, "游戏新闻搜索"); - - RetrofitManager.getInstance(this).getApi().getSearchNews(gameId, searchKey, page, 20) - .map(new Func1, List>() { - @Override - public List call(List list) { - // 去掉重复数据 - return NewsUtils.removeDuplicateData(newsEntities, list); - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(List response) { - isLoadOver = true; - mLoading.setVisibility(View.GONE); - mNoneData.setVisibility(View.GONE); - - if (response.size() != 0) { - newsEntities.addAll(response); - searchAdapter.notifyDataSetChanged(); - } else { - if (page == 1) { - mNoneData.setVisibility(View.VISIBLE); - } - - isRemove = true; - searchAdapter.notifyItemChanged(searchAdapter.getItemCount() - 1); - } - - if (response.size() < 20) { - isRemove = true; - } - } - - @Override - public void onFailure(HttpException e) { - if (page == 1) { - mNoConn.setVisibility(View.VISIBLE); - mLoading.setVisibility(View.GONE); - } - isLoadOver = true; - toast(R.string.loading_failed_hint); - isNetworkError = true; - searchAdapter.notifyItemChanged(searchAdapter.getItemCount() - 1); - } - }); - } - - public class NewsSearchAdapter extends RecyclerView.Adapter { - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == 0) { - View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.refresh_footerview, parent, false); - return new FooterViewHolder(view); - } else { - View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.news_text_item, parent, false); - return new NewsTextViewHolder(view); - } - } - - @Override - public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { - if (holder instanceof NewsTextViewHolder) { - NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; - viewHolder.title.setText(Html.fromHtml(newsEntities.get(position).getTitle())); - viewHolder.type.setVisibility(View.GONE); - viewHolder.line.setVisibility(View.GONE); - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - NewsEntity newsEntity = newsEntities.get(holder.getPosition()); - - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(holder.getPosition() + 1)); - DataUtils.onEvent(NewsSearchActivity.this, "点击", "游戏新闻搜索", kv); - - DataCollectionUtils.uploadClick(NewsSearchActivity.this, - "列表", "游戏新闻搜索", newsEntity.getTitle()); - - // 统计阅读量 - NewsUtils.statNewsViews(NewsSearchActivity.this, newsEntity.getId()); - NewsDetailActivity.startNewsDetailActivity(NewsSearchActivity.this, newsEntity, - mEntrance + "+(游戏新闻搜索[" + searchKey + "])"); - } - }); - } else if (holder instanceof FooterViewHolder) { - FooterViewHolder viewHolder = (FooterViewHolder) holder; - viewHolder.itemView.setPadding(0, 0, 0, 0); - if (isNetworkError) { - viewHolder.loading.setVisibility(View.GONE); - viewHolder.hint.setText(R.string.loading_failed_retry); - viewHolder.itemView.setClickable(true); - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - loadNewsData(page); - } - }); - } else if (isRemove) { - viewHolder.loading.setVisibility(View.GONE); - viewHolder.hint.setText(R.string.loading_complete); - viewHolder.itemView.setClickable(false); - } else { - viewHolder.loading.setVisibility(View.VISIBLE); - viewHolder.hint.setText(R.string.loading); - viewHolder.itemView.setClickable(false); - } - } - - } - - @Override - public int getItemViewType(int position) { - if (position == newsEntities.size()) { - return 0; - } else { - return 1; - } - } - - @Override - public int getItemCount() { - if (newsEntities.isEmpty()) { - return 0; - } - return newsEntities.size() + 1; - } - - } } diff --git a/app/src/main/java/com/gh/gamecenter/PluginActivity.java b/app/src/main/java/com/gh/gamecenter/PluginActivity.java index 0fbfa66695..962b8506dd 100644 --- a/app/src/main/java/com/gh/gamecenter/PluginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/PluginActivity.java @@ -84,7 +84,7 @@ public class PluginActivity extends BaseActivity implements OnRequestCallBackLis protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_plugin)); + setNavigationTitle(getString(R.string.title_plugin)); mNoConn.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java b/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java index adc4c92b54..292395a06f 100644 --- a/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java @@ -124,7 +124,7 @@ public class ReceiverWaitingActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_receive_waiting)); + setNavigationTitle(getString(R.string.title_receive_waiting)); mTitleTv.setTextColor(Color.WHITE); mBackIv.setImageResource(R.drawable.reuse_kc_back); @@ -138,7 +138,7 @@ public class ReceiverWaitingActivity extends BaseActivity { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - RelativeLayout reuse_actionbar = (RelativeLayout) mContentView.findViewById( + RelativeLayout reuse_actionbar = (RelativeLayout) findViewById( R.id.reuse_actionbar); reuse_actionbar.addView(hintTv, params); diff --git a/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java b/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java index 0efd4dde74..37f356076d 100644 --- a/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java @@ -102,7 +102,7 @@ public class SelectUserIconActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_select_user_icon)); + setNavigationTitle(getString(R.string.title_select_user_icon)); sp = PreferenceManager.getDefaultSharedPreferences(this); diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index 87606c27a7..aa662ace24 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -1,56 +1,11 @@ package com.gh.gamecenter; -import android.app.Dialog; -import android.arch.lifecycle.ViewModelProviders; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AlertDialog; -import android.text.TextUtils; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.RelativeLayout; -import android.widget.TextView; -import com.gh.base.BaseActivity; -import com.gh.common.util.DialogUtils; -import com.gh.common.util.EntranceUtils; -import com.gh.common.util.LoginUtils; -import com.gh.common.util.StringUtils; -import com.gh.gamecenter.entity.LoginTokenEntity; -import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.eventbus.EBSkip; -import com.gh.gamecenter.login.UserViewModel; -import com.gh.gamecenter.manager.UserManager; -import com.kyleduo.switchbutton.SwitchButton; -import com.lightgame.download.FileUtils; -import com.lightgame.utils.Utils; -import com.tencent.bugly.beta.Beta; - -import org.greenrobot.eventbus.EventBus; - -import java.io.File; - -import butterknife.BindView; -import butterknife.OnClick; -import rx.Observable; -import rx.Observable.OnSubscribe; -import rx.Observer; -import rx.Subscriber; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; - -import static com.gh.gamecenter.R.id.setting_rl_about; -import static java.lang.Thread.sleep; +import com.halo.assistant.fragment.SettingsFragment; +import com.halo.assistant.ui.IntentFactory; /** * 游戏设置页面 @@ -58,380 +13,18 @@ import static java.lang.Thread.sleep; * @ 吕方 * @since 0814 */ -public class SettingActivity extends BaseActivity implements OnClickListener { - - @BindView(R.id.setting_sb_autoinstall) - SwitchButton mSettingAutoinstallSb; - @BindView(R.id.setting_sb_autodelete) - SwitchButton mSettingAutodeleteSb; - @BindView(R.id.setting_sb_concerngame) - SwitchButton mSettingConcerngameSb; - @BindView(R.id.setting_tv_cache) - TextView mSettingCacheTv; - @BindView(R.id.setting_tv_size) - TextView mSettingSizeTv; - @BindView(R.id.setting_logout_tv) - TextView mSettingLoginType; - @BindView(R.id.setting_logout_rl) - RelativeLayout mSettingLoginRl; - - private SharedPreferences sp; - - private Dialog loadingDialog = null; - - private UserViewModel mUserViewModel; - - private int checkSizeIndex; +@Deprecated +public class SettingActivity extends CommonActivity { @NonNull public static Intent getIntent(Context context, String entrance) { - Intent intent = new Intent(context, SettingActivity.class); - intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); - return intent; - } - - @Override - public void finish() { - saveCurrentSetting(); - super.finish(); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_setting; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - initTitle(getString(R.string.title_settings)); - - mSettingCacheTv.setText(getCacheSize()); - - sp = PreferenceManager.getDefaultSharedPreferences(this); - - final UserViewModel.Factory factory = new UserViewModel.Factory(getApplication()); - mUserViewModel = ViewModelProviders.of(this, factory).get(UserViewModel.class); - - // 未打开下载按钮,显示修复下载按钮 - if (!sp.getBoolean("isShow", true)) { - findViewById(R.id.setting_cv_fix_download).setVisibility(View.VISIBLE); - } - - mSettingAutoinstallSb.setChecked(sp.getBoolean("autoinstall", true)); - mSettingAutodeleteSb.setChecked(sp.getBoolean("autodelete", true)); - mSettingConcerngameSb.setChecked(sp.getBoolean("concerngame", true)); - - checkSizeIndex = sp.getInt("fontsize", 1); - if (checkSizeIndex == 0) { - checkSizeIndex = 1; - } - fontTextSize(checkSizeIndex); - - initLoginStatus(); - } - - private void initLoginStatus() { -// LoginResponseEntity loginToken = LoginUtils.getLoginToken(this); - LoginTokenEntity loginToken = UserManager.getInstance().getLoginTokenEntity(); - if (loginToken != null) { - if (!TextUtils.isEmpty(loginToken.getLoginType())) { - String loginType = loginToken.getLoginType().trim(); - switch (loginType) { - case "qq": - loginType = "QQ"; - break; - case "wechat": - loginType = "微信"; - break; - case "weibo": - loginType = "新浪微博"; - break; - default: - if (loginType.length() == 11) { - String sub1 = loginType.substring(0, 3); - String sub2 = loginType.substring(9, 11); - loginType = StringUtils.buildString(sub1, "******", sub2); - } - break; - } - mSettingLoginType.setText(loginType); - } - mSettingLoginRl.setVisibility(View.VISIBLE); - } else { - mSettingLoginRl.setVisibility(View.GONE); - } - } - - @Override - public void onPause() { - super.onPause(); - saveCurrentSetting(); - } - - private void saveCurrentSetting() { - Editor mEditor = sp.edit(); - mEditor.putBoolean("autoinstall", mSettingAutoinstallSb.isChecked()); - mEditor.putBoolean("autodelete", mSettingAutodeleteSb.isChecked()); - mEditor.putBoolean("concerngame", mSettingConcerngameSb.isChecked()); - mEditor.putInt("fontsize", checkSizeIndex); - mEditor.apply(); - } - - // 获取缓存大小 - private String getCacheSize() { - File ecDir = getExternalCacheDir(); - long cacheLength = getFolderSize(getCacheDir()); - if (ecDir != null) { - cacheLength += getFolderSize(ecDir); - } - return long2Size(cacheLength); - } - - private long getFolderSize(File folder) { - long size = 0; - size += folder.length(); - if (folder.isDirectory()) { - for (File file : folder.listFiles()) { - if (file.isDirectory()) { - size += getFolderSize(file); - } else { - size += file.length(); - } - } - } - return size; - } - - private String long2Size(Long length) { - float m = length / 1024f / 1024f; - String str = Float.toString(m); - int index = str.lastIndexOf("."); - if (index != -1 && str.length() > index + 3) { - str = str.substring(0, index + 3); - } - return str + "M"; - } - - @OnClick({ - R.id.setting_cv_fix_download, - R.id.setting_rl_autoinstall, - R.id.setting_rl_autodelete, - R.id.setting_rl_cache, - R.id.setting_cv_font_size, - R.id.setting_rl_concerngame, - R.id.setting_rl_about, - R.id.setting_logout_rl - }) - @Override - public void onClick(final View v) { - - switch (v.getId()) { - case R.id.setting_cv_fix_download: - Editor editor = sp.edit(); - editor.putBoolean("isShow", true); - editor.putBoolean("isCheckShow", false); - editor.apply(); - toast("修复成功"); - EventBus.getDefault().post(new EBReuse("Refresh")); - finish(); - new Thread() { - @Override - public void run() { - try { - sleep(800); - } catch (InterruptedException e) { - e.printStackTrace(); - } - EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 0)); - } - }.start(); - break; - case R.id.setting_rl_autoinstall: - mSettingAutoinstallSb.performClick(); - break; - case R.id.setting_rl_autodelete: - mSettingAutodeleteSb.performClick(); - break; - case R.id.setting_rl_cache: - DialogUtils.showWarningDialog(this, "清除缓存", "清空缓存后未安装的游戏可能需要重新下载,确定清空?", - new DialogUtils.ConfirmListener() { - @Override - public void onConfirm() { - loadingDialog = DialogUtils.showWaitDialog(SettingActivity.this, "清除缓存中..."); - clearCache(); - } - }); - break; - case R.id.setting_cv_font_size: - fontSize(); - break; - case setting_rl_about: - if (BuildConfig.DEBUG) { - Beta.checkUpgrade(); // 手动检查热补丁 - } - startActivity(AboutActivity.getIntent(this)); - break; - case R.id.setting_rl_concerngame: - mSettingConcerngameSb.performClick(); - break; - case R.id.setting_logout_rl: - DialogUtils.showForceDialog(this, "注销登录", "退出账号即会回到游客状态,很多功能将无法使用(例如评论、客服消息),确定退出吗?", - "确定退出", "取消", new DialogUtils.ConfirmListener() { - @Override - public void onConfirm() { - loadingDialog = DialogUtils.showWaitDialog(SettingActivity.this, "退出登录中..."); - LoginUtils.logout(SettingActivity.this, new LoginUtils.OnLogoutListener() { - @Override - public void onCompleted() { - mUserViewModel.logout(); - if (loadingDialog != null) loadingDialog.dismiss(); - finish(); - } - }); - } - }, null); - break; - default: - break; - } - } - - private void fontTextSize(int i) { - switch (i) { - case 1: - mSettingSizeTv.setText("小字号"); - break; - case 2: - mSettingSizeTv.setText("中字号"); - break; - case 3: - mSettingSizeTv.setText("大字号"); - break; - case 4: - mSettingSizeTv.setText("特大字号"); - break; - } - } - - //设置正文字号 - private void fontSize() { - View inflate = View.inflate(this, R.layout.dialog_font_size, null); - final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); - ((RadioButton) (radioGroup.getChildAt(checkSizeIndex - 1))).setChecked(true); - AlertDialog alertDialog = new AlertDialog.Builder(this, R.style.GhAlertDialog) - .setTitle(getString(R.string.font_primary)) - .setPositiveButton("取消", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }) - .setNegativeButton("确认", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; - - if (checkSizeIndex == 0) { - checkSizeIndex = 4; - } - dialog.cancel(); - saveCurrentSetting(); - fontTextSize(checkSizeIndex); - } - }) - .setView(inflate) - .create(); - alertDialog.show(); - - TextView mesage = (TextView) alertDialog.findViewById(android.R.id.message); - Button positiveBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE); - Button negativeBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_NEGATIVE); - - positiveBtn.setTextSize(14); - positiveBtn.setTextColor(ContextCompat.getColor(this, R.color.theme)); - negativeBtn.setTextSize(14); - negativeBtn.setTextColor(ContextCompat.getColor(this, R.color.theme)); - if (mesage != null) { - mesage.setTextSize(14); - mesage.setTextColor(ContextCompat.getColor(this, R.color.system_bar)); - } - - -// final Dialog dialog = new Dialog(this); -// View inflate = View.inflate(this, R.layout.dialog_font_size, null); -// TextView tv_negative = (TextView) inflate.findViewById(R.id.font_size_negative); -// TextView tv_positive = (TextView) inflate.findViewById(R.id.font_size_positive); -// final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); -// ((RadioButton) (radioGroup.getChildAt(checkSizeIndex - 1))).setChecked(true); -// -// tv_negative.setOnClickListener(new OnClickListener() { -// @Override -// public void onClick(View v) { -// dialog.cancel(); -// } -// }); -// tv_positive.setOnClickListener(new OnClickListener() { -// @Override -// public void onClick(View v) { -// checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; -// -// if (checkSizeIndex == 0) { -// checkSizeIndex = 4; -// } -// dialog.cancel(); -// saveCurrentSetting(); -// fontTextSize(checkSizeIndex); -// } -// }); -// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); -// dialog.setContentView(inflate); -// dialog.show(); - } - - // 清除缓存 - private void clearCache() { - - Observable.create(new OnSubscribe() { - @Override - public void call(Subscriber subscriber) { - - long start = System.currentTimeMillis(); - FileUtils.deleteFolder(getCacheDir()); - FileUtils.deleteFolder(getExternalCacheDir()); - long time = System.currentTimeMillis() - start; - if (time < 1000) { - try { - sleep(1000 - time); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - subscriber.onCompleted(); - } - - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { - @Override - public void onCompleted() { - if (loadingDialog != null) { - loadingDialog.dismiss(); - } - mSettingCacheTv.setText(getCacheSize()); - Utils.toast(SettingActivity.this, "缓存清除成功"); - } - - @Override - public void onError(Throwable e) { - - } - - @Override - public void onNext(Object o) { - - } - }); - +// Intent intent = new Intent(context, SettingActivity.class); +// intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance); +// return intent; + return new IntentFactory.Builder(context) + .setEntrance(entrance) + .setActivity(SettingActivity.class) + .setFragment(SettingsFragment.class).build(); } } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java index 08c5c30ac7..d6f423f9e3 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java @@ -96,7 +96,7 @@ public class ShareCardActivity extends BaseActivity { picName = "shareImg.jpg"; - initTitle(getString(R.string.title_share_card)); + setNavigationTitle(getString(R.string.title_share_card)); //修改沉浸栏以及ActionBar 颜色 mActionbar.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), android.R.color.black)); diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index 19f1680bab..b4cecb1436 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -144,7 +144,7 @@ public class ShareCardPicActivity extends BaseActivity { picName = "shareImgPic.jpg"; currentImgPosition = 0; - initTitle(getString(R.string.title_share_card_pic)); + setNavigationTitle(getString(R.string.title_share_card_pic)); shareArrImg = new Vector<>(); shareArrImg.addAll(arrImg); diff --git a/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java b/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java index fafe319867..8f692247bf 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareGhActivity.java @@ -62,7 +62,7 @@ public class ShareGhActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_share_gh)); + setNavigationTitle(getString(R.string.title_share_gh)); ButterKnife.bind(this); mGhAddress.setText(Html.fromHtml("" + "www.ghzs.com" + "")); diff --git a/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java b/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java index 9a2cd87027..c9403ae5dd 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareGhWfifActivity.java @@ -142,7 +142,7 @@ public class ShareGhWfifActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_share_via_wifi)); + setNavigationTitle(getString(R.string.title_share_via_wifi)); ButterKnife.bind(this); mUriHandlers = new ArrayList<>(); diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 53874dd0da..121f6decb2 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -67,7 +67,7 @@ public class SplashScreenActivity extends BaseActivity { private boolean isNewFirstLaunch; private final static int REQUEST_PERMISSION_TAG = 30001; - private String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, + private String[] mPermissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE}; public static Intent[] getRedirectIntents(Context context, Uri uri) { @@ -155,7 +155,7 @@ public class SplashScreenActivity extends BaseActivity { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { - if (isNewFirstLaunch && EasyPermissions.hasPermissions(this, permissions)) { + if (isNewFirstLaunch && EasyPermissions.hasPermissions(this, mPermissions)) { launch(); } else { return true; @@ -222,7 +222,7 @@ public class SplashScreenActivity extends BaseActivity { DownloadManager.getInstance(this).checkAll(); // 检查权限 - if (EasyPermissions.hasPermissions(this, permissions)) { + if (EasyPermissions.hasPermissions(this, mPermissions)) { if (!isNewFirstLaunch) { long end = System.currentTimeMillis() - start; if (end < 2000) { @@ -244,10 +244,10 @@ public class SplashScreenActivity extends BaseActivity { @AfterPermissionGranted(REQUEST_PERMISSION_TAG) private void checkAndRequestPermission() { - if (EasyPermissions.hasPermissions(this, permissions)) { + if (EasyPermissions.hasPermissions(this, mPermissions)) { launch(); } else { - ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION_TAG); + ActivityCompat.requestPermissions(this, mPermissions, REQUEST_PERMISSION_TAG); } } @@ -364,24 +364,24 @@ public class SplashScreenActivity extends BaseActivity { private class GuidePagerAdapter extends PagerAdapter { - private int[] pics = {R.drawable.splash_01}; + private int[] mPics = {R.drawable.splash_01}; @Override public int getCount() { - return pics.length; + return mPics.length; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = View.inflate(container.getContext(), R.layout.splash_guide_item, null); ImageView ivImage = (ImageView) view.findViewById(R.id.splsh_guide_iv_image); - ivImage.setImageResource(pics[position]); - if (position == pics.length - 1) { + ivImage.setImageResource(mPics[position]); + if (position == mPics.length - 1) { TextView tvSkip = (TextView) view.findViewById(R.id.splsh_guide_tv_skip); tvSkip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (EasyPermissions.hasPermissions(SplashScreenActivity.this, permissions)) { + if (EasyPermissions.hasPermissions(SplashScreenActivity.this, mPermissions)) { launch(); } } diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 513c3d4a8a..afe5d1ceed 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -95,7 +95,7 @@ public class SubjectActivity extends BaseActivity implements OnSubjectTitleListe mId = mBundle.getString(EntranceUtils.KEY_ID); mName = mBundle.getString(EntranceUtils.KEY_NAME); - initTitle(mName); + setNavigationTitle(mName); if (TextUtils.isEmpty(mName) && !TextUtils.isEmpty(mId)) { getSubjectName(mId); diff --git a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java index 2a2e788f6e..933c3cb006 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java @@ -40,7 +40,7 @@ public class SuggestSelectActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_suggest_select)); + setNavigationTitle(getString(R.string.title_suggest_select)); } @OnClick({R.id.suggest_type1, R.id.suggest_type2, R.id.suggest_type3, R.id.suggest_type4, diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 699bb240a1..cbde73f55d 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -181,7 +181,7 @@ public class SuggestionActivity extends BaseActivity implements SuggestTypeAdapt @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.title_suggestion)); + setNavigationTitle(getString(R.string.title_suggestion)); arrType = getResources().getStringArray(R.array.suggestion_type); Bundle extras = getIntent().getExtras(); diff --git a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java index d547cec787..263db5bef1 100644 --- a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java @@ -72,7 +72,7 @@ public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle("光环工具箱"); + setNavigationTitle("光环工具箱"); mRefresh.setColorSchemeResources(R.color.theme); mRefresh.setOnRefreshListener(this); diff --git a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java index 9fd2096f1c..45f01449b2 100644 --- a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java +++ b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java @@ -62,7 +62,7 @@ public class UserInfoActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - initTitle(getString(R.string.personal_userinfo)); + setNavigationTitle(getString(R.string.personal_userinfo)); UserViewModel.Factory factory = new UserViewModel.Factory(getApplication()); UserViewModel userViewModel = ViewModelProviders.of(this, factory).get(UserViewModel.class); diff --git a/app/src/main/java/com/gh/gamecenter/UserInfoEditActivity.java b/app/src/main/java/com/gh/gamecenter/UserInfoEditActivity.java index 56515c40fa..6b66932c1a 100644 --- a/app/src/main/java/com/gh/gamecenter/UserInfoEditActivity.java +++ b/app/src/main/java/com/gh/gamecenter/UserInfoEditActivity.java @@ -95,7 +95,7 @@ public class UserInfoEditActivity extends BaseActivity { params.addRule(RelativeLayout.CENTER_VERTICAL); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.setMargins(0, 0, DisplayUtils.dip2px(this, 18), 0); - RelativeLayout reuse_actionbar = mContentView.findViewById(R.id.reuse_actionbar); + RelativeLayout reuse_actionbar = findViewById(R.id.reuse_actionbar); reuse_actionbar.addView(mSaveTv, params); mUserInfoEntity = UserManager.getInstance().getUserInfoEntity(); @@ -164,7 +164,7 @@ public class UserInfoEditActivity extends BaseActivity { title = ""; break; } - initTitle(title); + setNavigationTitle(title); } private void saveData() { diff --git a/app/src/main/java/com/gh/gamecenter/UserRegionActivity.java b/app/src/main/java/com/gh/gamecenter/UserRegionActivity.java index fb4c60ada5..f2c0d2a388 100644 --- a/app/src/main/java/com/gh/gamecenter/UserRegionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/UserRegionActivity.java @@ -78,13 +78,13 @@ public class UserRegionActivity extends BaseActivity { hideFragments(transaction); if (provinceList == null) { alterFragment(transaction, RegionCounFragment.class); - initTitle(getString(R.string.userinfo_select_region)); + setNavigationTitle(getString(R.string.userinfo_select_region)); } else { mProvFragment = alterFragment(transaction, RegionProvFragment.class); Bundle args = new Bundle(); args.putStringArrayList(EntranceUtils.KEY_PROLIST, new ArrayList<>(provinceList)); mProvFragment.setArguments(args); - initTitle(provinceName); + setNavigationTitle(provinceName); } transaction.commit(); } diff --git a/app/src/main/java/com/gh/gamecenter/VoteActivity.java b/app/src/main/java/com/gh/gamecenter/VoteActivity.java index c66134900c..3733186ce3 100644 --- a/app/src/main/java/com/gh/gamecenter/VoteActivity.java +++ b/app/src/main/java/com/gh/gamecenter/VoteActivity.java @@ -96,7 +96,7 @@ public class VoteActivity extends BaseActivity implements SwipeRefreshLayout.OnR String gameName = getIntent().getExtras().getString(EntranceUtils.KEY_GAMENAME); mGameId = getIntent().getExtras().getString(EntranceUtils.KEY_GAMEID); - initTitle(getString(R.string.title_vote_formatable, gameName)); + setNavigationTitle(getString(R.string.title_vote_formatable, gameName)); layoutManager = new LinearLayoutManager(this); mVoteRv.setLayoutManager(layoutManager); diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.java b/app/src/main/java/com/gh/gamecenter/WebActivity.java index df1ca3dae6..81ac553877 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.java @@ -161,7 +161,7 @@ public class WebActivity extends BaseActivity implements View.OnClickListener{ } // 增加actionBar Button - RelativeLayout reuse_actionbar = mContentView.findViewById(R.id.reuse_actionbar); + RelativeLayout reuse_actionbar = findViewById(R.id.reuse_actionbar); mShareIv = LayoutInflater.from(this).inflate(R.layout.menu_action_share, reuse_actionbar, false); // 绑定parentView 否则会丢失宽高 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mShareIv.getLayoutParams(); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); @@ -188,7 +188,7 @@ public class WebActivity extends BaseActivity implements View.OnClickListener{ } - initTitle(webTitle); + setNavigationTitle(webTitle); webView.loadUrl(webUrl); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java index ddc449ce9e..56a088dd0d 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java @@ -1,5 +1,6 @@ package com.gh.gamecenter.adapter; +import android.app.Activity; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; @@ -8,7 +9,7 @@ import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.StringUtils; import com.gh.gamecenter.ConcernActivity; @@ -42,7 +43,8 @@ public class ConcernAdapter extends BaseRecyclerAdapter { private String mEntrance; - public ConcernAdapter(ConcernActivity context, OnRequestCallBackListener listener, String entrance) { + //TODO remove activity + public ConcernAdapter(Activity context, OnRequestCallBackListener listener, String entrance) { super(context); mListener = listener; mEntrance = entrance; @@ -91,8 +93,6 @@ public class ConcernAdapter extends BaseRecyclerAdapter { public void onBindViewHolder(final ConcernViewHolder holder, int position) { final GameEntity gameEntity = mConcernGameList.get(position); if (mConcernGameList != null && position < mConcernGameList.size()) { - - if (gameEntity.isLibaoExists()) { holder.concern_libao_icon.setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java index dce1a8796f..3ffb7ff117 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java @@ -10,7 +10,7 @@ import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.StringUtils; import com.gh.gamecenter.GameDetailActivity; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index 665a5c6009..ad8470fe1b 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -12,7 +12,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.LinearLayout; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.StringUtils; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index ea2d4eb3c2..54d50a7187 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -12,7 +12,7 @@ import android.view.ViewGroup; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.util.DataLogUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.StringUtils; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java index 5eea883b44..f9a97aeadc 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java @@ -17,7 +17,7 @@ import com.gh.common.constant.ItemViewType; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.BitmapUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java index 268f6e5cfb..071656ffad 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -13,7 +13,7 @@ import com.gh.common.constant.Config; import com.gh.common.util.CommentUtils; import com.gh.common.util.ConcernContentUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index 490acf3079..659e1c1ae5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -9,7 +9,6 @@ import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.LayerDrawable; -import android.net.Uri; import android.preference.PreferenceManager; import android.support.v4.util.ArrayMap; import android.text.TextUtils; @@ -19,7 +18,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; @@ -41,7 +40,6 @@ import com.lightgame.download.DownloadStatus; import com.lightgame.download.FileUtils; import com.lightgame.utils.Utils; -import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java index bcadf67c89..3828886e91 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -6,7 +6,7 @@ import android.view.ViewGroup; import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameTestViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameTestViewHolder.java index 49698a4c5c..ba6f0c338e 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameTestViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameTestViewHolder.java @@ -17,7 +17,7 @@ import com.gh.common.util.StringUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.SubjectEntity; -import com.gh.gamecenter.game.GameFragmentAdapter; +import com.halo.assistant.fragment.game.GameFragmentAdapter; import java.util.Date; import java.util.List; diff --git a/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java b/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java index 9b46e90997..f22b08e1f6 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/SelectGameFragment.java @@ -52,7 +52,7 @@ public class SelectGameFragment extends ListFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - initTitle(getString(R.string.title_select_game)); + setNavigationTitle(getString(R.string.title_select_game)); mParams = (RelativeLayout.LayoutParams) mRvTitle.getLayoutParams(); mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() { diff --git a/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java b/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java index 6df59aac72..dcc76bcefc 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java @@ -12,7 +12,7 @@ import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.fragment.BaseFragment; import com.gh.common.util.CollectionUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; diff --git a/app/src/main/java/com/gh/gamecenter/collection/CollectionFragment.java b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java similarity index 84% rename from app/src/main/java/com/gh/gamecenter/collection/CollectionFragment.java rename to app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java index f8f1e7b304..a8a272039c 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CollectionFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java @@ -17,9 +17,14 @@ import butterknife.BindView; /** * Created by khy on 18/07/17. + * + * 我的收藏viewpager页面 + * */ +public class CollectionWrapperFragment extends BaseFragment_ViewPager_Checkable { -public class CollectionFragment extends BaseFragment_ViewPager_Checkable { + public static final int INDEX_TOOL = 0; + public static final int INDEX_ARTICLE = 1; @BindView(R.id.slidebar_line) View mSlideLine; @@ -27,10 +32,10 @@ public class CollectionFragment extends BaseFragment_ViewPager_Checkable { private LinearLayout.LayoutParams mLayoutParams; private int mWindowWidth; - public static CollectionFragment newInstance(int checkedIndex) { + public static CollectionWrapperFragment newInstance(int checkedIndex) { final Bundle args = new Bundle(1); args.putInt(ARGS_INDEX, checkedIndex); - final CollectionFragment fragment = new CollectionFragment(); + final CollectionWrapperFragment fragment = new CollectionWrapperFragment(); fragment.setArguments(args); return fragment; } @@ -64,7 +69,7 @@ public class CollectionFragment extends BaseFragment_ViewPager_Checkable { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + setNavigationTitle(R.string.collection_title); DisplayMetrics outMetrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics); mWindowWidth = outMetrics.widthPixels / 2; diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index a2e4f799bd..5e9ac9be2c 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -16,7 +16,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.gh.common.util.BitmapUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.NetworkUtils; diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java index 0f886b25d6..ece2e3eb78 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -13,7 +13,7 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.MD5Utils; diff --git a/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java index 93f9c6a41b..bff1a3950c 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/GameFragment.java @@ -24,7 +24,7 @@ import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.gamecenter.game.GameFragmentAdapter; +import com.halo.assistant.fragment.game.GameFragmentAdapter; import com.lightgame.download.DataWatcher; import com.lightgame.download.DownloadEntity; diff --git a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java index aeaec1abc8..503491e008 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -16,7 +16,7 @@ import com.gh.base.SearchBarHint; import com.gh.base.fragment.BaseFragment; import com.gh.common.constant.Config; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.EntranceUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.ConcernActivity; diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java index 25e70d7ec8..fe8d6aeda8 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuliFragment.java @@ -9,7 +9,7 @@ import android.view.View; import com.gh.base.fragment.BaseFragment; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.QQUtils; diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java index c8b3ede32d..fbe19dc13f 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java @@ -6,7 +6,7 @@ import android.view.View; import android.view.ViewGroup; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.ImageUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.ViewImageActivity; diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java index 8f13886eb2..9d3aec5df2 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java @@ -11,7 +11,7 @@ import android.view.ViewGroup; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java index d12fef9b79..e032d0fc2d 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java @@ -4,14 +4,18 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.CheckedTextView; import android.widget.LinearLayout; +import android.widget.TextView; -import com.halo.assistant.HaloApp; import com.gh.base.adapter.FragmentAdapter; import com.gh.base.fragment.BaseFragment; import com.gh.gamecenter.R; +import com.halo.assistant.HaloApp; import java.util.ArrayList; import java.util.List; @@ -22,7 +26,7 @@ import butterknife.OnClick; /** * Created by khy on 20/08/17. */ - +//TODO 改写viewpgerfragment public class KaiFuFragment extends BaseFragment { @BindView(R.id.kaifu_tabbar_today) @@ -38,7 +42,6 @@ public class KaiFuFragment extends BaseFragment { private List mFragments; - @Override protected int getLayoutId() { return R.layout.fragment_kaifu; @@ -47,7 +50,6 @@ public class KaiFuFragment extends BaseFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mFragments = new ArrayList<>(); for (int i = 0; i < 3; i++) { KaiFuVpFragment kaiFuVpFragment = new KaiFuVpFragment(); diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java index e92755cdaa..4af4955d63 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java @@ -44,9 +44,6 @@ import retrofit2.HttpException; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; -import static com.gh.gamecenter.KaiFuActivity.ALL_GAME_KAIFU; -import static com.gh.gamecenter.KaiFuActivity.SINGLE_GAME_KAIFU; - /** * Created by khy on 18/08/17. @@ -324,14 +321,14 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { dialog.cancel(); switch (skipTv.getText().toString()) { case "只看这个游戏": - EventBus.getDefault().post(new EBKaiFuReset(SINGLE_GAME_KAIFU, gameEntity.getId())); + EventBus.getDefault().post(new EBKaiFuReset(KaiFuWrapperFragment.SINGLE_GAME_KAIFU, gameEntity.getId())); break; case "进入游戏详情": GameDetailActivity.startGameDetailActivity(mContext, gameEntity, StringUtils.buildString(entrance, "+(开服表[", String.valueOf(position), "])")); break; case "返回所有游戏": - EventBus.getDefault().post(new EBKaiFuReset(ALL_GAME_KAIFU, gameEntity.getId())); + EventBus.getDefault().post(new EBKaiFuReset(KaiFuWrapperFragment.ALL_GAME_KAIFU, gameEntity.getId())); break; } } diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java new file mode 100644 index 0000000000..8e86da2fd3 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java @@ -0,0 +1,108 @@ +package com.gh.gamecenter.kaifu; + +import android.os.Bundle; +import android.support.v4.app.FragmentTransaction; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.TextView; + +import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.EntranceUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.eventbus.EBKaiFuReset; + +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +/** + * Created by CsHeng on 14/12/2017. + *

+ * 用于控制开服界面的切换 + */ +public class KaiFuWrapperFragment extends BaseFragment { + + public static final String SINGLE_GAME_KAIFU = "SINGLE_GAME_KAIFU"; + public static final String ALL_GAME_KAIFU = "ALL_GAME_KAIFU"; + + private MenuItem mResetMenuItem; + private KaiFuFragment mKaiFuFragment; + private KaiFuFragment mGameKaiFuFragment; + + @Override + protected int getLayoutId() { + return R.layout.fragment_kaifu_wrapper; + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.menu_button, menu); + mResetMenuItem = menu.findItem(R.id.menu_button); + mResetMenuItem.setTitle(R.string.menu_text_reset); + mResetMenuItem.setVisible(false); + final TextView textView = mResetMenuItem.getActionView().findViewById(R.id.tv_menu_button); + textView.setText(R.string.menu_text_reset); + textView.setOnClickListener(this); + } + + @Override + protected boolean handleOnClick(View view) { + switch (view.getId()) { + case R.id.tv_menu_button: + resetFragment(); + return true; + + } + return super.handleOnClick(view); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + setNavigationTitle("开服表"); + + FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); + mKaiFuFragment = new KaiFuFragment(); + fragmentTransaction.add(R.id.layout_fragment_content, mKaiFuFragment); + fragmentTransaction.commit(); + } + + private void resetFragment() { + mKaiFuFragment.setCurPage(mGameKaiFuFragment.getCurPage()); + + mResetMenuItem.setVisible(false); + mKaiFuFragment.onResume(); // 启动观察者 + FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); + fragmentTransaction.remove(mGameKaiFuFragment); + fragmentTransaction.show(mKaiFuFragment); + fragmentTransaction.commit(); + } + + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(EBKaiFuReset reset) { + if (SINGLE_GAME_KAIFU.equals(reset.getControl())) { + mResetMenuItem.setVisible(true); + + FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); + fragmentTransaction.hide(mKaiFuFragment); + mKaiFuFragment.onPause(); + + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_GAMEID, reset.getGameId()); + args.putInt("curPage", mKaiFuFragment.getCurPage()); + + mGameKaiFuFragment = new KaiFuFragment(); + mGameKaiFuFragment.setArguments(args); + + fragmentTransaction.add(R.id.layout_fragment_content, mGameKaiFuFragment, KaiFuFragment.class.getSimpleName()); + fragmentTransaction.commit(); + } else if (ALL_GAME_KAIFU.equals(reset.getControl())) { + resetFragment(); + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/login/LoginFragment.java b/app/src/main/java/com/gh/gamecenter/login/LoginFragment.java new file mode 100644 index 0000000000..ac0153be4d --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/login/LoginFragment.java @@ -0,0 +1,81 @@ +//package com.gh.gamecenter.login; +// +//import android.app.Dialog; +//import android.os.Bundle; +//import android.support.annotation.Nullable; +//import android.view.View; +//import android.widget.LinearLayout; +// +//import com.gh.common.util.DialogUtils; +//import com.gh.common.util.GetLoginDataUtils; +//import com.gh.common.util.LoginUtils; +//import com.gh.gamecenter.R; +//import com.gh.gamecenter.entity.UserInfoEntity; +// +//import org.json.JSONObject; +// +//import butterknife.BindView; +//import butterknife.OnClick; +// +///** +// * Created by khy on 14/08/17. +// */ +// +//public class LoginFragment extends BaseLoginFragment { +// +// @BindView(R.id.login_qq_btn) +// LinearLayout mLoginQqBtn; +// @BindView(R.id.login_wechat_btn) +// LinearLayout mLoginWechatBtn; +// @BindView(R.id.login_weibo_btn) +// LinearLayout mLoginWeiboBtn; +// +// private Dialog loginDialog; +// +// @Override +// public void onCreate(@Nullable Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// setNavigationTitle("登录光环助手"); +// } +// +// @Override +// protected int getLoginLayoutId() { +// return R.layout.fragment_login; +// } +// +// @OnClick({R.id.login_qq_btn, R.id.login_wechat_btn, R.id.login_weibo_btn}) +// public void onViewClicked(View view) { +// switch (view.getId()) { +// case R.id.login_qq_btn: +// GetLoginDataUtils.getInstance(getContext()).QQLogin(this, getActivity()); +// break; +// case R.id.login_weibo_btn: +// GetLoginDataUtils.getInstance(getContext()).WeiBoLogin(this, getActivity()); +// break; +// case R.id.login_wechat_btn: +// GetLoginDataUtils.getInstance(getContext()).WCLogin(this); +// break; +// } +// } +// +// @Override +// public void OnLoginData(JSONObject content, LoginUtils.LoginTag loginTag) { +// loginDialog = DialogUtils.showWaitDialog(getContext(), "登录中..."); +// LoginUtils.login(getContext(), content, loginTag, this); +// } +// +// @Override +// public void onLogin(UserInfoEntity entity, LoginUtils.LoginTag loginTag) { +// super.onLogin(entity, loginTag); +// if (loginDialog != null) { +// loginDialog.dismiss(); +// } +// } +// +// @Override +// public void onLoginFailure() { +// if (loginDialog != null) { +// loginDialog.dismiss(); +// } +// } +//} diff --git a/app/src/main/java/com/gh/gamecenter/login/LoginOldUserFragment.java b/app/src/main/java/com/gh/gamecenter/login/LoginOldUserFragment.java new file mode 100644 index 0000000000..dc4cdc5223 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/login/LoginOldUserFragment.java @@ -0,0 +1,25 @@ +//package com.gh.gamecenter.login; +// +//import android.os.Bundle; +//import android.support.annotation.Nullable; +// +//import com.gh.gamecenter.R; +// +///** +// * Created by khy on 14/08/17. +// */ +// +//public class LoginOldUserFragment extends BaseLoginFragment{ +// +// @Override +// public void onCreate(@Nullable Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// setNavigationTitle("老用户登录"); +// } +// +// @Override +// protected int getLoginLayoutId() { +// return R.layout.fragment_login_olduser; +// } +// +//} diff --git a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java index bd79ff58d1..03bfe217aa 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java @@ -14,7 +14,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.gh.common.util.DataLogUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.MD5Utils; import com.gh.common.util.PackageUtils; @@ -222,8 +222,8 @@ public class UpdateManager { TextView content = (TextView) view.findViewById(R.id.updeta_content); content.setText(Html.fromHtml(appEntity.getContent())); - TextView versison = (TextView) view.findViewById(R.id.update_app_version); - versison.setText(String.format("光环助手V%s更新内容:", appEntity.getVersion())); + TextView version = (TextView) view.findViewById(R.id.update_app_version); + version.setText(String.format("光环助手V%s更新内容:", appEntity.getVersion())); TextView size = (TextView) view.findViewById(R.id.update_app_size); size.setText(String.format("大小:%s", appEntity.getSize())); diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java index d69ac7955e..98d8eb42dc 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java @@ -11,7 +11,7 @@ import android.widget.LinearLayout; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.fragment.BaseFragment; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.StringUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.NewsDetailActivity; diff --git a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java index 6ad405efbb..5c7556ad05 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java @@ -21,7 +21,7 @@ import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.StringUtils; diff --git a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java index 27b7b70d84..1e063dbd9c 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java @@ -15,7 +15,7 @@ import android.widget.TextView; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.fragment.BaseFragment; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.StringUtils; @@ -124,11 +124,11 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override public void call(Void aVoid) { if (mConcernGame.size() > 1 || (mConcernGame.size() == 1 - && !getContext().getString(R.string.ghzs_id).equals(mConcernGame.get(0).getId()))) { + && !getString(R.string.ghzs_id).equals(mConcernGame.get(0).getId()))) { OnSelectGameClickListener(); } else { Intent intent = ConcernActivity.getIntent(getContext(), "资讯(攻略-我关注的游戏)"); - getContext().startActivity(intent); + startActivity(intent); } } }); @@ -162,7 +162,7 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On selectGameRv.setLayoutParams(params); } - int widthPixels = getContext().getResources().getDisplayMetrics().widthPixels; + int widthPixels = getResources().getDisplayMetrics().widthPixels; allGameRl.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10, DisplayUtils.dip2px(getContext(), 50))); @@ -171,7 +171,7 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On public void onClick(View v) { isShowPopupBg(false); Intent intent = ConcernActivity.getIntent(getContext(), "资讯(攻略-我关注的游戏)"); - getContext().startActivity(intent); + startActivity(intent); } }); diff --git a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java index b053221512..9e30e58543 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -11,7 +11,7 @@ import android.widget.LinearLayout; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.fragment.BaseFragment; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.StringUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.NewsDetailActivity; diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java index f31f864d5d..fb4c9e2397 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -25,7 +25,7 @@ import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.CommentUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; diff --git a/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java b/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java index 59d1480222..876351bc9f 100644 --- a/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/normal/NormalFragment.java @@ -12,7 +12,7 @@ import com.gh.gamecenter.NormalActivity; public abstract class NormalFragment extends BaseFragment { - protected void initTitle(String title) { + protected void setNavigationTitle(String title) { if (getActivity() instanceof NormalActivity) { ((NormalActivity) getActivity()).setNavigationTitle(title); } 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 1cc62958a0..378c842c8c 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -18,7 +18,7 @@ import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.fragment.BaseFragment; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.GetLoginDataUtils; import com.gh.common.util.PackageUtils; @@ -28,7 +28,6 @@ import com.gh.gamecenter.LibaoActivity; import com.gh.gamecenter.LoginActivity; import com.gh.gamecenter.MessageActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.SettingActivity; import com.gh.gamecenter.ShareGhActivity; import com.gh.gamecenter.SuggestSelectActivity; import com.gh.gamecenter.SuggestionActivity; @@ -48,6 +47,8 @@ import com.gh.gamecenter.message.MessageFragment; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.halo.assistant.HaloApp; +import com.halo.assistant.ui.IntentFactory; +import com.halo.assistant.fragment.SettingsFragment; import com.lightgame.config.CommonDebug; import com.lightgame.utils.Utils; import com.tencent.connect.common.Constants; @@ -249,8 +250,7 @@ public class PersonalFragment extends BaseFragment implements Observer mWeakReference; + + public MyHandler(AboutFragment fragment) { + mWeakReference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + final AboutFragment fragment = mWeakReference.get(); + if (fragment != null) { + if (msg.what == 0) { + final String version = (String) msg.obj; + fragment.mAboutVersion.setText(StringUtils.buildString("发现新版本 V", version)); + } else if (msg.what == 1) { + fragment.mAboutVersion.setText(R.string.toast_upload_latest); + } + } + } + } + +} diff --git a/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java b/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java new file mode 100644 index 0000000000..d4e47c6c93 --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/ApkCleanerFragment.java @@ -0,0 +1,238 @@ +package com.halo.assistant.fragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.util.ArrayMap; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.view.View; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.DialogUtils; +import com.gh.common.view.VerticalItemDecoration; +import com.gh.gamecenter.MainActivity; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.CleanApkAdapter; +import com.gh.gamecenter.entity.InstallGameEntity; +import com.gh.gamecenter.eventbus.EBSkip; +import com.lightgame.utils.Utils; + +import org.greenrobot.eventbus.EventBus; + +import java.io.File; +import java.text.DecimalFormat; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +/** + * Created by CsHeng on 14/12/2017. + *

+ * 扫描并删除apk + */ +public class ApkCleanerFragment extends BaseFragment implements CleanApkAdapter.OnScanListener { + + @BindView(R.id.apk_count) + TextView mApkCount; + @BindView(R.id.apk_rv) + RecyclerView mApkRv; + @BindView(R.id.delete_btn) + TextView mApkDeleteBtn; + @BindView(R.id.select_game_all) + CheckBox mApkSelectAll; + @BindView(R.id.scan_pb) + ProgressBar mScanPb; + @BindView(R.id.reuse_nodata_skip_tv_hint) + TextView mNodataSkipTv; + @BindView(R.id.reuse_nodata_skip_tv_btn) + TextView mNodataSkipBtn; + @BindView(R.id.reuse_nodata_skip) + LinearLayout mNodataSkipLl; + @BindView(R.id.delete_bottom) + LinearLayout mDeleteBottom; + @BindView(R.id.select_game_installed_ll) + RelativeLayout mInstallAllData; + + private CleanApkAdapter mAdapter; + + @Override + protected int getLayoutId() { + return R.layout.fragment_apk_cleaner; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setNavigationTitle(getString(R.string.title_clean_apk)); + + mNodataSkipLl.setVisibility(View.GONE); + + mAdapter = new CleanApkAdapter(getContext(), this, mApkDeleteBtn, mApkSelectAll); + mApkRv.setLayoutManager(new LinearLayoutManager(getContext())); + mApkRv.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); + mApkRv.setAdapter(mAdapter); + + mApkSelectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + ArrayMap selectPosition = new ArrayMap<>(); + ArrayMap selectPosition1 = mAdapter.getSelectPosition(); + int itemCount = mAdapter.getItemCount(); + if (isChecked) { + for (int i = 0; i < itemCount; i++) { + selectPosition.put(i, true); + } + } else { + int selectCount = 0; + for (Integer integer : selectPosition1.keySet()) { + if (selectPosition1.get(integer)) { + selectCount++; + } + } + + if (selectCount != itemCount) { + return; + } + + for (int i = 0; i < itemCount; i++) { + selectPosition.put(i, false); + } + } + + mAdapter.setSelectPosition(selectPosition); + mAdapter.notifyItemRangeChanged(0, itemCount); + mAdapter.checkBoxControl(isChecked, 0); + } + }); + + mNodataSkipBtn.setText("去首页看看"); + mNodataSkipTv.setText("安装包已清理干净\n快去发现更多好玩的游戏吧!"); + mNodataSkipTv.setLineSpacing(0, 1.5f); + + } + + @OnClick({R.id.delete_btn, R.id.reuse_nodata_skip_tv_btn}) + public void onClick(View view) { + switch (view.getId()) { + case R.id.delete_btn: { + String s = mApkDeleteBtn.getText().toString(); + if ("停止扫描".equals(s)) { + mAdapter.isStopScan(); + } else { + if ("一键删除".equals(s)) { + Utils.toast(getContext(), "请选择需要删除的安装包"); + return; + } + + final List apkList = mAdapter.getApkList(); + final ArrayMap selectPosition = mAdapter.getSelectPosition(); + + for (int i = 0; i < apkList.size(); i++) { + if (selectPosition.get(i) && apkList.get(i).getInstallStatus() == 1) { + DialogUtils.showWarningDialog(getContext(), "删除安装包" + , Html.fromHtml(getString(R.string.delete_apk_hint)) + , "取消 ", "确定" + , new DialogUtils.ConfirmListener() { + @Override + public void onConfirm() { + deleteApk(apkList, selectPosition); + } + }, null); + return; + } + } + + deleteApk(apkList, selectPosition); + } + break; + } + case R.id.reuse_nodata_skip_tv_btn: { + Intent intent = MainActivity.getMainIntent(getContext()); + startActivity(intent); + + mNodataSkipBtn.postDelayed(new Runnable() { + @Override + public void run() { + EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 0)); + } + }, 300); + break; + } + } + } + + private void deleteApk(List apkList, ArrayMap selectPosition) { + long size = 0; + for (int i = 0; i < apkList.size(); i++) { + if (selectPosition.get(i)) { + InstallGameEntity installGameEntity = apkList.get(i); + size = size + installGameEntity.getGameSize(); + File file = new File(installGameEntity.getGamePath()); + if (file.isFile() && file.exists()) { + file.delete(); + mAdapter.deleteApk(i); + i--; + } + } + } + + double allSize = (((float) size / 1024) / 1024); + DecimalFormat df = new DecimalFormat("#.00"); + String sizeName = df.format(allSize) + "MB"; + Utils.toast(getContext(), "删除成功,已为您节省" + sizeName + "空间"); + mApkDeleteBtn.setText("一键删除"); + mAdapter.notifyDataSetChanged(); // 刷新Adapter position + + updateScanData(); + + if (apkList.size() == 0) { // 全部删除 + mNodataSkipLl.setVisibility(View.VISIBLE); + mInstallAllData.setVisibility(View.GONE); + mDeleteBottom.setVisibility(View.GONE); + } + } + + private void updateScanData() { + long allSize = 0; + List apkList = mAdapter.getApkList(); + for (InstallGameEntity installGameEntity : apkList) { + allSize = allSize + installGameEntity.getGameSize(); + } + + double size = (((float) allSize / 1024) / 1024); + DecimalFormat df = new DecimalFormat("0.00"); + String sizeName = df.format(size) + "MB"; + + mApkCount.setText(Html.fromHtml(getString(R.string.clean_apk_count, apkList.size(), sizeName))); + } + + @Override + public void onScanOver() { + mApkDeleteBtn.setText("立即删除"); + mApkDeleteBtn.setBackgroundResource(R.drawable.game_item_btn_red_style); + + updateScanData(); + + mScanPb.setVisibility(View.GONE); + mApkSelectAll.setVisibility(View.VISIBLE); + mApkSelectAll.setChecked(true); + } + + @Override + public void noData() { + mNodataSkipBtn.setText("去首页看看"); + mNodataSkipTv.setText("暂无安装包"); + mNodataSkipLl.setVisibility(View.VISIBLE); + mInstallAllData.setVisibility(View.GONE); + mDeleteBottom.setVisibility(View.GONE); + } + +} diff --git a/app/src/main/java/com/halo/assistant/fragment/ConcernFragment.java b/app/src/main/java/com/halo/assistant/fragment/ConcernFragment.java new file mode 100644 index 0000000000..7d86adcaf4 --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/ConcernFragment.java @@ -0,0 +1,207 @@ +package com.halo.assistant.fragment; + +import android.os.Bundle; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.gh.base.OnRequestCallBackListener; +import com.gh.base.fragment.BaseFragment; +import com.gh.common.view.Concern_LinearLayout; +import com.gh.gamecenter.LoginActivity; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.ConcernAdapter; +import com.gh.gamecenter.adapter.ConcernRecommendAdapter; +import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.eventbus.EBConcernChanged; +import com.gh.gamecenter.eventbus.EBReuse; + +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +import static com.gh.gamecenter.personal.PersonalFragment.LOGIN_TAG; + +/** + * Created by CsHeng on 14/12/2017. + *

+ * 关注页面 + */ +public class ConcernFragment extends BaseFragment implements View.OnClickListener, OnRequestCallBackListener { + + @BindView(R.id.concern_rv_show) + RecyclerView mConcernRv; + @BindView(R.id.concern_rv_recommend) + RecyclerView mConcernRecommendRv; + @BindView(R.id.concern_rl_title) + RelativeLayout mConcernTitleRl; + @BindView(R.id.reuse_none_data) + LinearLayout mNoneData; + @BindView(R.id.reuse_tv_none_data) + TextView mNoDataTv; + @BindView(R.id.reuse_no_connection) + LinearLayout mNoConn; + + private ConcernAdapter concernAdapter; + private ConcernRecommendAdapter concernRecommendAdapter; + + @Override + protected int getLayoutId() { + return R.layout.fragment_concern; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setNavigationTitle(getString(R.string.title_concern)); + + mConcernTitleRl.setOnClickListener(this); + + mConcernRv.setHasFixedSize(true); + mConcernRv.setLayoutManager(new GridLayoutManager(getContext(), 3)); + concernAdapter = new ConcernAdapter(getActivity(), this, mEntrance); + mConcernRv.setAdapter(concernAdapter); + + mConcernRecommendRv.setHasFixedSize(true); + mConcernRecommendRv.setLayoutManager(new GridLayoutManager(getContext(), 4)); + + } + + @Override + public void loadDone() { // 关注推荐 回调 + mConcernTitleRl.setVisibility(View.VISIBLE); + mConcernRecommendRv.setVisibility(View.VISIBLE); + int size = concernRecommendAdapter.getRecommendGameList().size(); + mConcernRecommendRv.setLayoutManager(new GridLayoutManager(getContext(), size > 4 ? 4 : size)); + mConcernRecommendRv.getAdapter().notifyDataSetChanged(); + } + + // 关注的游戏加载完成 再加载热门推荐(根据已关注的游戏过滤) + @Override + public void loadDone(Object obj) { + mNoConn.setVisibility(View.GONE); + mNoneData.setVisibility(View.GONE); + + concernRecommendAdapter = new ConcernRecommendAdapter(getContext(), this, (List) obj, mEntrance); + mConcernRecommendRv.setAdapter(concernRecommendAdapter); + + if (obj == null) { // 未登录状态 + mNoneData.setVisibility(View.VISIBLE); + mConcernRv.setVisibility(View.GONE); + mNoDataTv.setText(R.string.login_hint); + mNoDataTv.setTextColor(ContextCompat.getColor(getContext(), R.color.theme)); + } + } + + @Override + public void loadError() { + mNoConn.setVisibility(View.VISIBLE); + mNoneData.setVisibility(View.GONE); + } + + @Override + public void loadEmpty() { + if (concernAdapter.getConcernGameList() == null + || concernAdapter.getConcernGameList().isEmpty()) { + mNoneData.setVisibility(View.VISIBLE); + mConcernRv.setVisibility(View.GONE); + mNoDataTv.setText(R.string.game_empty); + mNoDataTv.setTextColor(ContextCompat.getColor(getContext(), R.color.c7c7c7)); + } + if (concernRecommendAdapter.getRecommendGameList() == null + || concernRecommendAdapter.getRecommendGameList().isEmpty()) { + mConcernTitleRl.setVisibility(View.GONE); + mConcernRecommendRv.setVisibility(View.GONE); + } else { + if (concernRecommendAdapter.getRecommendGameList().size() < 4) { + mConcernRecommendRv.setLayoutManager( + new GridLayoutManager(getContext(), concernRecommendAdapter.getRecommendGameList().size())); + } + } + } + + @OnClick({R.id.concern_rl_title, R.id.reuse_tv_none_data}) + public void onClick(View v) { + switch (v.getId()) { + case R.id.concern_rl_title: + if (mConcernRecommendRv.getVisibility() == View.VISIBLE) { + ((Concern_LinearLayout) view).hideRecyclerView(); + } else { + ((Concern_LinearLayout) view).showRecyclerView(); + } + break; + case R.id.reuse_tv_none_data: + String hint = getString(R.string.login_hint); + if (hint.equals(mNoDataTv.getText().toString())) + startActivity(LoginActivity.getIntent(getContext())); + break; + } + } + + // 关注事件 + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(EBConcernChanged changed) { + if (!changed.isSingle()) { + return; + } + if (changed.isConcern()) { + GameEntity concernGame = concernRecommendAdapter.concernGame(changed.getGameId()); + + if (concernGame != null) { + concernAdapter.getConcernGameList().add(0, concernGame); + concernAdapter.notifyDataSetChanged(); + if (mNoneData.getVisibility() == View.VISIBLE) { + mNoneData.setVisibility(View.GONE); + mConcernRv.setVisibility(View.VISIBLE); + } + } + + for (int i = 0, size = concernRecommendAdapter.getRecommendGameList().size(); i < size; i++) { + if (changed.getGameId().equals(concernRecommendAdapter.getRecommendGameList().get(i).getId())) { + concernRecommendAdapter.getRecommendGameList().remove(i); + concernRecommendAdapter.notifyItemRemoved(i); // 删除动画 + concernRecommendAdapter.notifyDataSetChanged(); // 防止列表串行 + if (concernRecommendAdapter.getRecommendGameList().isEmpty()) { + mConcernTitleRl.setVisibility(View.GONE); + mConcernRecommendRv.setVisibility(View.GONE); + } + break; + } + } + } else { + GameEntity gameEntity = concernAdapter.cancelConcern(changed.getGameId()); + if (gameEntity != null) { + concernRecommendAdapter.getRecommendGameList().add(0, gameEntity); + concernRecommendAdapter.notifyDataSetChanged(); + } + + if (concernRecommendAdapter.getRecommendGameList().isEmpty()) { + mConcernTitleRl.setVisibility(View.GONE); + mConcernRecommendRv.setVisibility(View.GONE); + } else { + mConcernTitleRl.setVisibility(View.VISIBLE); + mConcernRecommendRv.setVisibility(View.VISIBLE); + } + } + } + + // 登录事件 + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(EBReuse reuse) { + if (reuse.getType().equals(LOGIN_TAG)) { // 登入 + concernAdapter = new ConcernAdapter(getActivity(), this, mEntrance); + mConcernRv.setAdapter(concernAdapter); + mConcernRv.setVisibility(View.VISIBLE); + } + } + +} diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java new file mode 100644 index 0000000000..faf1c09c57 --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java @@ -0,0 +1,394 @@ +package com.halo.assistant.fragment; + +import android.app.Dialog; +import android.arch.lifecycle.ViewModelProviders; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AlertDialog; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.DialogUtils; +import com.gh.common.util.LoginUtils; +import com.gh.common.util.StringUtils; +import com.gh.gamecenter.AboutActivity; +import com.gh.gamecenter.BuildConfig; +import com.gh.gamecenter.MainActivity; +import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.LoginTokenEntity; +import com.gh.gamecenter.eventbus.EBReuse; +import com.gh.gamecenter.eventbus.EBSkip; +import com.gh.gamecenter.login.UserViewModel; +import com.gh.gamecenter.manager.UserManager; +import com.kyleduo.switchbutton.SwitchButton; +import com.lightgame.download.FileUtils; +import com.lightgame.utils.Utils; +import com.tencent.bugly.beta.Beta; + +import org.greenrobot.eventbus.EventBus; + +import java.io.File; + +import butterknife.BindView; +import butterknife.OnClick; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +import static com.gh.gamecenter.R.id.setting_rl_about; +import static java.lang.Thread.sleep; + +/** + * Created by CsHeng on 12/12/2017. + */ +public class SettingsFragment extends BaseFragment { + + @BindView(R.id.setting_sb_autoinstall) + SwitchButton mSettingAutoinstallSb; + @BindView(R.id.setting_sb_autodelete) + SwitchButton mSettingAutodeleteSb; + @BindView(R.id.setting_sb_concerngame) + SwitchButton mSettingConcerngameSb; + @BindView(R.id.setting_tv_cache) + TextView mSettingCacheTv; + @BindView(R.id.setting_tv_size) + TextView mSettingSizeTv; + @BindView(R.id.setting_logout_tv) + TextView mSettingLoginType; + @BindView(R.id.setting_logout_rl) + RelativeLayout mSettingLoginRl; + + private SharedPreferences sp; + + private Dialog loadingDialog = null; + + private UserViewModel mUserViewModel; + + private int checkSizeIndex; + + @Override + public void onStop() { + saveCurrentSetting(); + super.onStop(); + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_setting; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setNavigationTitle(getString(R.string.title_settings)); + + mSettingCacheTv.setText(getCacheSize()); + + sp = PreferenceManager.getDefaultSharedPreferences(getContext()); + + final UserViewModel.Factory factory = new UserViewModel.Factory(getActivity().getApplication()); + mUserViewModel = ViewModelProviders.of(this, factory).get(UserViewModel.class); + + // 未打开下载按钮,显示修复下载按钮 + if (!sp.getBoolean("isShow", true)) { + view.findViewById(R.id.setting_cv_fix_download).setVisibility(View.VISIBLE); + } + + mSettingAutoinstallSb.setChecked(sp.getBoolean("autoinstall", true)); + mSettingAutodeleteSb.setChecked(sp.getBoolean("autodelete", true)); + mSettingConcerngameSb.setChecked(sp.getBoolean("concerngame", true)); + + checkSizeIndex = sp.getInt("fontsize", 1); + if (checkSizeIndex == 0) { + checkSizeIndex = 1; + } + fontTextSize(checkSizeIndex); + + initLoginStatus(); + } + + private void initLoginStatus() { +// LoginResponseEntity loginToken = LoginUtils.getLoginToken(getContext()); + LoginTokenEntity loginToken = UserManager.getInstance().getLoginTokenEntity(); + if (loginToken != null) { + if (!TextUtils.isEmpty(loginToken.getLoginType())) { + String loginType = loginToken.getLoginType().trim(); + switch (loginType) { + case "qq": + loginType = "QQ"; + break; + case "wechat": + loginType = "微信"; + break; + case "weibo": + loginType = "新浪微博"; + break; + default: + if (loginType.length() == 11) { + String sub1 = loginType.substring(0, 3); + String sub2 = loginType.substring(9, 11); + loginType = StringUtils.buildString(sub1, "******", sub2); + } + break; + } + mSettingLoginType.setText(loginType); + } + mSettingLoginRl.setVisibility(View.VISIBLE); + } else { + mSettingLoginRl.setVisibility(View.GONE); + } + } + + @Override + public void onPause() { + super.onPause(); + saveCurrentSetting(); + } + + private void saveCurrentSetting() { + SharedPreferences.Editor mEditor = sp.edit(); + mEditor.putBoolean("autoinstall", mSettingAutoinstallSb.isChecked()); + mEditor.putBoolean("autodelete", mSettingAutodeleteSb.isChecked()); + mEditor.putBoolean("concerngame", mSettingConcerngameSb.isChecked()); + mEditor.putInt("fontsize", checkSizeIndex); + mEditor.apply(); + } + + // 获取缓存大小 + private String getCacheSize() { + File ecDir = getContext().getExternalCacheDir(); + long cacheLength = getFolderSize(getContext().getCacheDir()); + if (ecDir != null) { + cacheLength += getFolderSize(ecDir); + } + return long2Size(cacheLength); + } + + private long getFolderSize(File folder) { + long size = 0; + size += folder.length(); + if (folder.isDirectory()) { + for (File file : folder.listFiles()) { + if (file.isDirectory()) { + size += getFolderSize(file); + } else { + size += file.length(); + } + } + } + return size; + } + + private String long2Size(Long length) { + float m = length / 1024f / 1024f; + String str = Float.toString(m); + int index = str.lastIndexOf("."); + if (index != -1 && str.length() > index + 3) { + str = str.substring(0, index + 3); + } + return str + "M"; + } + + @OnClick({ + R.id.setting_cv_fix_download, + R.id.setting_rl_autoinstall, + R.id.setting_rl_autodelete, + R.id.setting_rl_cache, + R.id.setting_cv_font_size, + R.id.setting_rl_concerngame, + R.id.setting_rl_about, + R.id.setting_logout_rl + }) + @Override + public void onClick(final View v) { + + switch (v.getId()) { + case R.id.setting_cv_fix_download: + SharedPreferences.Editor editor = sp.edit(); + editor.putBoolean("isShow", true); + editor.putBoolean("isCheckShow", false); + editor.apply(); + toast("修复成功"); + EventBus.getDefault().post(new EBReuse("Refresh")); + getActivity().finish(); + new Thread() { + @Override + public void run() { + try { + sleep(800); + } catch (InterruptedException e) { + e.printStackTrace(); + } + EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_GAMEFRAGMENT, 0)); + } + }.start(); + break; + case R.id.setting_rl_autoinstall: + mSettingAutoinstallSb.performClick(); + break; + case R.id.setting_rl_autodelete: + mSettingAutodeleteSb.performClick(); + break; + case R.id.setting_rl_cache: + DialogUtils.showWarningDialog(getContext(), "清除缓存", "清空缓存后未安装的游戏可能需要重新下载,确定清空?", + new DialogUtils.ConfirmListener() { + @Override + public void onConfirm() { + loadingDialog = DialogUtils.showWaitDialog(getContext(), "清除缓存中..."); + clearCache(); + } + }); + break; + case R.id.setting_cv_font_size: + fontSize(); + break; + case setting_rl_about: + if (BuildConfig.DEBUG) { + Beta.checkUpgrade(); // 手动检查热补丁 + } + startActivity(AboutActivity.getIntent(getContext())); + break; + case R.id.setting_rl_concerngame: + mSettingConcerngameSb.performClick(); + break; + case R.id.setting_logout_rl: + DialogUtils.showForceDialog(getContext(), "注销登录", "退出账号即会回到游客状态,很多功能将无法使用(例如评论、客服消息),确定退出吗?", + "确定退出", "取消", new DialogUtils.ConfirmListener() { + @Override + public void onConfirm() { + loadingDialog = DialogUtils.showWaitDialog(getContext(), "退出登录中..."); + LoginUtils.logout(getContext(), new LoginUtils.OnLogoutListener() { + @Override + public void onCompleted() { + mUserViewModel.logout(); + if (loadingDialog != null) loadingDialog.dismiss(); + getActivity().finish(); + } + }); + } + }, null); + break; + default: + break; + } + } + + private void fontTextSize(int i) { + switch (i) { + case 1: + mSettingSizeTv.setText("小字号"); + break; + case 2: + mSettingSizeTv.setText("中字号"); + break; + case 3: + mSettingSizeTv.setText("大字号"); + break; + case 4: + mSettingSizeTv.setText("特大字号"); + break; + } + } + + //设置正文字号 + private void fontSize() { + View inflate = View.inflate(getContext(), R.layout.dialog_font_size, null); + final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); + ((RadioButton) (radioGroup.getChildAt(checkSizeIndex - 1))).setChecked(true); + AlertDialog alertDialog = new AlertDialog.Builder(getContext(), R.style.GhAlertDialog) + .setTitle(getString(R.string.font_primary)) + .setPositiveButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }) + .setNegativeButton("确认", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; + + if (checkSizeIndex == 0) { + checkSizeIndex = 4; + } + dialog.cancel(); + saveCurrentSetting(); + fontTextSize(checkSizeIndex); + } + }) + .setView(inflate) + .create(); + alertDialog.show(); + + TextView mesage = (TextView) alertDialog.findViewById(android.R.id.message); + Button positiveBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE); + Button negativeBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_NEGATIVE); + + positiveBtn.setTextSize(14); + positiveBtn.setTextColor(ContextCompat.getColor(getContext(), R.color.theme)); + negativeBtn.setTextSize(14); + negativeBtn.setTextColor(ContextCompat.getColor(getContext(), R.color.theme)); + if (mesage != null) { + mesage.setTextSize(14); + mesage.setTextColor(ContextCompat.getColor(getContext(), R.color.system_bar)); + } + + } + + // 清除缓存 + private void clearCache() { + + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + + long start = System.currentTimeMillis(); + FileUtils.deleteFolder(getContext().getCacheDir()); + FileUtils.deleteFolder(getContext().getExternalCacheDir()); + long time = System.currentTimeMillis() - start; + if (time < 1000) { + try { + sleep(1000 - time); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + subscriber.onCompleted(); + } + + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + if (loadingDialog != null) { + loadingDialog.dismiss(); + } + mSettingCacheTv.setText(getCacheSize()); + Utils.toast(getContext(), "缓存清除成功"); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onNext(Object o) { + + } + }); + + } + +} diff --git a/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java b/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java new file mode 100644 index 0000000000..c92da566c3 --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java @@ -0,0 +1,231 @@ +package com.halo.assistant.fragment.comment; + +import android.app.Dialog; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.ScrollView; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.CheckLoginUtils; +import com.gh.common.util.DialogUtils; +import com.gh.common.util.EntranceUtils; +import com.gh.common.util.ImageUtils; +import com.gh.common.util.PostCommentUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.CommentDetailAdapter; +import com.gh.gamecenter.adapter.OnCommentCallBackListener; +import com.gh.gamecenter.entity.CommentEntity; +import com.gh.gamecenter.entity.UserInfoEntity; +import com.gh.gamecenter.manager.UserManager; +import com.lightgame.utils.Util_System_Keyboard; + +import org.json.JSONException; +import org.json.JSONObject; + +import butterknife.BindView; +import butterknife.OnClick; +import butterknife.OnTouch; +import retrofit2.HttpException; + +/** + * Created by CsHeng on 14/12/2017. + *

+ * 评论详情页面 + * TODO: 16/11/17 时间比较紧 先暂时这么做 最好发表评论那块和评论详情整合 + */ +public class CommentDetailFragment extends BaseFragment implements OnCommentCallBackListener { + + @BindView(R.id.comment_detail_rv) + RecyclerView mRecyclerView; + @BindView(R.id.comment_detail_close_comment) + View mCommentDetailCloseComment; + @BindView(R.id.comment_detail_comment_et) + EditText mCommentDetailCommentEt; + @BindView(R.id.comment_user_icon) + SimpleDraweeView mCommentUserIcon; + @BindView(R.id.comment_user_name) + TextView mCommentUserName; + @BindView(R.id.comment_send) + TextView mCommentSend; + @BindView(R.id.comment_detail_user_rl) + RelativeLayout mCommentDetailUserRl; + @BindView(R.id.comment_detail_comment_rl) + RelativeLayout mCommentDetailCommentRl; + @BindView(R.id.comment_detail_sv) + ScrollView mCommentDetailSv; + @BindView(R.id.reuse_none_data) + View mNoData; + + private Dialog mSendingDialog; + + private UserInfoEntity mUserInfo; + private CommentEntity mCommentEntity; // 回复评论的实体 用完马上清空 + + private CommentDetailAdapter mAdapter; + private LinearLayoutManager mLayoutManager; + + @Override + protected int getLayoutId() { + return R.layout.fragment_comment_detail; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setNavigationTitle(getString(R.string.title_comment_detail)); + + String commentId = getArguments().getString(EntranceUtils.KEY_COMMENTID); + + mAdapter = new CommentDetailAdapter(getContext(), commentId, this, mNoData, mRecyclerView); + mLayoutManager = new LinearLayoutManager(getContext()); + mRecyclerView.setLayoutManager(mLayoutManager); + mRecyclerView.setAdapter(mAdapter); + + mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_IDLE && !mAdapter.isOver() && !mAdapter.isLoading()) { + mAdapter.loadData(mAdapter.getItemCount()); + } + } + }); + + mUserInfo = UserManager.getInstance().getUserInfoEntity(); + if (mUserInfo != null) { + ImageUtils.Companion.display(mCommentUserIcon, mUserInfo.getIcon()); + mCommentUserName.setText(mUserInfo.getName()); + } + } + + @Override + public void onCommentCallback(CommentEntity entity) { + mCommentEntity = entity; + setSoftInput(true); + } + + @OnTouch(R.id.comment_detail_close_comment) + public boolean OnRecyclerTouchListener() { + if (mCommentDetailCloseComment.getVisibility() == View.VISIBLE) { + setSoftInput(false); + } + return true; + } + + @OnClick(R.id.comment_send) + public void OnSendCommentListener() { + final String content = mCommentDetailCommentEt.getText().toString(); + + if (content.length() == 0) { + toast("评论内容不能为空!"); + return; + } + + mSendingDialog = DialogUtils.showWaitDialog(getContext(), getString(R.string.post_dialog_hint)); + + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("content", content); + } catch (JSONException e) { + e.printStackTrace(); + } + if (mCommentEntity != null && mCommentEntity.getId() == null) { + toast("评论异常 id null"); + mSendingDialog.cancel(); + return; + } + + PostCommentUtils.addCommentData(getContext(), null, jsonObject.toString(), mCommentEntity, + new PostCommentUtils.PostCommentListener() { + @Override + public void postSuccess(JSONObject response) { + mSendingDialog.dismiss(); + toast("发表成功"); + mCommentDetailCommentEt.setText(""); + + setSoftInput(false); + + } + + @Override + public void postFailed(Throwable e) { + mSendingDialog.dismiss(); + + if (e instanceof HttpException) { + HttpException exception = (HttpException) e; + if (exception.code() == 403) { + try { + JSONObject errorJson = new JSONObject(exception.response().errorBody().string()); + String detail = errorJson.getString("detail"); + switch (detail) { + case "too frequent": + toast(getString(R.string.comment_failed_toofrequent)); + break; + case "user blocked": + toast(getString(R.string.comment_failed_userblocked)); + break; + case "article blocked": + toast(getString(R.string.comment_failed_articleblocked)); + setSoftInput(false); + break; + case "illegal": + toast(getString(R.string.comment_failed_illegal)); + break; + default: + toast(getString(R.string.comment_failed_unknown)); + break; + } + } catch (Exception ex) { + ex.printStackTrace(); + toast("评论异常"); + } + return; + } + } + + toast(getString(R.string.post_failure_hint)); + } + }); + } + + //软键盘控制 + private void setSoftInput(boolean isShow) { + if (isShow) { + CheckLoginUtils.checkLogin(getContext(), new CheckLoginUtils.OnLoggenInListener() { + @Override + public void onLoggedIn() { + Util_System_Keyboard.showSoftKeyboard(getContext(), mCommentDetailCommentEt); + mCommentDetailCommentRl.setVisibility(View.VISIBLE); + mCommentDetailCommentEt.setFocusable(true); + mCommentDetailCommentEt.setFocusableInTouchMode(true); + mCommentDetailCommentEt.requestFocus(); + mCommentDetailCloseComment.setVisibility(View.VISIBLE); + + if (mCommentEntity != null && mCommentEntity.getUser() != null) { + mCommentDetailCommentEt.setHint(getString(R.string.comment_repty_hint, mCommentEntity.getUser().getName())); + } else { + mCommentDetailCommentEt.setHint(getString(R.string.message_detail_comment_hint)); + } + } + }); + } else { + Util_System_Keyboard.hideSoftKeyboard(getContext(), mCommentDetailCommentEt); + + mCommentDetailCloseComment.setVisibility(View.GONE); + + mCommentDetailCommentRl.setVisibility(View.GONE); + if (mCommentEntity != null) { + mCommentEntity = null; // 清空当前评论实体 + mCommentDetailCommentEt.setHint(getString(R.string.message_detail_comment_hint)); + mCommentDetailCommentEt.setText(""); + } + } + + } +} diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java b/app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java similarity index 99% rename from app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java rename to app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java index e332a30041..15e73f16c5 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GameFragmentAdapter.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.game; +package com.halo.assistant.fragment.game; import android.content.Intent; import android.graphics.Color; @@ -25,7 +25,7 @@ import com.gh.base.OnRequestCallBackListener; import com.gh.common.constant.ItemViewType; import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; +import com.gh.gamecenter.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameUtils; diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java new file mode 100644 index 0000000000..41a58412fa --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java @@ -0,0 +1,217 @@ +package com.halo.assistant.fragment.game; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.util.ArrayMap; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.DisplayUtils; +import com.gh.common.util.EntranceUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.GameNewsAdapter; +import com.gh.gamecenter.adapter.GameNewsTypeListAdapter; +import com.gh.gamecenter.eventbus.EBTypeChange; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; + +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import retrofit2.HttpException; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +/** + * 游戏新闻搜索界面 + *

+ * Created by CsHeng on 14/12/2017. + */ +public class GameNewsSearchFragment extends BaseFragment { + + @BindView(R.id.game_news_list) + RecyclerView mGameNewsRv; + @BindView(R.id.game_news_top_type_list) + RecyclerView mGameNewsTypeRv; + @BindView(R.id.reuse_none_data) + LinearLayout mNoDataLl; + @BindView(R.id.reuse_tv_none_data) + TextView mNoDataTv; + + private GameNewsAdapter mGameNewsAdapter; + private GameNewsTypeListAdapter mTypeListAdapter; + private LinearLayoutManager mLayoutManager; + private MenuItem mMenuItemSearch; + + private ArrayMap mAdapterMap; + private List mTypeList; + private String mGameId; + private float mStartY = 0; + + public static GameNewsSearchFragment newInstance(String gameName, String gameId, String entrance) { + final GameNewsSearchFragment fragment = new GameNewsSearchFragment(); + Bundle args = new Bundle(); + args.putString(EntranceUtils.KEY_GAMENAME, gameName); + args.putString(EntranceUtils.KEY_GAMEID, gameId); + args.putString(EntranceUtils.KEY_ENTRANCE, entrance); + fragment.setArguments(args); + return fragment; + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_game_news_search; + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.menu_search_white, menu); + mMenuItemSearch = menu.findItem(R.id.menu_search); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_search: + mGameNewsRv.scrollToPosition(0); + mGameNewsTypeRv.setVisibility(View.GONE); + mMenuItemSearch.setVisible(false); + mGameNewsAdapter.openKeyBoard(); + break; + } + return super.onOptionsItemSelected(item); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setHasOptionsMenu(true); + + Bundle args = getArguments(); + + String gameName = args.getString(EntranceUtils.KEY_GAMENAME); + setNavigationTitle(gameName); + + mNoDataTv.setText("暂无内容"); + + mAdapterMap = new ArrayMap<>(); + mTypeList = new ArrayList<>(); + + mGameId = args.getString(EntranceUtils.KEY_GAMEID); + + mLayoutManager = new LinearLayoutManager(getContext()); + mGameNewsRv.setHasFixedSize(true); + mGameNewsRv.setLayoutManager(mLayoutManager); + mGameNewsRv.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (mGameNewsAdapter != null && newState == RecyclerView.SCROLL_STATE_IDLE + && mLayoutManager.findLastVisibleItemPosition() == mGameNewsAdapter.getItemCount() - 1) { + if (!mGameNewsAdapter.isRemove() && !mGameNewsAdapter.isLoading() && !mGameNewsAdapter.isNetworkError()) { + mGameNewsAdapter.addList(mGameNewsAdapter.getNewsList().size()); + } + } + } + + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + + if (mLayoutManager.findFirstVisibleItemPosition() >= 1) { + mGameNewsTypeRv.setVisibility(View.VISIBLE); + mMenuItemSearch.setVisible(true); + } else { + mGameNewsTypeRv.setVisibility(View.GONE); + mMenuItemSearch.setVisible(false); + } + + } + }); + + mGameNewsTypeRv.setHasFixedSize(true); + mGameNewsTypeRv.setLayoutManager(new GridLayoutManager(getContext(), 5)); + + //禁止由于滑动出现的阴影 + mGameNewsTypeRv.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + mStartY = event.getY(); + } else if (event.getAction() == MotionEvent.ACTION_MOVE) { + if (Math.abs(mStartY - event.getY()) > 0) { + return true; + } + } + return false; + } + }); + + if (!TextUtils.isEmpty(mGameId)) { + getGameArticleType(); + } + } + + private void getGameArticleType() { + RetrofitManager.getInstance(getContext()).getApi() + .getGameArticleType(mGameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>() { + @Override + public void onResponse(List response) { + super.onResponse(response); + mTypeList = response; + mTypeList.add(0, "全部"); + mGameNewsAdapter = new GameNewsAdapter(getContext(), mTypeList, mGameNewsRv, mGameId, "全部", mEntrance, mNoDataLl); + mAdapterMap.put("全部", mGameNewsAdapter); + mGameNewsRv.setAdapter(mGameNewsAdapter); + + mTypeListAdapter = new GameNewsTypeListAdapter(getContext(), mTypeList, "全部"); + mGameNewsTypeRv.setAdapter(mTypeListAdapter); + + ViewGroup.LayoutParams params = mGameNewsTypeRv.getLayoutParams(); + params.height = (int) Math.ceil(mTypeList.size() / 5f) * DisplayUtils.dip2px(getContext(), 35) + + DisplayUtils.dip2px(getContext(), 12); + mGameNewsTypeRv.setLayoutParams(params); + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + } + }); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(EBTypeChange change) { + mGameNewsAdapter = mAdapterMap.get(change.getType()); + if (mGameNewsAdapter == null) { + mGameNewsAdapter = new GameNewsAdapter(getContext(), mTypeList, mGameNewsRv, mGameId, change.getType(), mEntrance, mNoDataLl); + mAdapterMap.put(change.getType(), mGameNewsAdapter); + } + mGameNewsRv.setAdapter(mGameNewsAdapter); + + mGameNewsTypeRv.setVisibility(View.GONE); + mMenuItemSearch.setVisible(false); + mTypeListAdapter.setNewsType(change.getType(), change.getPosition()); + } + +} diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java new file mode 100644 index 0000000000..8c66d0a08f --- /dev/null +++ b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java @@ -0,0 +1,309 @@ +package com.halo.assistant.fragment.game; + +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.gh.base.fragment.BaseFragment; +import com.gh.common.util.DataCollectionUtils; +import com.gh.common.util.EntranceUtils; +import com.gh.common.util.NewsUtils; +import com.gh.common.view.VerticalItemDecoration; +import com.gh.gamecenter.DataUtils; +import com.gh.gamecenter.NewsDetailActivity; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder; +import com.gh.gamecenter.entity.NewsEntity; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; +import com.lightgame.utils.Util_System_Keyboard; +import com.lightgame.utils.Utils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import butterknife.BindView; +import retrofit2.HttpException; +import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Func1; +import rx.schedulers.Schedulers; + +/** + * Created by CsHeng on 14/12/2017. + * 游戏新闻搜索结果界面 + */ +public class GameNewsSearchResultFragment extends BaseFragment { + + @BindView(R.id.gamedetail_news_rv) + RecyclerView mNewsSearchRv; + @BindView(R.id.tv_search) + TextView mNewsSearchTv; + @BindView(R.id.reuse_none_data) + LinearLayout mNoneData; + @BindView(R.id.et_search) + EditText mNewsSearchEt; + @BindView(R.id.gamedetail_news_ll_loading) + LinearLayout mLoading; + @BindView(R.id.reuse_no_connection) + LinearLayout mNoConn; + + private LinearLayoutManager mLayoutManager; + private List mNewsEntities; + private NewsSearchAdapter mNewsSearchAdapter; + + private boolean mIsLoadOver = true; + private boolean mIsRemove = false; + private boolean mIsNetworkError = false; + + private String mSearchKey; + private String mGameId; + + private Handler mHandler = new Handler(); + + private int mPage = 1; + + @Override + protected int getLayoutId() { + return R.layout.fragment_game_news_search_result; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Bundle args = getArguments(); + + String gameName = args.getString(EntranceUtils.KEY_GAMENAME); + mSearchKey = args.getString(EntranceUtils.KEY_SEARCHKEY); + mGameId = args.getString(EntranceUtils.KEY_GAMEID); + + setNavigationTitle(gameName); + + mNewsEntities = new ArrayList<>(); + mNewsSearchAdapter = new NewsSearchAdapter(); + + mLayoutManager = new LinearLayoutManager(getContext()); + + mNewsSearchRv.setLayoutManager(mLayoutManager); + mNewsSearchRv.setAdapter(mNewsSearchAdapter); + mNewsSearchRv.addItemDecoration(new VerticalItemDecoration(getContext(), 1, false)); + + mNewsSearchEt.setText(mSearchKey); + + loadNewsData(mPage); + + mNewsSearchTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mSearchKey = mNewsSearchEt.getText().toString().trim(); + if (mSearchKey.length() >= 1) { + mNewsEntities.clear(); + mNewsSearchAdapter.notifyDataSetChanged(); + mLoading.setVisibility(View.VISIBLE); + mNoneData.setVisibility(View.GONE); + + Util_System_Keyboard.hideSoftKeyboard(getActivity()); + + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + mPage = 1; + loadNewsData(mPage); + } + }, 500); + + } else { + Utils.toast(getContext(), getString(R.string.search_hint)); + } + + } + }); + + mNewsSearchRv.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_IDLE && mLayoutManager.findLastVisibleItemPosition() + 1 == mNewsSearchAdapter.getItemCount() + && mIsLoadOver && !mIsRemove && !mIsNetworkError) { + mIsLoadOver = false; + mPage++; + loadNewsData(mPage); + } + } + }); + + mNoConn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mNoConn.setVisibility(View.GONE); + mLoading.setVisibility(View.VISIBLE); + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + loadNewsData(1); + } + }, 1000); + } + }); + + } + + @Override + public void onDestroy() { + super.onDestroy(); + mHandler.removeCallbacksAndMessages(null); + } + + private void loadNewsData(final int page) { +// DataUtils.onEvent(getContext(), "游戏新闻搜索", mSearchKey); +// DataCollectionUtils.uploadSearch(getContext(), mSearchKey, "游戏新闻搜索"); + + RetrofitManager.getInstance(getContext()).getApi().getSearchNews(mGameId, mSearchKey, page, 20) + .map(new Func1, List>() { + @Override + public List call(List list) { + // 去掉重复数据 + return NewsUtils.removeDuplicateData(mNewsEntities, list); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>() { + @Override + public void onResponse(List response) { + mIsLoadOver = true; + mLoading.setVisibility(View.GONE); + mNoneData.setVisibility(View.GONE); + + if (response.size() != 0) { + mNewsEntities.addAll(response); + mNewsSearchAdapter.notifyDataSetChanged(); + } else { + if (page == 1) { + mNoneData.setVisibility(View.VISIBLE); + } + + mIsRemove = true; + mNewsSearchAdapter.notifyItemChanged(mNewsSearchAdapter.getItemCount() - 1); + } + + if (response.size() < 20) { + mIsRemove = true; + } + } + + @Override + public void onFailure(HttpException e) { + if (page == 1) { + mNoConn.setVisibility(View.VISIBLE); + mLoading.setVisibility(View.GONE); + } + mIsLoadOver = true; + toast(R.string.loading_failed_hint); + mIsNetworkError = true; + mNewsSearchAdapter.notifyItemChanged(mNewsSearchAdapter.getItemCount() - 1); + } + }); + } + + //TODO move out + public class NewsSearchAdapter extends RecyclerView.Adapter { + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == 0) { + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); + } else { + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.news_text_item, parent, false); + return new NewsTextViewHolder(view); + } + } + + @Override + public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { + if (holder instanceof NewsTextViewHolder) { + NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; + viewHolder.title.setText(Html.fromHtml(mNewsEntities.get(position).getTitle())); + viewHolder.type.setVisibility(View.GONE); + viewHolder.line.setVisibility(View.GONE); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + NewsEntity newsEntity = mNewsEntities.get(holder.getPosition()); + + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(holder.getPosition() + 1)); + DataUtils.onEvent(getContext(), "点击", "游戏新闻搜索", kv); + + DataCollectionUtils.uploadClick(getContext(), + "列表", "游戏新闻搜索", newsEntity.getTitle()); + + // 统计阅读量 + NewsUtils.statNewsViews(getContext(), newsEntity.getId()); + NewsDetailActivity.startNewsDetailActivity(getContext(), newsEntity, + mEntrance + "+(游戏新闻搜索[" + mSearchKey + "])"); + } + }); + } else if (holder instanceof FooterViewHolder) { + FooterViewHolder viewHolder = (FooterViewHolder) holder; + viewHolder.itemView.setPadding(0, 0, 0, 0); + if (mIsNetworkError) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText(R.string.loading_failed_retry); + viewHolder.itemView.setClickable(true); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mIsNetworkError = false; + notifyItemChanged(getItemCount() - 1); + loadNewsData(mPage); + } + }); + } else if (mIsRemove) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText(R.string.loading_complete); + viewHolder.itemView.setClickable(false); + } else { + viewHolder.loading.setVisibility(View.VISIBLE); + viewHolder.hint.setText(R.string.loading); + viewHolder.itemView.setClickable(false); + } + } + + } + + @Override + public int getItemViewType(int position) { + if (position == mNewsEntities.size()) { + return 0; + } else { + return 1; + } + } + + @Override + public int getItemCount() { + if (mNewsEntities.isEmpty()) { + return 0; + } + return mNewsEntities.size() + 1; + } + + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/game/GamePluginAdapter.java b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java similarity index 98% rename from app/src/main/java/com/gh/gamecenter/game/GamePluginAdapter.java rename to app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java index ae6d6b3a31..5ade0b43aa 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GamePluginAdapter.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.game; +package com.halo.assistant.fragment.game; import android.content.Context; import android.support.v7.widget.RecyclerView; @@ -6,12 +6,12 @@ import android.view.View; import android.view.ViewGroup; import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.StringUtils; +import com.gh.gamecenter.DataUtils; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; diff --git a/app/src/main/java/com/gh/gamecenter/game/GamePluginViewHolder.java b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginViewHolder.java similarity index 94% rename from app/src/main/java/com/gh/gamecenter/game/GamePluginViewHolder.java rename to app/src/main/java/com/halo/assistant/fragment/game/GamePluginViewHolder.java index 19c3f39f5c..72c6be8ef3 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GamePluginViewHolder.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginViewHolder.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.game; +package com.halo.assistant.fragment.game; import android.support.v7.widget.RecyclerView; import android.view.View; @@ -29,4 +29,5 @@ public class GamePluginViewHolder extends BaseRecyclerViewHolder { public GamePluginViewHolder(View itemView) { super(itemView); } + } diff --git a/app/src/main/java/com/halo/assistant/ui/IntentFactory.java b/app/src/main/java/com/halo/assistant/ui/IntentFactory.java new file mode 100644 index 0000000000..94d56d1926 --- /dev/null +++ b/app/src/main/java/com/halo/assistant/ui/IntentFactory.java @@ -0,0 +1,148 @@ +package com.halo.assistant.ui; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.text.TextUtils; + +import com.gh.common.util.EntranceUtils; +import com.gh.gamecenter.CommonActivity; + +/** + * 各种UI集合点 + *

+ * Created by CsHeng on 12/12/2017. + */ +public class IntentFactory { + + public static class Builder { + + private Context mContext; + private Class mActivityClass = CommonActivity.class; + private Class mFragmentClass; + private int mFlags; + private String mEntrance; + private Bundle mBundleArgs; + + public Builder(@NonNull Context context) { + mContext = context; + } + + @NonNull + public Builder setActivity(Class activityClass) { + mActivityClass = activityClass; + return this; + } + + @NonNull + public Builder setFragment(@NonNull Class cls) { + mFragmentClass = cls; + return this; + } + + @NonNull + public Builder setEntrance(@NonNull String entrance) { + mEntrance = entrance; + return this; + } + + @NonNull + public Builder setArgs(@NonNull Bundle args) { + mBundleArgs = args; + return this; + } + + @NonNull + public Builder addFlags(int flags) { + mFlags |= flags; + return this; + } + + @NonNull + public Builder setFlags(int flags) { + mFlags = flags; + return this; + } + + @NonNull + public Intent build() { + Intent intent = getFragmentIntent(mContext, mActivityClass, mFragmentClass, mBundleArgs); + if (!TextUtils.isEmpty(mEntrance)) { + intent.putExtra(EntranceUtils.KEY_ENTRANCE, mEntrance); + } + intent.setFlags(mFlags); + return intent; + } + + public void start() { + mContext.startActivity(build()); + } + + } + + protected static final String ARGS_FRAGMENT_NAME = "frgName"; + protected static final String ARGS_FRAGMENT_BUNDLE = "frgBundle"; + + protected static Intent clearTop(Context context, Class cls) { + final Intent intent = getReorderToFrontIntent(context, cls); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + return intent; + } + + protected static Intent getReorderToFrontIntent(Context context, Class cls) { + final Intent intent = new Intent(context, cls); + intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + return intent; + } + + protected static void showActivity(Context context, Class cls) { + final Intent intent = getReorderToFrontIntent(context, cls); + context.startActivity(intent); + } + + protected static void startFragmentForResult(Context context, Class activity, + Class fragment, Bundle bundle, int requestCode) { + if (context instanceof Activity) { + ((Activity) context).startActivityForResult(getFragmentIntent(context, activity, fragment, bundle), + requestCode); + } + } + + /** + * 根据传进来的fragment class和bundle extra来决定跳转到哪一个fragment + * + * @param context + * @param fragment fragment.getCanonicalName() + * @param bundle fragment的构造参数 + * @return + */ + protected static Intent getFragmentIntent(Context context, Class activity, + Class fragment, Bundle bundle) { + final Intent intent = getReorderToFrontIntent(context, activity); + intent.putExtra(ARGS_FRAGMENT_NAME, fragment.getCanonicalName()); + intent.putExtra(ARGS_FRAGMENT_BUNDLE, bundle); + return intent; + } + + protected static void startFragment(Context context, Class activity, + Class fragment) { + startFragment(context, activity, fragment, null); + } + + /** + * 启动Fragment + * + * @param context + * @param fragment + * @param bundle + */ + protected static void startFragment(Context context, Class activity, + Class fragment, Bundle bundle) { + context.startActivity(getFragmentIntent(context, activity, fragment, bundle)); + } + +} diff --git a/app/src/main/res/drawable-hdpi/ic_search_white.png b/app/src/main/res/drawable-hdpi/ic_search_white.png deleted file mode 100644 index b673b9b3c5..0000000000 Binary files a/app/src/main/res/drawable-hdpi/ic_search_white.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_search_white.png b/app/src/main/res/drawable-xxhdpi/ic_search_white.png new file mode 100644 index 0000000000..761e26933e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_search_white.png differ diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml deleted file mode 100644 index 7e899ea4c1..0000000000 --- a/app/src/main/res/layout/activity_about.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_clean_apk.xml b/app/src/main/res/layout/activity_clean_apk.xml deleted file mode 100644 index ea2a606e4b..0000000000 --- a/app/src/main/res/layout/activity_clean_apk.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_comment_detail.xml b/app/src/main/res/layout/activity_comment_detail.xml deleted file mode 100644 index 3c4c3fe599..0000000000 --- a/app/src/main/res/layout/activity_comment_detail.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_game_news.xml b/app/src/main/res/layout/activity_game_news.xml deleted file mode 100644 index 023a109630..0000000000 --- a/app/src/main/res/layout/activity_game_news.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml deleted file mode 100644 index 28c9cff9d4..0000000000 --- a/app/src/main/res/layout/activity_setting.xml +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml new file mode 100644 index 0000000000..9eadfc33a2 --- /dev/null +++ b/app/src/main/res/layout/fragment_about.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_apk_cleaner.xml b/app/src/main/res/layout/fragment_apk_cleaner.xml new file mode 100644 index 0000000000..c67d2a32a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_apk_cleaner.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_comment_detail.xml b/app/src/main/res/layout/fragment_comment_detail.xml new file mode 100644 index 0000000000..03feda2115 --- /dev/null +++ b/app/src/main/res/layout/fragment_comment_detail.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_concern.xml b/app/src/main/res/layout/fragment_concern.xml similarity index 97% rename from app/src/main/res/layout/activity_concern.xml rename to app/src/main/res/layout/fragment_concern.xml index 76b9c02542..434b08d9d3 100644 --- a/app/src/main/res/layout/activity_concern.xml +++ b/app/src/main/res/layout/fragment_concern.xml @@ -4,8 +4,6 @@ android:layout_height = "match_parent" android:orientation = "vertical" > - - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_gamedetail_news.xml b/app/src/main/res/layout/fragment_game_news_search_result.xml similarity index 98% rename from app/src/main/res/layout/activity_gamedetail_news.xml rename to app/src/main/res/layout/fragment_game_news_search_result.xml index 11beb2014d..db930f7d77 100644 --- a/app/src/main/res/layout/activity_gamedetail_news.xml +++ b/app/src/main/res/layout/fragment_game_news_search_result.xml @@ -4,8 +4,6 @@ android:layout_height = "wrap_content" android:orientation = "vertical" > - - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml new file mode 100644 index 0000000000..f84c1f00da --- /dev/null +++ b/app/src/main/res/layout/fragment_setting.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_menu_button.xml b/app/src/main/res/layout/layout_menu_button.xml new file mode 100644 index 0000000000..cc5373fe33 --- /dev/null +++ b/app/src/main/res/layout/layout_menu_button.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_kaifu.xml b/app/src/main/res/layout/layout_wrapper_activity_toolbar.xml old mode 100644 new mode 100755 similarity index 68% rename from app/src/main/res/layout/activity_kaifu.xml rename to app/src/main/res/layout/layout_wrapper_activity_toolbar.xml index 58aa60dd14..f55563555f --- a/app/src/main/res/layout/activity_kaifu.xml +++ b/app/src/main/res/layout/layout_wrapper_activity_toolbar.xml @@ -2,13 +2,15 @@ + android:layout_height = "0dp" + android:layout_weight = "1" /> \ 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 fc4476f47f..23fe21bb30 100644 --- a/app/src/main/res/layout/reuse_actionbar.xml +++ b/app/src/main/res/layout/reuse_actionbar.xml @@ -1,34 +1,51 @@ - + android:layout_height = "?attr/actionBarSize" > - + + android:layout_centerHorizontal = "true" + android:layout_height = "?attr/actionBarSize" + android:background = "@android:color/white" > - + + + + + + + - - \ 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 index 9ca9ed3c1f..8cdfe08fd0 100644 --- a/app/src/main/res/layout/reuse_none_data.xml +++ b/app/src/main/res/layout/reuse_none_data.xml @@ -3,6 +3,7 @@ android:id = "@+id/reuse_none_data" android:layout_width = "match_parent" android:layout_height = "match_parent" + android:layout_gravity = "center" android:gravity = "center" android:orientation = "vertical" android:visibility = "gone" > diff --git a/app/src/main/res/menu/menu_button.xml b/app/src/main/res/menu/menu_button.xml new file mode 100644 index 0000000000..55e235a4da --- /dev/null +++ b/app/src/main/res/menu/menu_button.xml @@ -0,0 +1,11 @@ + +

+ + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_search_white.xml b/app/src/main/res/menu/menu_search_white.xml new file mode 100644 index 0000000000..cbe134db1c --- /dev/null +++ b/app/src/main/res/menu/menu_search_white.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5a03aa734c..7c8b9868e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -383,6 +383,17 @@ 小编回复:%1$s]]> %1$d票 光环客服 + I\'m a Text + 搜索 + 游戏详情 + 重置 + + + 小字号 + 中字号 + 大字号 + 特大字号 + 已安装的应用(%1$d) 取消失败,请稍后再试 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1cd1eef83f..5f0bac3114 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,9 +4,9 @@ + + + + + + + + @@ -68,7 +101,6 @@ @drawable/fontsize_radio_style -