diff --git a/app/src/main/java/com/gh/common/util/TimestampUtils.java b/app/src/main/java/com/gh/common/util/TimestampUtils.java index e40d6aa6a0..979cd12f4f 100644 --- a/app/src/main/java/com/gh/common/util/TimestampUtils.java +++ b/app/src/main/java/com/gh/common/util/TimestampUtils.java @@ -160,6 +160,8 @@ public class TimestampUtils { * 去除url中的timestamp */ public static String removeTimestamp(String url) { + if (!url.contains("timestamp")) return url; + int index = url.lastIndexOf("timestamp"); String params = url.substring(index); //连接符 diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 6a92d530ef..5549709f2e 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -253,13 +253,13 @@ public class SplashScreenActivity extends BaseActivity { if (EasyPermissions.hasPermissions(this, permissions)) { if (!isNewFirstLaunch) { long end = System.currentTimeMillis() - start; - if (end < 3000) { + if (end < 2000) { getWindow().getDecorView().postDelayed(new Runnable() { @Override public void run() { launch(); } - }, 3000 - end); + }, 2000 - end); } else { launch(); } 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 c6c29eaeee..490acf3079 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -260,35 +260,22 @@ public class PlatformAdapter extends BaseRecyclerAdapter { || downloadEntity.getStatus().equals(DownloadStatus.notfound)) { String path = PlatformUtils.getInstance(mContext) .getPlatformPicUrl(apkEntity.getPlatform()); - if (path != null) { - viewHolder.mDownloadItemIvPic.setVisibility(View.VISIBLE); - viewHolder.mDownloadItemIvPic.setImageURI(path); - viewHolder.mDownloadItemTvHint.setVisibility(View.GONE); - viewHolder.mDownloadItemProgressbar.setVisibility(View.GONE); - viewHolder.mDownloadItemTvName.setVisibility(View.GONE); - viewHolder.mDownloadItemTvStatus.setVisibility(View.GONE); - viewHolder.itemView.setBackgroundColor(0x00ffffff); - } else { + + viewHolder.mDownloadItemIvPic.setVisibility(View.VISIBLE); + viewHolder.mDownloadItemTvHint.setVisibility(View.VISIBLE); + viewHolder.mDownloadItemTvName.setVisibility(View.VISIBLE); + viewHolder.mDownloadItemTvStatus.setVisibility(View.GONE); + viewHolder.mDownloadItemProgressbar.setVisibility(View.GONE); + viewHolder.itemView.setBackgroundColor(0x00ffffff); + viewHolder.mDownloadItemTvHint.setText( + PlatformUtils.getInstance(mContext).getPlatformName(apkEntity.getPlatform())); + + if (TextUtils.isEmpty(path)) { int id = PlatformUtils.getInstance(mContext).getPlatformPic( apkEntity.getPlatform()); - if (id != 0) { - viewHolder.mDownloadItemIvPic.setVisibility(View.VISIBLE); - ImageUtils.Companion.display(viewHolder.mDownloadItemIvPic, id); - viewHolder.mDownloadItemTvHint.setVisibility(View.GONE); - viewHolder.mDownloadItemProgressbar.setVisibility(View.GONE); - viewHolder.mDownloadItemTvName.setVisibility(View.GONE); - viewHolder.mDownloadItemTvStatus.setVisibility(View.GONE); - viewHolder.itemView.setBackgroundColor(0x00ffffff); - } else { - viewHolder.mDownloadItemIvPic.setVisibility(View.GONE); - viewHolder.mDownloadItemTvHint.setVisibility(View.VISIBLE); - viewHolder.mDownloadItemTvHint.setText( - PlatformUtils.getInstance(mContext).getPlatformName(apkEntity.getPlatform())); - viewHolder.mDownloadItemProgressbar.setVisibility(View.GONE); - viewHolder.mDownloadItemTvName.setVisibility(View.GONE); - viewHolder.mDownloadItemTvStatus.setVisibility(View.GONE); - viewHolder.itemView.setBackgroundColor(0x00ffffff); - } + ImageUtils.Companion.display(viewHolder.mDownloadItemIvPic, id); + } else { + ImageUtils.Companion.display(viewHolder.mDownloadItemIvPic, path); } } else { viewHolder.mDownloadItemIvPic.setVisibility(View.GONE); @@ -323,13 +310,13 @@ public class PlatformAdapter extends BaseRecyclerAdapter { } else { // 合集 viewHolder.mDownloadItemIvPic.setVisibility(View.VISIBLE); - viewHolder.mDownloadItemTvHint.setVisibility(View.GONE); - viewHolder.mDownloadItemProgressbar.setVisibility(View.GONE); - viewHolder.mDownloadItemTvName.setVisibility(View.GONE); + viewHolder.mDownloadItemTvHint.setVisibility(View.VISIBLE); + viewHolder.mDownloadItemTvName.setVisibility(View.VISIBLE); viewHolder.mDownloadItemTvStatus.setVisibility(View.GONE); + viewHolder.mDownloadItemProgressbar.setVisibility(View.GONE); viewHolder.itemView.setBackgroundColor(0x00ffffff); + viewHolder.mDownloadItemTvHint.setText(apkEntity.getApkCollection().getName()); -// viewHolder.mDownloadItemIvPic.setImageURI(apkEntity.getApkCollection().getIcon()); ImageUtils.Companion.display(viewHolder.mDownloadItemIvPic, apkEntity.getApkCollection().getIcon()); if (mCloseEntity.getPosition() == position && mAdapterPosition == mCloseEntity.getAdapterPosition()) { viewHolder.mDownloadItemOpenCollection.setVisibility(View.GONE); diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java index da61b27d11..2b5c73c6fd 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java @@ -174,7 +174,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { public void initSubjectDigest(final boolean isLoadMore) { RetrofitManager.getInstance(mContext).getApi() - .getSubjectDigest() + .getSubjectDigest(null) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { @@ -204,7 +204,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { } private void initSlide(final boolean isFirst) { - RetrofitManager.getInstance(mContext).getApi().getSlide() + RetrofitManager.getInstance(mContext).getApi().getSlide(null) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { @@ -231,7 +231,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { } private void initSubjectList() { - RetrofitManager.getInstance(mContext).getApi().getColumn() + RetrofitManager.getInstance(mContext).getApi().getColumn(null) .map(new Func1, List>() { @Override public List call(List list) { @@ -275,19 +275,19 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { @Override public void onResponse(List response) { if (response.size() != 0) { - if (!mGameFragment.isHidden() && !mGameFragment.isEverpause()) { - if (mPluginList.isEmpty()) { - mSubjectList = response; - notifyItemRangeInserted(1, getItemCount() - 2); - } else { - mSubjectList = response; - initItemCount(); - notifyItemRangeInserted(2, getItemCount() - 3); - } - } else { - mSubjectList = response; - notifyDataSetChanged(); - } +// if (!mGameFragment.isHidden() && !mGameFragment.isEverpause()) { +// if (mPluginList.isEmpty()) { +// mSubjectList = response; +// notifyItemRangeInserted(1, getItemCount() - 2); +// } else { +// mSubjectList = response; +// initItemCount(); +// notifyItemRangeInserted(2, getItemCount() - 3); +// } +// } else { + mSubjectList = response; + notifyDataSetChanged(); +// } initItemCount(); initLocationMap(); } @@ -302,6 +302,12 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { initPlugin(); } + @Override + public void onError(Throwable e) { + super.onError(e); + Utils.log("========EEEE::" + e.toString()); + } + @Override public void onFailure(HttpException e) { if (mCallBackListener != null) { @@ -558,11 +564,11 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { private void initGamePluginViewHolder(final GamePluginViewHolder holder) { // if (mPluginAdapter == null) { - holder.mPluginRv.setLayoutManager(new LinearLayoutManager(mContext)); - ((DefaultItemAnimator) holder.mPluginRv.getItemAnimator()).setSupportsChangeAnimations(false); - mPluginAdapter = new GamePluginAdapter(mContext, mPluginList); - mPluginAdapter.openList(isOpenPluginList); - holder.mPluginRv.setAdapter(mPluginAdapter); + holder.mPluginRv.setLayoutManager(new LinearLayoutManager(mContext)); + ((DefaultItemAnimator) holder.mPluginRv.getItemAnimator()).setSupportsChangeAnimations(false); + mPluginAdapter = new GamePluginAdapter(mContext, mPluginList); + mPluginAdapter.openList(isOpenPluginList); + holder.mPluginRv.setAdapter(mPluginAdapter); // } else { // 复用旧的adapter 数据变化无法刷新界面 点解??? // mPluginAdapter.openList(isOpenPluginList); // mPluginAdapter.notifyDataSetChanged(); diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java b/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java index 4609905ea4..08d25032e6 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java @@ -10,6 +10,7 @@ import com.gh.common.util.LoginUtils; import com.gh.common.util.NetworkUtils; import com.gh.common.util.StringUtils; import com.gh.common.util.TimestampUtils; +import com.gh.gamecenter.entity.SubjectEntity; import com.lightgame.utils.Utils; import java.io.IOException; @@ -19,6 +20,7 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import okhttp3.Cache; import okhttp3.CacheControl; import okhttp3.HttpUrl; import okhttp3.Interceptor; @@ -27,6 +29,7 @@ import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import okio.Buffer; +import rx.schedulers.Schedulers; /** * Created by LGT on 2016/11/8. @@ -99,7 +102,7 @@ class OkHttpCacheInterceptor implements Interceptor { params.append(paramsList.get(i)); params.append("="); params.append(HttpUrl.parse(url).queryParameter(paramsList.get(i))); - if (i != paramsList.size() -1) { + if (i != paramsList.size() - 1) { params.append("&"); } } @@ -116,6 +119,43 @@ class OkHttpCacheInterceptor implements Interceptor { response = chain.proceed(request); Utils.log("Authorization::" + str + "\n" + url + "\n" + signature + "\n" + encode + "\n" + Config.USERSEA_APP_SECRET); + } else if ((url.contains("/index/column") || url.contains("/index/slides") || url.contains("/index/recommend")) + && TextUtils.isEmpty(request.header("tag"))) { + + // 对应首页-游戏特殊的缓存策略 + byte[] data = OkHttpCache.getCache(mContext, TimestampUtils.removeTimestamp(url)); + if (data != null) { + request = request.newBuilder() + .cacheControl(CacheControl.FORCE_CACHE) + .build(); + + data = GzipUtils.decompressBytes(data); + response = chain.proceed(request); + response = response.newBuilder() + .code(200) + .message("OK") + .body(ResponseBody.create(MediaType.parse("application/json"), data)) + .build(); + if (url.contains("/index/column")) { + RetrofitManager.getInstance(mContext).getApi() + .getColumn("retry") + .subscribeOn(Schedulers.io()) + .subscribe(new com.gh.gamecenter.retrofit.Response<>()); + } else if (url.contains("/index/slides")) { + RetrofitManager.getInstance(mContext).getApi() + .getSlide("retry") + .subscribeOn(Schedulers.io()) + .subscribe(new com.gh.gamecenter.retrofit.Response<>()); + } else if (url.contains("/index/recommend")) { + RetrofitManager.getInstance(mContext).getApi() + .getSubjectDigest("retry") + .subscribeOn(Schedulers.io()) + .subscribe(new com.gh.gamecenter.retrofit.Response<>()); + } + } else { + response = chain.proceed(request); + } + } else { response = chain.proceed(request); diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index 10335343f4..5792193a2d 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -223,13 +223,20 @@ public interface ApiService { * 获取首页滚动图 */ @GET("index/slides") - Observable> getSlide(); + Observable> getSlide(@Header("tag") String tag); /** * 获取游戏插件专题数据 */ @GET("index/column") - Observable> getColumn(); + Observable> getColumn(@Header("tag") String tag); + + /** + * 获取主页专题入口数据 + */ + @GET("index/recommend") + Observable> getSubjectDigest(@Header("tag") String tag); + /** * 获取专题数据 @@ -256,12 +263,6 @@ public interface ApiService { @GET("support/download_status") Observable getDownloadStatus(@Query("version") String version, @Query("channel") String channel); - /** - * 获取主页专题入口数据 - */ - @GET("index/recommend") - Observable> getSubjectDigest(); - /** * 获取专题游戏 用于主页换一批 */ diff --git a/app/src/main/res/layout/game_download_item.xml b/app/src/main/res/layout/game_download_item.xml index 9c5f54d988..d6c6edda9b 100644 --- a/app/src/main/res/layout/game_download_item.xml +++ b/app/src/main/res/layout/game_download_item.xml @@ -33,15 +33,6 @@ android:gravity = "center" android:textColor = "@android:color/white" /> - - + +