diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index 127ba7de1d..fd188bb939 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -9,10 +9,10 @@ import com.gh.gamecenter.BuildConfig; public class Config { public static final String HOST = "http://dev.api2.ghzhushou.com/v2d6/"; - public static final String USER_HOST = "http://user2.ghzhushou.com/v1d2/"; - public static final String COMMENT_HOST = "http://comment2.ghzhushou.com/v1d2/"; + public static final String USER_HOST = "http://dev.user2.ghzhushou.com/v1d2/"; + public static final String COMMENT_HOST = "http://dev.comment2.ghzhushou.com/v1d2/"; public static final String DATA_HOST = "http://data.ghzhushou.com/"; - public static final String LIBAO_HOST = "http://libao2.ghzhushou.com/v1d2/"; + public static final String LIBAO_HOST = "http://dev.libao2.ghzhushou.com/v1d2/"; public static final String MESSAGE_HOST = "http://message.ghzhushou.com/v1d0/"; public static final String PREFERENCE = "ghzhushou"; diff --git a/app/src/main/java/com/gh/common/util/KaiFuUtils.java b/app/src/main/java/com/gh/common/util/KaiFuUtils.java index 46c3d0512d..d1c33b90d3 100644 --- a/app/src/main/java/com/gh/common/util/KaiFuUtils.java +++ b/app/src/main/java/com/gh/common/util/KaiFuUtils.java @@ -1,13 +1,17 @@ package com.gh.common.util; import android.graphics.Color; +import android.view.View; import android.widget.TextView; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.KaiFuServerEntity; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import java.util.Locale; /** @@ -15,6 +19,75 @@ import java.util.Locale; */ public class KaiFuUtils { + public static void setKaiFuTimeHint(long curTime, long lastTime, GameEntity entity, boolean isTop) { + + SimpleDateFormat format = new SimpleDateFormat("dd", Locale.getDefault()); + String curDay = format.format(curTime); + String lastDay = format.format(lastTime); + if (!curDay.equals(lastDay)) { + if (isTop) { + entity.setKaifuTimeHint(curTime); + } else { + entity.setKaifuTimeHint(lastTime); + } + } + } + + public static void initKaiFuTimeHintView(TextView view, Long time) { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); + try { + long today = format.parse(format.format(new Date())).getTime(); + if (time >= today && time < today + 86400 * 1000) { + view.setText("↓今天开服"); + view.setTextColor(Color.parseColor("#ffb13c")); + } else if (time >= today - 86400 * 1000 && time < today) { + view.setText("↑历史开服"); + view.setTextColor(Color.parseColor("#c7c7c7")); + } else if (time > today && time < today + 86400 * 1000 * 2) { + view.setText("↓明天开服"); + view.setTextColor(Color.parseColor("#ffb13c")); + } else if (time < today) { + view.setText("↑历史开服"); + view.setTextColor(Color.parseColor("#c7c7c7")); + view.setVisibility(View.GONE); + } else if (time > today && time < today + 86400 * 1000 * 3) { + view.setText("↓后天开服"); + view.setTextColor(Color.parseColor("#c7c7c7")); + } else { + format.applyPattern("↓MM月dd日开服"); + view.setText(format.format(time)); + view.setTextColor(Color.parseColor("#c7c7c7")); + } + } catch (ParseException e) { + e.printStackTrace(); + format.applyPattern("M月d日开服"); + view.setText(format.format(time)); + } + } + + public static void setKaiFuTimeHint(TextView top, TextView bottom, List gameList, int position) { + if (position == 0 || position + 1 >= gameList.size()) return; + + GameEntity curGameEntity = gameList.get(position); + GameEntity lastGameEntity = gameList.get(position); + KaiFuServerEntity curServerEntity = curGameEntity.getServerEntity(); + KaiFuServerEntity lastServerEntity = lastGameEntity.getServerEntity(); + + if (curServerEntity == null || lastServerEntity == null) return; + + long curTime = curServerEntity.getTime() * 1000; + long lastTime = lastServerEntity.getTime() * 1000; + SimpleDateFormat format = new SimpleDateFormat("dd", Locale.getDefault()); + String curDay = format.format(curTime); + String lastDay = format.format(lastTime); + if (!curDay.equals(lastDay)) { + + bottom.setVisibility(View.VISIBLE); + } else { + bottom.setVisibility(View.GONE); + } + } + public static void setKaiFuTime(TextView textView, long time) { time = time * 1000; SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); diff --git a/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java b/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java index 309a689591..904dc9d750 100644 --- a/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ChooseReceiverActivity.java @@ -221,7 +221,7 @@ public class ChooseReceiverActivity extends BaseActivity implements View.OnClick private void showConnHintDialog() { DialogUtils.showHintDialog(ChooseReceiverActivity.this, "请告诉你的好友这样操作:", "1.打开光环助手,点击左上角“↓” " + - "\n2.点击右上方的“免流量传送” \n3.点击“我要接收/发送”", "确定"); + "\n2.点击右上方的“免流量传送” \n3.点击“我要接收”", "确定"); } private void updateWifiScanResult() { diff --git a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java index 77ede15f1e..15072c686a 100644 --- a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java +++ b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java @@ -2,7 +2,6 @@ package com.gh.gamecenter; import android.animation.Animator; import android.os.Bundle; -import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; @@ -60,11 +59,6 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On LinearLayout mNoConnection; @BindView(R.id.reuse_none_data) LinearLayout mNoData; - @BindView(R.id.kaifu_select_change_rl) - RelativeLayout mChangeRl; - @BindView(R.id.kaifu_change_name) - TextView mChangeName; - private PopupWindow mPopupWindow; private KaiFuAdapter mAdapter; @@ -153,18 +147,17 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On if (kaifuOffset > 0 && mAdapter.isLoadedTop() && newState == RecyclerView.SCROLL_STATE_IDLE && layoutManager.findFirstVisibleItemPosition() == 0) { int countTop = mAdapter.loadCountTop(); - if (countTop % 20 == 0) { // 不是20的倍数 证明加载完毕 +// if (countTop % 20 == 0) { // 不是20的倍数 证明加载完毕 int offset = kaifuOffset - countTop; int limit = 20; if (offset < 0) { limit = limit + offset; offset = 0; } - if (limit == 0) return; mAdapter.initListTop(offset, limit); - } +// } } } @@ -202,37 +195,6 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On } }); - mChangeRl.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mRecyclerView.stopScroll(); - - if ("即将开服↑".equals(mChangeName.getText().toString())) { - mChangeName.setText("当前开服↓"); - mChangeName.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.theme)); - mChangeRl.setBackgroundResource(R.drawable.comment_border_bg); - if (kaifuOffset == 0 && mInitMovePosition < 4) { - mMovePosition = 0; - } else { - mMovePosition = mInitMovePosition + mAdapter.getLoadCountTop() - 25; - } - } else { - mChangeName.setText("即将开服↑"); - mChangeName.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.content)); - mChangeRl.setBackgroundResource(R.drawable.border_suggest_bg); - mMovePosition = mInitMovePosition + mAdapter.getLoadCountTop() - 20; - if (mMovePosition < 0) { - mMovePosition = mInitMovePosition; - } - } - - if (mInitMovePosition != 1) { - mRecyclerView.stopScroll(); - moveToPosition(mMovePosition, true); - } - } - }); - } private void initSelectGameDialog() { @@ -389,12 +351,6 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On super.loadDone(obj); kaifuOffset = (int) obj; - -// if (kaifuOffset == 0) { -// mRefreshLayout.setEnabled(true); -// } else { -// mRefreshLayout.setEnabled(false); -// } } @Override @@ -436,9 +392,6 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On mAdapter = new KaiFuAdapter(this, this, this, kaifuType); mRecyclerView.setAdapter(mAdapter); - mChangeName.setText("即将开服↑"); - mChangeName.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.content)); - mChangeRl.setBackgroundResource(R.drawable.border_suggest_bg); } // 下载被删除事件 diff --git a/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java b/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java index 324d0e9b21..2254bfadf8 100644 --- a/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ReceiverWaitingActivity.java @@ -289,7 +289,7 @@ public class ReceiverWaitingActivity extends BaseActivity { private void showConnHintDialog() { DialogUtils.showHintDialog(ReceiverWaitingActivity.this, "请告诉你的好友这样操作:", "1.打开光环助手,点击左上角“↓”" + - "\n2.点击右上方的“免流量传送” \n3.点击“我要接收/发送”", "确定"); + "\n2.点击右上方的“免流量传送” \n3.点击“我要发送”", "确定"); } private void startFileReceiverServer(int serverPort) throws Exception { diff --git a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java index 8f09485dab..607ddd043c 100644 --- a/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ToolBoxActivity.java @@ -47,8 +47,6 @@ public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout. Runnable runnable = new Runnable() { @Override public void run() { -// mRvAdapter = new ToolBoxRvAdapter(ToolBoxActivity.this, ToolBoxActivity.this, ToolBoxActivity.this, mIsSearch, mSearckKey); -// mToolboxRv.setAdapter(mRvAdapter); changeAdapter(true); } }; @@ -62,11 +60,12 @@ public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - init("工具箱"); + init("光环工具箱"); mRefresh.setColorSchemeResources(R.color.theme); mRefresh.setOnRefreshListener(this); + mLayoutManager = new LinearLayoutManager(this); mToolboxRv.setLayoutManager(mLayoutManager); mRvAdapter = new ToolBoxRvAdapter(this, this, ToolBoxActivity.this, mIsSearch, mSearckKey); @@ -89,7 +88,7 @@ public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout. }); } - @OnClick({R.id.reuse_no_connection, R.id.reuse_tv_none_data}) + @OnClick({R.id.reuse_no_connection, R.id.reuse_none_data}) public void onClick(View view) { if (view.getId() == R.id.reuse_no_connection) { mLoading.setVisibility(View.VISIBLE); @@ -147,6 +146,9 @@ public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout. if (mNoneData.getVisibility() == View.VISIBLE) { mNoneData.setVisibility(View.GONE); } + if (isSearch) { + mLoading.setVisibility(View.VISIBLE); + } mIsSearch = isSearch; mSearckKey = searchKey; changeAdapter(false); diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.java b/app/src/main/java/com/gh/gamecenter/WebActivity.java index 53672ce912..6c1e87a65a 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.java @@ -20,8 +20,6 @@ import android.widget.TextView; import com.gh.base.AppController; import com.gh.base.BaseActivity; -import com.gh.common.util.DataCollectionUtils; -import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.ShareUtils; @@ -31,13 +29,10 @@ import com.gh.gamecenter.retrofit.RetrofitManager; import com.jakewharton.rxbinding.view.RxView; import com.tencent.tauth.Tencent; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.TimeUnit; import butterknife.BindView; -import butterknife.OnClick; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; @@ -123,6 +118,7 @@ public class WebActivity extends BaseActivity implements View.OnClickListener{ RelativeLayout reuse_actionbar = (RelativeLayout) mContentView.findViewById( R.id.reuse_actionbar); reuse_actionbar.addView(mShareIv, params); + webTitle = "光环工具箱"; } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java index c06ae5ed2b..9e0b4389ef 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java @@ -1,22 +1,17 @@ package com.gh.gamecenter.adapter; -import android.support.v4.content.ContextCompat; import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.text.TextUtils; -import android.view.Gravity; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; import android.widget.Toast; 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.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.KaiFuUtils; @@ -26,10 +21,10 @@ import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.KaiFuActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.KaiFuServerEntity; import com.gh.gamecenter.listener.OnCallBackListener; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; @@ -40,6 +35,7 @@ import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; +import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -67,6 +63,9 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { private int mLoadCountTop; // 记录加载数量 上 private int mLoadCountBottom;// 记录加载数量 下 + private long mTopLastTime; + private long mBottomLastTime; + private boolean mIsRemoveBottom; private boolean mIsRemoveTop; private boolean mIsNetworkError; @@ -128,6 +127,84 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { } + public void initListTop(final int offset, int limit) { + + mIsLoadedTop = false; + RetrofitManager.getApi().getKaiFuData(mKaifuType, offset, limit) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>() { + @Override + public void onResponse(List response) { + + GameManager manager = new GameManager(mContext); + if (response.size() != 0) { + for (int i = 0; i < response.size(); i++) { + GameEntity entity = response.get(i); + if (i < response.size() - 1) { + GameEntity lastEntity = response.get(i + 1); + + KaiFuServerEntity curServerEntity = entity.getServerEntity(); + KaiFuServerEntity lastServerEntity = lastEntity.getServerEntity(); + + if (i == 0 && curServerEntity != null && mTopLastTime > 0) { + KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mTopLastTime, entity, true); + } + if (curServerEntity == null || lastServerEntity == null) return; + + long curTime = curServerEntity.getTime() * 1000; + long lastTime = lastServerEntity.getTime() * 1000; + KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, entity, true); + } else { // response.size == 1 + KaiFuServerEntity curServerEntity = entity.getServerEntity(); + if (i == 0 && curServerEntity != null && mTopLastTime > 0) { + KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mTopLastTime, entity, true); + } + } + + + // 黄壮华 初始化游戏状态 修改2015/8/15 + entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); + manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + + ApkActiveUtils.filterHideApk(entity); + } + mTopLastTime = response.get(0).getServerEntity().getTime() * 1000; + + mSubjectList.addAll(0, response); + notifyItemRangeInserted(0, response.size()); + + if (response.size() < 20 || offset == 0) { + mIsRemoveTop = true; + notifyItemChanged(getItemCount() - 1); + } + + mLoadCountTop = mLoadCountTop + response.size(); + } else { + mIsRemoveTop = true; + notifyDataSetChanged(); + } + + initLocationMap(); + mIsLoadedTop = true; + } + + @Override + public void onFailure(HttpException e) { + if (offset == mInitOffset) { + if (mOnCallBackListener != null) { + mOnCallBackListener.loadError(); + } + } else { + Toast.makeText(mContext, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); + + mIsNetworkError = true; + notifyDataSetChanged(); + } + } + }); + } + public void initListBottom(final int offset) { mIsLoadedBottom = false; @@ -142,23 +219,77 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { if (response.size() != 0) { if (offset == mInitOffset) { - long curTime = System.currentTimeMillis() / 1000; + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.MILLISECOND, 0); + long curTime = calendar.getTimeInMillis() / 1000; + for (int i = 0; i < response.size(); i++) { long time = response.get(i).getServerEntity().getTime(); long l = time - curTime; if (l > 0) { + mKaifuIndex = i; + break; + } + + if (mKaifuIndex == 0 && i == response.size() - 1) { mKaifuIndex = i + 1; } } } - for (GameEntity entity : response) { + for (int i = 0; i < response.size(); i++) { + GameEntity entity = response.get(i); + if (i < response.size() - 1) { + GameEntity lastEntity = response.get(i + 1); + KaiFuServerEntity curServerEntity = entity.getServerEntity(); + KaiFuServerEntity lastServerEntity = lastEntity.getServerEntity(); + + if (i == 0 && curServerEntity != null && mBottomLastTime > 0) { + KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mBottomLastTime, entity, true); + entity.setShowTop(true); + } + if (curServerEntity == null || lastServerEntity == null) return; + + long curTime = curServerEntity.getTime() * 1000; + long lastTime = lastServerEntity.getTime() * 1000; + + + if (offset == mInitOffset) { + if (mKaifuIndex >= i + 1) { + KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, entity, true); + } else if (mKaifuIndex <= i - 1) { + KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, lastEntity, false); + lastEntity.setShowTop(true); + } else { + KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, lastEntity, false); + lastEntity.setShowTop(true); + KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, entity, true); + } + + } else { + KaiFuUtils.setKaiFuTimeHint(curTime, lastTime, lastEntity, false); + lastEntity.setShowTop(true); + } + } else { + KaiFuServerEntity curServerEntity = entity.getServerEntity(); + if (i == 0 && curServerEntity != null && mBottomLastTime > 0) { + KaiFuUtils.setKaiFuTimeHint(curServerEntity.getTime() * 1000, mBottomLastTime, entity, true); + entity.setShowTop(true); + } + } + // 黄壮华 初始化游戏状态 修改2015/8/15 entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); ApkActiveUtils.filterHideApk(entity); } + mBottomLastTime = response.get(response.size() - 1).getServerEntity().getTime() * 1000; + mTopLastTime = response.get(0).getServerEntity().getTime() * 1000; + mSubjectList.addAll(response); notifyItemRangeInserted(getItemCount() - 1 - response.size(), response.size()); @@ -167,6 +298,23 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { mLoadCountTop = response.size();//首次加载 下拉加载减去初始加载值 获取正确偏移量 mSubjectList.add(mKaifuIndex, new GameEntity()); // 添加一个空的实体当做 零界点ITEM + + int locationTop = mKaifuIndex - 1; + if (locationTop > 0) { + GameEntity gameEntity = mSubjectList.get(locationTop); + if (gameEntity.getKaifuTimeHint() == null) { + gameEntity.setKaifuTimeHint(gameEntity.getServerEntity().getTime() * 1000); + } + } + + int locationBottom = mKaifuIndex + 1; + if (locationBottom < mSubjectList.size()) { + GameEntity gameEntity = mSubjectList.get(locationBottom); + if (gameEntity.getKaifuTimeHint() == null) { + gameEntity.setKaifuTimeHint(gameEntity.getServerEntity().getTime() * 1000); + } + } + } if (response.size() < 20) { @@ -193,7 +341,7 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { mIsLoadedBottom = true; if (offset == mInitOffset) { //定位到开服零界点 - mOnScrollToKaiFuIndexListener.onScroll(mKaifuIndex); + mOnScrollToKaiFuIndexListener.onScroll(mKaifuIndex - 1); } } @@ -247,18 +395,9 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { } else if (viewType == ItemViewType.GAME_TEST) { View view = mLayoutInflater.inflate(R.layout.game_test_item, viewGroup, false); return new GameTestViewHolder(view); - } else if (viewType == ItemViewType.GAME_NORMAL) { - View view = mLayoutInflater.inflate(R.layout.game_normal_item, viewGroup, false); - return new GameNormalViewHolder(view); } else if (viewType == 100) { - TextView textView = new TextView(mContext); - textView.setText("↓当前开服 · 即将开服↑"); - textView.setTextColor(ContextCompat.getColor(mContext, R.color.hint)); - textView.setTextSize(13); - textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, - DisplayUtils.dip2px(mContext, 42))); - textView.setGravity(Gravity.CENTER); - return new KaiFuIndexViewHolder(textView); + View view = mLayoutInflater.inflate(R.layout.kaifu_timehint_item, viewGroup, false); + return new KaiFuIndexViewHolder(view); } return null; } @@ -279,6 +418,7 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { @Override public int getItemViewType(int position) { + int index = 0; if (mInitOffset != 0) { index++; @@ -311,6 +451,37 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { final GameEntity gameEntity = mSubjectList.get(position); + KaiFuUtils.setKaiFuTimeHint(holder.kaifuTop, holder.kaifuBottom, mSubjectList, position); + + if (gameEntity.getKaifuTimeHint() != null) { + int index; // 正序 倒序 分割线位置 + if (mSubjectList.size() < 20) { + index = mKaifuIndex; + } else { + index = mKaifuIndex + mLoadCountTop - 20; + } + + if (position == index + 1 || gameEntity.isShowTop()) { + holder.kaifuTop.setVisibility(View.VISIBLE); + holder.kaifuBottom.setVisibility(View.GONE); + KaiFuUtils.initKaiFuTimeHintView(holder.kaifuTop, gameEntity.getKaifuTimeHint()); + } else { + holder.kaifuBottom.setVisibility(View.VISIBLE); + holder.kaifuTop.setVisibility(View.GONE); + KaiFuUtils.initKaiFuTimeHintView(holder.kaifuBottom, gameEntity.getKaifuTimeHint()); + } + + String s = holder.kaifuBottom.getText().toString(); + + if (holder.kaifuBottom.getVisibility() == View.GONE && position == index - 1 && s.equals("↑历史开服")) { + holder.kaifuBottom.setVisibility(View.VISIBLE); + } + + } else { + holder.kaifuBottom.setVisibility(View.GONE); + holder.kaifuTop.setVisibility(View.GONE); + } + ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); holder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { @@ -395,60 +566,6 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { } } - public void initListTop(final int offset, int limit) { - - mIsLoadedTop = false; - RetrofitManager.getApi().getKaiFuData(mKaifuType, offset, limit) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(List response) { - - GameManager manager = new GameManager(mContext); - if (response.size() != 0) { - for (GameEntity entity : response) { - // 黄壮华 初始化游戏状态 修改2015/8/15 - entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); - manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); - - ApkActiveUtils.filterHideApk(entity); - } - - mSubjectList.addAll(0, response); - notifyItemRangeInserted(0, response.size()); - - if (response.size() < 20 || offset == 0) { - mIsRemoveTop = true; - notifyItemChanged(getItemCount() - 1); - } - - mLoadCountTop = mLoadCountTop + response.size(); - } else { - mIsRemoveTop = true; - notifyDataSetChanged(); - } - - initLocationMap(); - mIsLoadedTop = true; - } - - @Override - public void onFailure(HttpException e) { - if (offset == mInitOffset) { - if (mOnCallBackListener != null) { - mOnCallBackListener.loadError(); - } - } else { - Toast.makeText(mContext, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); - - mIsNetworkError = true; - notifyDataSetChanged(); - } - } - }); - } - public List getSubjectList() { return mSubjectList; } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java index b774ce3a45..be738cd4b5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java @@ -38,6 +38,8 @@ public class SubjectTypeAdapter extends BaseRecyclerAdapter @Override public GameTypeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RelativeLayout relativeLayout = new RelativeLayout(mContext); + relativeLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT + , DisplayUtils.dip2px(mContext, 35))); relativeLayout.setGravity(Gravity.CENTER); TextView textView = new TextView(mContext); textView.setTextSize(14); @@ -51,18 +53,6 @@ public class SubjectTypeAdapter extends BaseRecyclerAdapter return new GameTypeViewHolder(relativeLayout); } -// public StateListDrawable selectorBg() { -// -// StateListDrawable bg_install = new StateListDrawable(); -// -// bg_install.addState(new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled}, -// new ColorDrawable(ContextCompat.getColor(mContext, R.color.content))); -// bg_install.addState(new int[]{android.R.attr.state_selected, android.R.attr.state_enabled}, -// new ColorDrawable(ContextCompat.getColor(mContext, R.color.title))); -// bg_install.addState(new int[]{}, new ColorDrawable(Color.WHITE)); -// -// return bg_install; -// } @Override public void onBindViewHolder(final GameTypeViewHolder holder, final int position) { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java index 714a3a1a47..c02a1d5c04 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java @@ -12,6 +12,7 @@ import android.view.inputmethod.InputMethodManager; import com.gh.base.AppController; import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; +import com.gh.common.util.MD5Utils; import com.gh.common.util.Utils; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; @@ -20,17 +21,24 @@ import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.LibaoSearchViewHolder; import com.gh.gamecenter.adapter.viewholder.ToolBoxViewHolder; +import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.ToolBoxEntity; import com.gh.gamecenter.listener.OnCallBackListener; +import com.gh.gamecenter.manager.ConcernManager; +import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import retrofit2.HttpException; import rx.Observable; +import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; import rx.schedulers.Schedulers; import static com.gh.gamecenter.R.string.loading; @@ -47,11 +55,16 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { private List mEntityList; private String mSerchKey; + private String mConcernKey; + + private int mConcernDataSize; private boolean mIsSearch; private boolean mIsLoading; private boolean mIsOver; private boolean mIsNetworkError; + private boolean mLoadKeyOver; + private boolean mIsRequestError; // key请求返回409 public ToolBoxRvAdapter(Context context, OnCallBackListener listener, OnSearchCallBackListener searchListener, boolean isSearch, String key) { @@ -59,49 +72,128 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { this.mIsSearch = isSearch; this.mSerchKey = key; + mConcernDataSize = 0; + mLoadKeyOver = false; + mIsRequestError = false; + mSearchListener = searchListener; mCallBackListener = listener; mEntityList = new ArrayList<>(); - loadData(isSearch, 0); + loadDataByKey(); + } + + private void loadDataByKey() { + if (mIsLoading) { + return; + } + mIsLoading = true; + if (TextUtils.isEmpty(mConcernKey)) { + ObservableUtil.computation(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + ConcernManager concernManager = new ConcernManager(mContext); + List concernList = concernManager.getConcernGame(); + List gameIdList = new ArrayList<>(); + if (concernList == null || concernList.isEmpty()) { + subscriber.onNext(null); + } else { + for (ConcernInfo concernInfo : concernList) { + gameIdList.add(concernInfo.getId()); + } + + // 对数据进行排序 + Collections.sort(gameIdList, new Comparator() { + @Override + public int compare(String lhs, String rhs) { + return lhs.compareTo(rhs); + } + }); + + StringBuilder keyBuilder = new StringBuilder(); + StringBuilder idsBuilder = new StringBuilder(); + for (int i = 0; i < gameIdList.size(); i++) { + keyBuilder.append(gameIdList.get(i)); + if (i < 5) { + idsBuilder.append(gameIdList.get(i)); + idsBuilder.append("-"); + } + } + mConcernKey = MD5Utils.getContentMD5(keyBuilder.toString()); + subscriber.onNext(""); + } + subscriber.onCompleted(); + } + }, new Action1() { + @Override + public void call(String s) { + if (s == null) { + mLoadKeyOver = true; + } + loadData(mIsSearch, 0); + } + }); + } else { + loadData(mIsSearch, 0); + } + } public void loadData(boolean isSearch, int offset) { mIsLoading = true; - Observable> api; - if (isSearch) { - api = RetrofitManager.getApi().getToolBoxDataSearch(offset, mSerchKey); - } else { - api = RetrofitManager.getApi().getToolBoxData(offset); + if (offset > 0 && !isSearch && mLoadKeyOver) { + offset = offset - mConcernDataSize; } + Observable> api; + if (mIsRequestError || TextUtils.isEmpty(mConcernKey)) { + api = RetrofitManager.getApi().getToolBoxData(offset, mSerchKey); + } else if (!mLoadKeyOver) { + api = RetrofitManager.getApi().getToolBoxData(offset, mConcernKey, mSerchKey); + } else { + api = RetrofitManager.getApi().getToolBoxDataExclude(offset, mConcernKey, mSerchKey); + } + final int finalOffset = offset; api .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>(){ + .subscribe(new Response>() { @Override public void onResponse(List response) { super.onResponse(response); - if (response.size() > 0) { + if (!mLoadKeyOver && response.size() < 20) { mEntityList.addAll(response); - mCallBackListener.loadDone(); + mConcernDataSize = mEntityList.size(); + mLoadKeyOver = true; + loadData(mIsSearch, 0); + } else { + if (response.size() > 0) { + mEntityList.addAll(response); + mCallBackListener.loadDone(); - if (response.size() < 20) { - mIsOver = true; + if (response.size() < 20) { + mIsOver = true; + } + + notifyDataSetChanged(); } + mIsLoading = false; - notifyDataSetChanged(); - } - mIsLoading = false; - - if (mEntityList.size() == 0) { - mCallBackListener.loadEmpty(); + if (mEntityList.size() == 0) { + mCallBackListener.loadEmpty(); + } } } @Override public void onFailure(HttpException e) { super.onFailure(e); + if (e != null && e.code() == 409) { + mIsRequestError = true; + loadData(mIsSearch, finalOffset); + return; + } + mIsLoading = false; if (mEntityList.size() == 0) { mCallBackListener.loadError(); @@ -115,7 +207,7 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { @Override public int getItemViewType(int position) { - if (position == 0 ) { + if (position == 0) { return 0; } else if (position == getItemCount() - 1) { return 1; @@ -220,7 +312,7 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - loadData(false, mEntityList.size()); + loadData(mIsSearch, mEntityList.size()); } }); } else if (mIsOver) { 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 a256394146..5b8c3e3f99 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 @@ -28,6 +28,8 @@ public class GameTestViewHolder extends GameViewHolder { public TextView gameTestType; public TextView gameTestTime; + public TextView kaifuTop; + public TextView kaifuBottom; public GameTestViewHolder(View itemView) { super(itemView); @@ -46,6 +48,8 @@ public class GameTestViewHolder extends GameViewHolder { gameDownloadSpeed = (TextView) itemView.findViewById(R.id.home2_download_speed); gameDownloadPercentage = (TextView) itemView.findViewById(R.id.home2_download_percentage); gameServerType = (TextView) itemView.findViewById(R.id.home2_game_server_type); + kaifuTop = (TextView) itemView.findViewById(R.id.home2_game_kaifu_top); + kaifuBottom = (TextView) itemView.findViewById(R.id.home2_game_kaifu_bottom); } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java index 1e842efc24..4dcced057b 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java @@ -42,7 +42,7 @@ public class GameDetailEntity { private List gameTag; @SerializedName("server") - private List kaiFuServer; + private ServerEntity serverEntity; @SerializedName("related_game") private List relatedGames; @@ -169,12 +169,12 @@ public class GameDetailEntity { this.gameTag = gameTag; } - public List getKaiFuServer() { - return kaiFuServer; + public ServerEntity getServerEntity() { + return serverEntity; } - public void setKaiFuServer(List kaiFuServer) { - this.kaiFuServer = kaiFuServer; + public void setServerEntity(ServerEntity serverEntity) { + this.serverEntity = serverEntity; } public List getRelatedGames() { @@ -311,4 +311,27 @@ public class GameDetailEntity { this.game = game; } } + + public class ServerEntity { + + private String des; + + private List calendar; + + public String getDes() { + return des; + } + + public void setDes(String des) { + this.des = des; + } + + public List getCalendar() { + return calendar; + } + + public void setCalendar(List calendar) { + this.calendar = calendar; + } + } } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java index 9ab23e312c..a09021ec0b 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java @@ -57,6 +57,10 @@ public class GameEntity { @SerializedName("server") private KaiFuServerEntity serverEntity; + private Long kaifuTimeHint; + + private boolean isShowTop; + public boolean isLibaoExists() { return libaoExists; } @@ -228,6 +232,22 @@ public class GameEntity { this.serverEntity = serverEntity; } + public Long getKaifuTimeHint() { + return kaifuTimeHint; + } + + public void setKaifuTimeHint(Long kaifuTimeHint) { + this.kaifuTimeHint = kaifuTimeHint; + } + + public boolean isShowTop() { + return isShowTop; + } + + public void setShowTop(boolean showTop) { + isShowTop = showTop; + } + public GameEntity clone() { GameEntity gameEntity = new GameEntity(); gameEntity.setId(id); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java index 30b0de7eca..edcc11c2ff 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java @@ -155,8 +155,8 @@ public class FuLiAdapter extends BaseRecyclerAdapter { position_libao = 0; } } - if (mGameDetailEntity.getKaiFuServer() != null - && mGameDetailEntity.getKaiFuServer().size() > 0) { + if (mGameDetailEntity.getServerEntity() != null && mGameDetailEntity.getServerEntity().getCalendar() != null + && mGameDetailEntity.getServerEntity().getCalendar().size() > 0) { if (position_libao != -1) { position_kaifu = position_libao + 1; } else if (position_fuli != -1) { @@ -200,9 +200,9 @@ public class FuLiAdapter extends BaseRecyclerAdapter { public void onResponse(List response) { if (!mGameEntity.isLibaoExists() && response.size() == 0 && TextUtils.isEmpty(mGameDetailEntity.getFulishuoming()) - && (mGameDetailEntity.getKaiFuServer() == null - || (mGameDetailEntity.getKaiFuServer() != null - && mGameDetailEntity.getKaiFuServer().size() == 0))) { + && (mGameDetailEntity.getServerEntity() == null + || (mGameDetailEntity.getServerEntity().getCalendar() != null + && mGameDetailEntity.getServerEntity().getCalendar().size() == 0))) { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override @@ -584,11 +584,20 @@ public class FuLiAdapter extends BaseRecyclerAdapter { } private void initKaiFuViewHolder(GameDetailKaiFuViewHolder viewHolder) { + GameDetailEntity.ServerEntity serverEntity = mGameDetailEntity.getServerEntity(); + if (!TextUtils.isEmpty(serverEntity.getDes())) { + viewHolder.kaifuDes.setVisibility(View.VISIBLE); + viewHolder.kaifuDes.setText(serverEntity.getDes()); + } else { + viewHolder.kaifuDes.setVisibility(View.GONE); + } + viewHolder.kaifuRv.setNestedScrollingEnabled(false); if (viewHolder.kaifuRv.getAdapter() == null) { viewHolder.kaifuRv.setLayoutManager(new GridLayoutManager(mContext, 7)); viewHolder.kaifuRv.addItemDecoration(new GridDivider(mContext, 1, Color.BLACK)); - viewHolder.kaifuRv.setAdapter(new GameDetailKaiFuAdapter(mContext, mGameDetailEntity.getKaiFuServer(), viewHolder, mGameEntity.getName())); + viewHolder.kaifuRv.setAdapter(new GameDetailKaiFuAdapter(mContext, serverEntity.getCalendar(), + viewHolder, mGameEntity.getName())); } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuViewHolder.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuViewHolder.java index 7f11b6a0e2..6e2558f6ae 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuViewHolder.java @@ -37,6 +37,8 @@ public class GameDetailKaiFuViewHolder extends RecyclerView.ViewHolder { LinearLayout detailList; @BindView(R.id.gamedetail_kaifu_detail_sv) ScrollView detailSv; + @BindView(R.id.gamedetail_kaifu_des) + TextView kaifuDes; public GameDetailKaiFuViewHolder(View itemView) { super(itemView); diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java index dfbe68f73b..063e01e2d5 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java @@ -195,12 +195,17 @@ public interface ApiService { @POST("game/{game_id}/version/request/vote") Observable postVersionVote(@Header("TOKEN") String token, @Body RequestBody body, @Path("game_id") String gameId);//提交投票 - @GET("game/toolkit") + @GET("toolkit") Observable> getGameToolBoxData(@Query("offset") int offset, @Query("game_id") String gameId); @GET("toolkit") - Observable> getToolBoxData(@Query("offset") int offset); + Observable> getToolBoxData(@Query("offset") int offset, @Query("keyword") String keyword); @GET("toolkit") - Observable> getToolBoxDataSearch(@Query("offset") int offset, @Query("keyword") String key); + Observable> getToolBoxDataSearch(@Query("offset") int offset, @Query("keyword") String keyword); + + @GET("toolkit") + Observable> getToolBoxDataExclude(@Query("offset") int offset, @Query("key_exclude") String excludeKey, @Query("keyword") String keyword); + @GET("toolkit") + Observable> getToolBoxData(@Query("offset") int offset, @Query("key") String key, @Query("keyword") String keyword); } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java index e9d821f71c..1a4782619d 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java @@ -148,7 +148,7 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap subject_type_list.setLayoutManager(layout); if (contentTitle != null && contentTitle.size() > 1) { ViewGroup.LayoutParams params = subject_type_list.getLayoutParams(); - params.height = (int) Math.ceil(contentTitle.size() / 4f) * DisplayUtils.dip2px(getContext(), 25); + params.height = (int) Math.ceil(contentTitle.size() / 4f) * DisplayUtils.dip2px(getContext(), 35); subject_type_list.setLayoutParams(params); ((DefaultItemAnimator) subject_type_list.getItemAnimator()).setSupportsChangeAnimations(false); SubjectTypeAdapter adapter = new SubjectTypeAdapter(getContext(), SubjectTileFragment.this, contentTitle); diff --git a/app/src/main/res/layout/activity_kaifu.xml b/app/src/main/res/layout/activity_kaifu.xml index 96a4701072..8da1258b97 100644 --- a/app/src/main/res/layout/activity_kaifu.xml +++ b/app/src/main/res/layout/activity_kaifu.xml @@ -12,7 +12,7 @@ @@ -60,43 +60,6 @@ - - - - - - - - - - - + diff --git a/app/src/main/res/layout/game_test_item.xml b/app/src/main/res/layout/game_test_item.xml index 2e4d95b6ed..0d82e9b349 100644 --- a/app/src/main/res/layout/game_test_item.xml +++ b/app/src/main/res/layout/game_test_item.xml @@ -3,202 +3,227 @@ xmlns:fresco = "http://schemas.android.com/apk/res-auto" android:layout_width = "match_parent" android:layout_height = "wrap_content" - android:background = "@drawable/reuse_listview_item_style" - android:gravity = "center_vertical" - android:orientation = "horizontal" - android:paddingBottom = "6dp" - android:paddingLeft = "11dp" - android:paddingRight = "19dp" - android:paddingTop = "6dp" > + android:orientation = "vertical" > - + - - - - - - - + android:layout_width = "68dp" + android:layout_height = "74dp" > - + fresco:roundedCornerRadius = "10dp" /> - - - - - - - - - - - - - - - - + android:layout_width = "0dp" + android:layout_height = "wrap_content" + android:layout_marginLeft = "10dp" + android:layout_marginRight = "8dp" + android:layout_weight = "1" + android:orientation = "vertical" > - + - + + + + + + + + + + + + + + + + + + + + + + android:layout_height = "17dp" + android:layout_gravity = "fill_vertical" + android:orientation = "horizontal" + android:visibility = "visible" > + + + + + + + - + android:text = "即将开服" + android:textColor = "@color/hint" + android:visibility = "gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetail_item_intro.xml b/app/src/main/res/layout/gamedetail_item_intro.xml index 10990c1d5e..f0636355ba 100644 --- a/app/src/main/res/layout/gamedetail_item_intro.xml +++ b/app/src/main/res/layout/gamedetail_item_intro.xml @@ -33,7 +33,7 @@ android:id = "@+id/gamedetail_item_intro_content" android:layout_width = "match_parent" android:layout_height = "wrap_content" - android:layout_marginTop = "15sp" + android:layout_marginTop = "15dp" android:lineSpacingMultiplier = "1.2" android:text = "@string/game_intro_content" android:textColor = "@color/text_3a3a3a" diff --git a/app/src/main/res/layout/gamedetail_item_kaifu.xml b/app/src/main/res/layout/gamedetail_item_kaifu.xml index 7c715be4ed..84f2b21402 100644 --- a/app/src/main/res/layout/gamedetail_item_kaifu.xml +++ b/app/src/main/res/layout/gamedetail_item_kaifu.xml @@ -149,4 +149,15 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/kaifu_timehint_item.xml b/app/src/main/res/layout/kaifu_timehint_item.xml new file mode 100644 index 0000000000..190f769a3e --- /dev/null +++ b/app/src/main/res/layout/kaifu_timehint_item.xml @@ -0,0 +1,31 @@ + + + + + + + + + + \ No newline at end of file