diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 5f7716b21a..9685db26f9 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -172,6 +172,7 @@ public class SplashScreenActivity extends BaseActivity { GidHelper.getInstance().registerDevice(new GidCallback() { @Override public void onSuccess(String s) { + Utils.log("Gid", s); Utils.toast(SplashScreenActivity.this, "光环ID -> " + s); } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt index ffe2a15d55..ce70e24902 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -89,6 +89,12 @@ class GameEntity : Parcelable { @SerializedName("download_complete_type") var downloadCompleteType: String? = "" + // 用于开服表标记是否为置顶项目 + @SerializedName("is_fixed_top") + var fixedTop: Boolean? = false + + var fixedTopHint: Boolean? = false + fun getTag(): ArrayList { if (tag == null) tag = ArrayList() if (!Config.isShowPlugin(id)) return ArrayList() @@ -171,6 +177,7 @@ class GameEntity : Parcelable { gameEntity.platform = platform gameEntity.downloadType = downloadType gameEntity.downloadCompleteType = downloadCompleteType + gameEntity.fixedTop = fixedTop return gameEntity } 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 ac63a86688..85f46f7b27 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java @@ -49,7 +49,6 @@ import retrofit2.HttpException; /** * Created by khy on 18/08/17. */ - public class KaiFuVpAdapter extends BaseRecyclerAdapter { private OnRequestCallBackListener mOnCallBackListener; @@ -67,6 +66,10 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { private boolean mIsNetworkError; private boolean mIsLoaded; + private static final int VIEW_TYPE_TOP = 0; + private static final int VIEW_TYPE_ITEM = 1; + private static final int VIEW_TYPE_FOOTER = 2; + public KaiFuVpAdapter(Context context, OnRequestCallBackListener onCallBackListener, String gameId, String day, String entrance) { super(context); @@ -89,8 +92,6 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { .subscribe(new Response>() { @Override public void onResponse(List response) { - super.onResponse(response); - GameManager manager = new GameManager(mContext); for (int i = 0; i < response.size(); i++) { // 初始化游戏状态 @@ -98,6 +99,29 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); manager.addOrUpdate(entity); ApkActiveUtils.filterHideApk(entity); // 过滤隐藏apk + + // 设置置顶部分 + if (i == 0) { + // 列表顶部,若有设置置顶应用就增加置顶头部 + if (mEntityList.size() == 0 && entity.getFixedTop()) { + GameEntity fixedTopItem = new GameEntity(); + fixedTopItem.setFixedTopHint(true); + fixedTopItem.setFixedTop(true); + response.add(i, fixedTopItem); + i++; + } + } + + // 归零置顶游戏的开服时间避免找当前开服游戏时找到 + if (entity.getFixedTop()) { + if (entity.getServerEntity() == null) { + KaiFuCalendarEntity emptyCalendarEntity = new KaiFuCalendarEntity(); + emptyCalendarEntity.setTime(0); + entity.setServerEntity(emptyCalendarEntity); + } + entity.getServerEntity().setTime(0); + } + // 设置时间断点 if (i == 0) { if (mEntityList.size() == 0) { // 列表page == 0 && position=0 默认添加时间断点 @@ -137,7 +161,6 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { i++; } } - } mEntityList.addAll(response); @@ -197,23 +220,22 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { @Override public int getItemViewType(int position) { - if (mEntityList.size() == position) { - return 0; + return VIEW_TYPE_FOOTER; } GameEntity gameEntity = mEntityList.get(position); - if (gameEntity.getKaifuTimeHint() != null && gameEntity.getKaifuTimeHint() != 0) { - return 1; + if ((gameEntity.getKaifuTimeHint() != null && gameEntity.getKaifuTimeHint() != 0) || gameEntity.getFixedTopHint()) { + return VIEW_TYPE_TOP; } - return 2; + return VIEW_TYPE_ITEM; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == 0) { + if (viewType == VIEW_TYPE_FOOTER) { return new FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)); - } else if (viewType == 1) { + } else if (viewType == VIEW_TYPE_TOP) { return new KaiFuTimeViewHolder(mLayoutInflater.inflate(R.layout.kaifu_item_time, parent, false)); } else { return new GameTestViewHolder(mLayoutInflater.inflate(R.layout.game_test_item, parent, false)); @@ -222,22 +244,24 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - if (holder instanceof GameTestViewHolder) { GameEntity gameEntity = mEntityList.get(position); GameTestViewHolder viewHolder = (GameTestViewHolder) holder; initGameTestViewHolder(gameEntity, viewHolder); } else if (holder instanceof KaiFuTimeViewHolder) { GameEntity gameEntity = mEntityList.get(position); - SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd (EEEE) HH:mm", Locale.CHINA); - ((KaiFuTimeViewHolder) holder).time.setText(dateFm.format(gameEntity.getKaifuTimeHint() * 1000)); + if (gameEntity.getFixedTopHint()) { + ((KaiFuTimeViewHolder) holder).time.setText("热门开服"); + } else { + SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd (EEEE) HH:mm", Locale.CHINA); + ((KaiFuTimeViewHolder) holder).time.setText(dateFm.format(gameEntity.getKaifuTimeHint() * 1000)); + } } else if (holder instanceof FooterViewHolder) { FooterViewHolder viewHolder = (FooterViewHolder) holder; initFooterViewHolder(viewHolder); } } - @Override public int getItemCount() { if (mEntityList.size() == 0) { @@ -250,7 +274,7 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { viewHolder.gameName.setText(gameEntity.getName()); ImageUtils.display(viewHolder.gameThumb, gameEntity.getIcon()); - if (TextUtils.isEmpty(gameEntity.getServerEntity().getRemark())) { + if (gameEntity.getServerEntity() == null || TextUtils.isEmpty(gameEntity.getServerEntity().getRemark())) { viewHolder.gameTestTime.setVisibility(View.GONE); } else { viewHolder.gameTestTime.setVisibility(View.VISIBLE); @@ -258,25 +282,31 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { viewHolder.gameTestTime.setBackgroundColor(ContextCompat.getColor(mContext, R.color.tag_orange)); } - - String type = gameEntity.getServerEntity().getType(); - if (TextUtils.isEmpty(type)) { - viewHolder.gameTestType.setVisibility(View.GONE); - } else if (("不删档内测".equals(type) || "删档内测".equals(type) || "公测".equals(type)) - && TextUtils.isEmpty(gameEntity.getServerEntity().getNote())) { - if (!TextUtils.isEmpty(gameEntity.getServerEntity().getNote())) { - viewHolder.gameTestType.setVisibility(View.VISIBLE); - if ("公测".equals(type)) { - KaiFuUtils.setKaiFuType(viewHolder.gameTestType, gameEntity.getServerEntity().getType() + ":" + gameEntity.getServerEntity().getNote()); + if (gameEntity.getFixedTop()) { + String tag = "today".equals(mDay) ? "今日开服" : "明日开服"; + viewHolder.gameTestType.setVisibility(View.VISIBLE); + viewHolder.gameTestType.setText(tag); + viewHolder.gameTestType.setBackgroundColor(ContextCompat.getColor(viewHolder.gameTestType.getContext(), R.color.tag_yellow)); + } else { + String type = gameEntity.getServerEntity().getType(); + if (TextUtils.isEmpty(type)) { + viewHolder.gameTestType.setVisibility(View.GONE); + } else if (("不删档内测".equals(type) || "删档内测".equals(type) || "公测".equals(type)) + && TextUtils.isEmpty(gameEntity.getServerEntity().getNote())) { + if (!TextUtils.isEmpty(gameEntity.getServerEntity().getNote())) { + viewHolder.gameTestType.setVisibility(View.VISIBLE); + if ("公测".equals(type)) { + KaiFuUtils.setKaiFuType(viewHolder.gameTestType, gameEntity.getServerEntity().getType() + ":" + gameEntity.getServerEntity().getNote()); + } else { + KaiFuUtils.setKaiFuType(viewHolder.gameTestType, gameEntity.getServerEntity().getNote()); + } } else { - KaiFuUtils.setKaiFuType(viewHolder.gameTestType, gameEntity.getServerEntity().getNote()); + viewHolder.gameTestType.setVisibility(View.GONE); } } else { - viewHolder.gameTestType.setVisibility(View.GONE); + KaiFuUtils.setKaiFuType(viewHolder.gameTestType, gameEntity.getServerEntity().getNote()); + viewHolder.gameTestType.setVisibility(View.VISIBLE); } - } else { - KaiFuUtils.setKaiFuType(viewHolder.gameTestType, gameEntity.getServerEntity().getNote()); - viewHolder.gameTestType.setVisibility(View.VISIBLE); } if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { @@ -292,12 +322,13 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { DownloadItemUtils.updateItem(mContext, gameEntity, viewHolder, true); - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - showSkipDialog(gameEntity, viewHolder.getAdapterPosition() + 1); - } - }); + if (gameEntity.getFixedTop()) { + viewHolder.itemView.setOnClickListener(v -> + GameDetailActivity.startGameDetailActivity(mContext, gameEntity, + StringUtils.buildString(entrance, "+(开服表[", String.valueOf(viewHolder.getAdapterPosition() + 1), "])"))); + } else { + viewHolder.itemView.setOnClickListener(v -> showSkipDialog(gameEntity, viewHolder.getAdapterPosition() + 1)); + } } private void showSkipDialog(final GameEntity gameEntity, final int position) { @@ -331,22 +362,19 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { 0, DisplayUtils.dip2px(mContext, 12)); container.addView(skipTv); - skipTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - dialog.cancel(); - switch (skipTv.getText().toString()) { - case "只看这个游戏": - 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(KaiFuWrapperFragment.ALL_GAME_KAIFU, gameEntity.getId())); - break; - } + skipTv.setOnClickListener(v -> { + dialog.cancel(); + switch (skipTv.getText().toString()) { + case "只看这个游戏": + 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(KaiFuWrapperFragment.ALL_GAME_KAIFU, gameEntity.getId())); + break; } }); } @@ -359,14 +387,11 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { private void initFooterViewHolder(FooterViewHolder viewHolder) { viewHolder.initFooterViewHolder(!mIsLoaded, mIsNetworkError, mIsRemove, R.string.ask_loadover_hint); - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mIsNetworkError) { - mIsNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(); - } + viewHolder.itemView.setOnClickListener(v -> { + if (mIsNetworkError) { + mIsNetworkError = false; + notifyItemChanged(getItemCount() - 1); + addList(); } }); } diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java index ac9897e5a9..1af34612e1 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java @@ -44,7 +44,6 @@ import butterknife.OnClick; /** * Created by khy on 18/08/17. */ - public class KaiFuVpFragment extends BaseFragment { @BindView(R.id.kaifu_rv) @@ -105,7 +104,6 @@ public class KaiFuVpFragment extends BaseFragment { mGameId = ""; } - mLlparams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(getContext(), 40)); @@ -141,17 +139,23 @@ public class KaiFuVpFragment extends BaseFragment { // 悬挂的文案 GameEntity timeGameEntity = dataList.get(position); - Long timeHint = timeGameEntity.getKaifuTimeHint(); - SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd (EEEE) HH:mm", Locale.CHINA); - if (timeHint == null || timeHint == 0) { - KaiFuCalendarEntity serverEntity = timeGameEntity.getServerEntity(); - if (serverEntity != null) { - mKaifuItemTimeTv.setText(dateFm.format(serverEntity.getTime() * 1000)); - mKaifuItemTimeTv.setTag(serverEntity.getTime()); - } + boolean fixedTopHint = timeGameEntity.getFixedTop(); + + if (fixedTopHint) { + mKaifuItemTimeTv.setText("热门开服"); } else { - mKaifuItemTimeTv.setText(dateFm.format(timeHint * 1000)); - mKaifuItemTimeTv.setTag(timeHint); + Long timeHint = timeGameEntity.getKaifuTimeHint(); + SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd (EEEE) HH:mm", Locale.CHINA); + if (timeHint == null || timeHint == 0) { + KaiFuCalendarEntity serverEntity = timeGameEntity.getServerEntity(); + if (serverEntity != null) { + mKaifuItemTimeTv.setText(dateFm.format(serverEntity.getTime() * 1000)); + mKaifuItemTimeTv.setTag(serverEntity.getTime()); + } + } else { + mKaifuItemTimeTv.setText(dateFm.format(timeHint * 1000)); + mKaifuItemTimeTv.setTag(timeHint); + } } // 悬挂界面移动 diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java index 0443a88e71..f4b6568662 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java @@ -60,7 +60,6 @@ public class KaiFuWrapperFragment extends NormalFragment { private Map mKaiFuHintMap = new HashMap<>(); @Override - protected int getLayoutId() { return R.layout.fragment_kaifu_wrapper; } @@ -89,12 +88,15 @@ public class KaiFuWrapperFragment extends NormalFragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); - FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); - mKaiFuFragment = new KaiFuFragment(); + Bundle args = new Bundle(); SimpleDateFormat format = new SimpleDateFormat("HH", Locale.CHINA); args.putInt(KEY_INDEX_PAGE, Integer.valueOf(format.format(new Date(System.currentTimeMillis()))) >= 18 ? 1 : -1); + + mKaiFuFragment = new KaiFuFragment(); mKaiFuFragment.setArguments(args); + + FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.layout_fragment_content, mKaiFuFragment); fragmentTransaction.commit();