From 243e024d1a1be3bd3df778d39609e71c208bdafd Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 6 Jul 2017 19:50:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=8B=E7=9B=9F=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=88=9D=E5=A7=8B=E5=8C=96=E5=BC=82=E5=B8=B8=EF=BC=8C?= =?UTF-8?q?ImageUtils=E4=BB=A3=E7=A0=81=E8=BD=AC=E6=8D=A2kotlin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/base/AppController.java | 81 ++++++------ .../main/java/com/gh/base/BaseActivity.java | 2 +- .../gh/common/util/ConcernContentUtils.java | 6 +- .../java/com/gh/common/util/ConcernUtils.java | 81 ------------ .../java/com/gh/common/util/ConcernUtils.kt | 63 ++++++++++ .../java/com/gh/common/util/ImageUtils.java | 117 ------------------ .../java/com/gh/common/util/ImageUtils.kt | 111 +++++++++++++++++ .../java/com/gh/common/util/ShareUtils.java | 2 +- .../com/gh/gamecenter/ConcernActivity.java | 2 +- .../com/gh/gamecenter/GameDetailActivity.java | 6 +- .../gh/gamecenter/MessageDetailActivity.java | 4 +- .../com/gh/gamecenter/ShareCardActivity.java | 2 +- .../gh/gamecenter/ShareCardPicActivity.java | 2 +- .../com/gh/gamecenter/UserInfoActivity.java | 2 +- .../com/gh/gamecenter/ViewImageActivity.java | 4 +- .../com/gh/gamecenter/WeiBoShareActivity.java | 2 +- .../adapter/CommentDetailAdapter.java | 4 +- .../gh/gamecenter/adapter/ConcernAdapter.java | 2 +- .../adapter/ConcernRecommendAdapter.java | 2 +- .../gamecenter/adapter/ImagePagerAdapter.java | 2 +- .../adapter/InstallFragmentAdapter.java | 2 +- .../gh/gamecenter/adapter/KaiFuAdapter.java | 2 +- .../adapter/LibaoDetailAdapter.java | 2 +- .../adapter/MessageDetailAdapter.java | 6 +- .../gamecenter/adapter/PlatformAdapter.java | 2 +- .../gh/gamecenter/adapter/PluginAdapter.java | 2 +- .../gamecenter/adapter/ToolBoxRvAdapter.java | 2 +- .../viewholder/GameTestViewHolder.java | 2 +- .../download/GameDownloadFragmentAdapter.java | 2 +- .../download/GameUpdateFragmentAdapter.java | 2 +- .../gh/gamecenter/fragment/MainFragment.java | 2 + .../gamecenter/game/GameFragmentAdapter.java | 6 +- .../gh/gamecenter/gamedetail/FuLiAdapter.java | 2 +- .../gamedetail/GameDetailToolsAdapter.java | 2 +- .../gamedetail/GameGalleryAdapter.java | 2 +- .../gamecenter/gamedetail/XinXiAdapter.java | 2 +- .../libao/Libao1FragmentAdapter.java | 2 +- .../libao/Libao2FragmentAdapter.java | 4 +- .../libao/Libao3FragmentAdapter.java | 2 +- .../message/CommentFragmentAdapter.java | 2 +- .../message/KeFuFragmentAdapter.java | 6 +- .../message/NoticeFragmentAdapter.java | 6 +- .../gamecenter/news/News1FragmentAdapter.java | 10 +- .../com/gh/gamecenter/news/News2Fragment.java | 2 +- .../gamecenter/news/News2FragmentAdapter.java | 4 +- .../gamecenter/news/News4FragmentAdapter.java | 10 +- .../newsdetail/NewsDetailAdapter.java | 8 +- .../personal/ConcernFragmentAdapter.java | 2 +- .../personal/InstallFragmentAdapter.java | 2 +- .../gamecenter/personal/PersonalFragment.java | 2 + .../SearchGameDetailFragmentAdapter.java | 2 +- .../search/SearchGameListFragmentAdapter.java | 2 +- .../gh/gamecenter/subject/SubjectAdapter.java | 6 +- .../libs/utdid4all-1.1.5.3_proguard.jar | Bin 0 -> 49743 bytes 54 files changed, 294 insertions(+), 315 deletions(-) delete mode 100644 app/src/main/java/com/gh/common/util/ConcernUtils.java create mode 100644 app/src/main/java/com/gh/common/util/ConcernUtils.kt delete mode 100644 app/src/main/java/com/gh/common/util/ImageUtils.java create mode 100644 app/src/main/java/com/gh/common/util/ImageUtils.kt create mode 100644 libraries/UmengPush/libs/utdid4all-1.1.5.3_proguard.jar diff --git a/app/src/main/java/com/gh/base/AppController.java b/app/src/main/java/com/gh/base/AppController.java index 6b85c49c71..ef5827fa2d 100644 --- a/app/src/main/java/com/gh/base/AppController.java +++ b/app/src/main/java/com/gh/base/AppController.java @@ -16,9 +16,9 @@ import com.gh.common.constant.Config; import com.gh.common.util.DataUtils; import com.gh.common.util.StringUtils; import com.gh.common.util.TokenUtils; -import com.lightgame.utils.Utils; import com.gh.gamecenter.BuildConfig; import com.leon.channel.helper.ChannelReaderUtil; +import com.lightgame.utils.Utils; import com.umeng.message.IUmengRegisterCallback; import com.umeng.message.PushAgent; import com.umeng.message.UTrack; @@ -79,11 +79,16 @@ public class AppController extends Application { return mChannel; } + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } + @Override public void onCreate() { super.onCreate(); - MultiDex.install(this); mInstance = this; //TODO 强烈不建议开发阶段开启这个Handler,必须处理错误 @@ -153,47 +158,41 @@ public class AppController extends Application { }; Logger.setLogger(this, newLogger); } - - try { - //友盟推送 - final PushAgent pushAgent = PushAgent.getInstance(this); - pushAgent.setAppkeyAndSecret(Config.UMENG_APPKEY, Config.UMENG_MESSAGE_SECRET); - if (BuildConfig.DEBUG) { - // 设置debug的key,覆盖掉原值,非debug build这个if分支会被去掉 - pushAgent.setAppkeyAndSecret(Config.DEBUG_UMENG_APPKEY, Config.DEBUG_UMENG_MESSAGE_SECRET); - } - - //注册推送服务,每次调用register方法都会回调该接口 - pushAgent.register(new IUmengRegisterCallback() { - - @Override - public void onSuccess(String deviceToken) { - //注册成功会返回device token - Utils.log("deviceToken::" + deviceToken); - - //设置别名 - pushAgent.addExclusiveAlias(TokenUtils.getDeviceId(getApplicationContext()), - "GHDID", new UTrack.ICallBack() { - @Override - public void onMessage(boolean b, String s) { - Utils.log(StringUtils.buildString("ExclusiveAlias::", String.valueOf(b), "==", s)); - - } - }); - } - - @Override - public void onFailure(String s, String s1) { - Utils.log("deviceToken::" + "注册失败"); - } - }); - - // 友盟推送数据处理 - pushAgent.setNotificationClickHandler(new GHUmengNotificationClickHandler()); - } catch (Exception e) { - e.printStackTrace(); + //友盟推送 + final PushAgent pushAgent = PushAgent.getInstance(this); + pushAgent.setAppkeyAndSecret(Config.UMENG_APPKEY, Config.UMENG_MESSAGE_SECRET); + if (BuildConfig.DEBUG) { + // 设置debug的key,覆盖掉原值,非debug build这个if分支会被去掉 + pushAgent.setAppkeyAndSecret(Config.DEBUG_UMENG_APPKEY, Config.DEBUG_UMENG_MESSAGE_SECRET); } + //注册推送服务,每次调用register方法都会回调该接口 + pushAgent.register(new IUmengRegisterCallback() { + + @Override + public void onSuccess(String deviceToken) { + //注册成功会返回device token + Utils.log("deviceToken::" + deviceToken); + + //设置别名 + pushAgent.addExclusiveAlias(TokenUtils.getDeviceId(getApplicationContext()), + "GHDID", new UTrack.ICallBack() { + @Override + public void onMessage(boolean b, String s) { + Utils.log(StringUtils.buildString("ExclusiveAlias::", String.valueOf(b), "==", s)); + + } + }); + } + + @Override + public void onFailure(String s, String s1) { + Utils.log("deviceToken::" + "注册失败"); + } + }); + + // 友盟推送数据处理 + pushAgent.setNotificationClickHandler(new GHUmengNotificationClickHandler()); // // 监听屏幕状态广播 // if (shouldInit()) { // UnlockScreenReceiver unlockScreenReceiver = new UnlockScreenReceiver(); diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index ec3574d36a..a0adf6e060 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -123,7 +123,7 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity implemen public void onEventMainThread(final EBShowDialog showDialog) { if (!mIsPause && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { if ("hijack".equals(showDialog.getType())) { - DialogUtils.showQqSessionDialog(this, null);// 建议用户联系客服 + DialogUtils.showQqSessionDialog(this, "2586716223");// 建议用户联系客服 } else if ("plugin".equals(showDialog.getType())) { DialogUtils.showPluginDialog(this, new DialogUtils.ConfirmListener() { @Override diff --git a/app/src/main/java/com/gh/common/util/ConcernContentUtils.java b/app/src/main/java/com/gh/common/util/ConcernContentUtils.java index 4c07df02b1..55c81620e3 100644 --- a/app/src/main/java/com/gh/common/util/ConcernContentUtils.java +++ b/app/src/main/java/com/gh/common/util/ConcernContentUtils.java @@ -69,7 +69,7 @@ public class ConcernContentUtils { DisplayUtils.dip2px(context, 2), DisplayUtils.dip2px(context, 4)); lparams.weight = 1; imageView.setLayoutParams(lparams); - ImageUtils.getInstance().display(context.getResources(), imageView, + ImageUtils.Companion.getInstance().display(context.getResources(), imageView, ScalingUtils.ScaleType.CENTER_CROP, list.get(position)); break; case 1: @@ -78,7 +78,7 @@ public class ConcernContentUtils { lparams.setMargins(DisplayUtils.dip2px(context, 2), 0, DisplayUtils.dip2px(context, 2), DisplayUtils.dip2px(context, 4)); imageView.setLayoutParams(lparams); - ImageUtils.getInstance().display(context.getResources(), imageView, + ImageUtils.Companion.getInstance().display(context.getResources(), imageView, ScalingUtils.ScaleType.CENTER_CROP, list.get(position)); break; default: @@ -89,7 +89,7 @@ public class ConcernContentUtils { DisplayUtils.dip2px(context, 2), DisplayUtils.dip2px(context, 4)); lparams.weight = 1; imageView.setLayoutParams(lparams); - ImageUtils.getInstance().display(context.getResources(), imageView, + ImageUtils.Companion.getInstance().display(context.getResources(), imageView, ScalingUtils.ScaleType.CENTER_CROP, list.get(position)); break; } diff --git a/app/src/main/java/com/gh/common/util/ConcernUtils.java b/app/src/main/java/com/gh/common/util/ConcernUtils.java deleted file mode 100644 index 7430fa51b4..0000000000 --- a/app/src/main/java/com/gh/common/util/ConcernUtils.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gh.common.util; - -import android.content.Context; - -import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; - -import org.greenrobot.eventbus.EventBus; -import org.json.JSONArray; - -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import retrofit2.HttpException; -import rx.Observable; -import rx.functions.Func1; -import rx.schedulers.Schedulers; - -/** - * Created by khy on 2016/8/24. - * croncern 工具类 - */ -public class ConcernUtils { - - public static void postConcernGameId(final Context context, final String gameId) { - TokenUtils.getToken(context, true) - .flatMap(new Func1>() { - @Override - public Observable call(String token) { - JSONArray params = new JSONArray(); - params.put(gameId); - RequestBody body = RequestBody.create(MediaType.parse("application/json"), params.toString()); - return RetrofitManager.getUser().postConcern(token, body); - } - }).subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe(new Response()); - } - - public static void deleteConcernData(final Context context, final String gameId) { - TokenUtils.getToken(context, true) - .flatMap(new Func1>() { - @Override - public Observable call(String token) { - return RetrofitManager.getUser().deleteConcern(token, gameId); - } - }).subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe(new Response()); - } - - public static void updateConcernData(final Context context, final JSONArray data) { - TokenUtils.getToken(context, true) - .flatMap(new Func1>() { - @Override - public Observable call(String token) { - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - data.toString()); - return RetrofitManager.getUser().putConcern(token, body); - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe(new Response() { - @Override - public void onResponse(ResponseBody response) { - super.onResponse(response); - EventBus.getDefault().post(new EBReuse("UpdateConcernSuccess")); - } - - @Override - public void onFailure(HttpException e) { - super.onFailure(e); - EventBus.getDefault().post(new EBReuse("UpdateConcernFailure")); - } - }); - } - -} - diff --git a/app/src/main/java/com/gh/common/util/ConcernUtils.kt b/app/src/main/java/com/gh/common/util/ConcernUtils.kt new file mode 100644 index 0000000000..4db1bca26a --- /dev/null +++ b/app/src/main/java/com/gh/common/util/ConcernUtils.kt @@ -0,0 +1,63 @@ +package com.gh.common.util + +import android.content.Context +import com.gh.gamecenter.eventbus.EBReuse +import com.gh.gamecenter.retrofit.Response +import com.gh.gamecenter.retrofit.RetrofitManager +import okhttp3.MediaType +import okhttp3.RequestBody +import okhttp3.ResponseBody +import org.greenrobot.eventbus.EventBus +import org.json.JSONArray +import retrofit2.HttpException +import rx.schedulers.Schedulers + +/** + * Created by khy on 2016/8/24. + * croncern 工具类 + */ +object ConcernUtils { + + fun postConcernGameId(context: Context, gameId: String) { + TokenUtils.getToken(context, true) + .flatMap { token -> + val params = JSONArray() + params.put(gameId) + val body = RequestBody.create(MediaType.parse("application/json"), params.toString()) + RetrofitManager.getUser().postConcern(token, body) + }.subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(Response()) + } + + fun deleteConcernData(context: Context, gameId: String) { + TokenUtils.getToken(context, true) + .flatMap { token -> RetrofitManager.getUser().deleteConcern(token, gameId) }.subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(Response()) + } + + fun updateConcernData(context: Context, data: JSONArray) { + TokenUtils.getToken(context, true) + .flatMap { token -> + val body = RequestBody.create(MediaType.parse("application/json"), + data.toString()) + RetrofitManager.getUser().putConcern(token, body) + } + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody) { + super.onResponse(response) + EventBus.getDefault().post(EBReuse("UpdateConcernSuccess")) + } + + override fun onFailure(e: HttpException) { + super.onFailure(e) + EventBus.getDefault().post(EBReuse("UpdateConcernFailure")) + } + }) + } + +} + diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.java b/app/src/main/java/com/gh/common/util/ImageUtils.java deleted file mode 100644 index 58e318b713..0000000000 --- a/app/src/main/java/com/gh/common/util/ImageUtils.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.gh.common.util; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.drawable.Animatable; -import android.graphics.drawable.ColorDrawable; -import android.net.Uri; -import android.support.v4.content.ContextCompat; -import android.view.ViewGroup; - -import com.facebook.common.executors.CallerThreadExecutor; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.controller.BaseControllerListener; -import com.facebook.drawee.controller.ControllerListener; -import com.facebook.drawee.drawable.ScalingUtils; -import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; -import com.facebook.drawee.view.SimpleDraweeView; -import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber; -import com.facebook.imagepipeline.image.ImageInfo; -import com.facebook.imagepipeline.request.ImageRequest; -import com.facebook.imagepipeline.request.ImageRequestBuilder; -import com.gh.gamecenter.R; - -public class ImageUtils { - - private static ImageUtils singleton; - - public static ImageUtils getInstance() { - if (singleton == null) { - synchronized (ImageUtils.class) { - if (singleton == null) { - singleton = new ImageUtils(); - return singleton; - } - } - } - return singleton; - } - - // 自适应图片宽高 - public void display(final SimpleDraweeView simpleDraweeView, String url, final int width) { - ControllerListener listener = new BaseControllerListener() { - @Override - public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) { - if (imageInfo == null) { - return; - } - ViewGroup.LayoutParams layoutParams = simpleDraweeView.getLayoutParams(); - float scale = (float) imageInfo.getHeight() / (float) imageInfo.getWidth(); - layoutParams.height = (int) (width * scale); - simpleDraweeView.setLayoutParams(layoutParams); - } - }; - simpleDraweeView.setController(Fresco.newDraweeControllerBuilder() - .setUri(url) - .setControllerListener(listener) - .build()); - } - - // 设置缩放类型,设置按压状态下的叠加图 - public void display(Resources resources, SimpleDraweeView simpleDraweeView, - ScalingUtils.ScaleType scaleType, String url) { - final Context context = simpleDraweeView.getContext(); - simpleDraweeView.setHierarchy(new GenericDraweeHierarchyBuilder(resources) - .setFadeDuration(500) - .setPressedStateOverlay(new ColorDrawable(ContextCompat.getColor(context, R.color.pressed_bg))) - .setPlaceholderImage(R.drawable.ocupy2, ScalingUtils.ScaleType.CENTER) - .setBackground(new ColorDrawable(ContextCompat.getColor(context, R.color.placeholder_bg))) - .setActualImageScaleType(scaleType) - .build()); -// simpleDraweeView.setImageURI(url); - display(simpleDraweeView, url); - } - - public static void display(SimpleDraweeView simpleDraweeView, String url) { -// if (url.startsWith("http://image.ghzhushou.com") && url.endsWith(".jpg")) { -// url = url + "?x-oss-process=image/format,webp"; -// } - simpleDraweeView.setImageURI(url); - } - - // 设置占位符 - public void display(Resources resources, SimpleDraweeView simpleDraweeView, String url, int placeholderImage) { - final Context context = simpleDraweeView.getContext(); - simpleDraweeView.setHierarchy(new GenericDraweeHierarchyBuilder(resources) - .setFadeDuration(500) - .setPressedStateOverlay(new ColorDrawable(ContextCompat.getColor(context, R.color.pressed_bg))) - .setBackground(new ColorDrawable(ContextCompat.getColor(context, R.color.placeholder_bg))) - .setPlaceholderImage(placeholderImage) - .build()); -// simpleDraweeView.setImageURI(url); - display(simpleDraweeView, url); - } - - // 图片下载监听和设置低高分辨率图片 - public void display(SimpleDraweeView simpleDraweeView, String url, String lowUrl, - ControllerListener listener) { - simpleDraweeView.setController(Fresco.newDraweeControllerBuilder() - .setImageRequest(ImageRequest.fromUri(url)) - .setControllerListener(listener) - .setLowResImageRequest(ImageRequest.fromUri(lowUrl)) // 低分辨率图片 - .build()); - } - - // 获取bitmap - public void display(Context context, String url, BaseBitmapDataSubscriber dataSubscriber) { - ImageRequest imageRequest = ImageRequestBuilder - .newBuilderWithSource(Uri.parse(url)) - .setProgressiveRenderingEnabled(true) - .build(); - - Fresco.getImagePipeline() - .fetchDecodedImage(imageRequest, context) - .subscribe(dataSubscriber, CallerThreadExecutor.getInstance()); - } - -} diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.kt b/app/src/main/java/com/gh/common/util/ImageUtils.kt new file mode 100644 index 0000000000..2edc5c708a --- /dev/null +++ b/app/src/main/java/com/gh/common/util/ImageUtils.kt @@ -0,0 +1,111 @@ +package com.gh.common.util + +import android.content.Context +import android.content.res.Resources +import android.graphics.drawable.Animatable +import android.graphics.drawable.ColorDrawable +import android.net.Uri +import android.support.v4.content.ContextCompat +import com.facebook.common.executors.CallerThreadExecutor +import com.facebook.drawee.backends.pipeline.Fresco +import com.facebook.drawee.controller.BaseControllerListener +import com.facebook.drawee.controller.ControllerListener +import com.facebook.drawee.drawable.ScalingUtils +import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder +import com.facebook.drawee.view.SimpleDraweeView +import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber +import com.facebook.imagepipeline.image.ImageInfo +import com.facebook.imagepipeline.request.ImageRequest +import com.facebook.imagepipeline.request.ImageRequestBuilder +import com.gh.gamecenter.R + +class ImageUtils { + + // 自适应图片宽高 + fun display(simpleDraweeView: SimpleDraweeView, url: String, width: Int) { + val listener = object : BaseControllerListener() { + override fun onFinalImageSet(id: String?, imageInfo: ImageInfo?, animatable: Animatable?) { + if (imageInfo == null) { + return + } + val layoutParams = simpleDraweeView.layoutParams + val scale = imageInfo.height.toFloat() / imageInfo.width.toFloat() + layoutParams.height = (width * scale).toInt() + simpleDraweeView.layoutParams = layoutParams + } + } + simpleDraweeView.controller = Fresco.newDraweeControllerBuilder() + .setUri(url) + .setControllerListener(listener) + .build() + } + + // 设置缩放类型,设置按压状态下的叠加图 + fun display(resources: Resources, simpleDraweeView: SimpleDraweeView, + scaleType: ScalingUtils.ScaleType, url: String) { + val context = simpleDraweeView.context + simpleDraweeView.hierarchy = GenericDraweeHierarchyBuilder(resources) + .setFadeDuration(500) + .setPressedStateOverlay(ColorDrawable(ContextCompat.getColor(context, R.color.pressed_bg))) + .setPlaceholderImage(R.drawable.ocupy2, ScalingUtils.ScaleType.CENTER) + .setBackground(ColorDrawable(ContextCompat.getColor(context, R.color.placeholder_bg))) + .setActualImageScaleType(scaleType) + .build() + // simpleDraweeView.setImageURI(url); + display(simpleDraweeView, url) + } + + // 设置占位符 + fun display(resources: Resources, simpleDraweeView: SimpleDraweeView, url: String, placeholderImage: Int) { + val context = simpleDraweeView.context + simpleDraweeView.hierarchy = GenericDraweeHierarchyBuilder(resources) + .setFadeDuration(500) + .setPressedStateOverlay(ColorDrawable(ContextCompat.getColor(context, R.color.pressed_bg))) + .setBackground(ColorDrawable(ContextCompat.getColor(context, R.color.placeholder_bg))) + .setPlaceholderImage(placeholderImage) + .build() + // simpleDraweeView.setImageURI(url); + display(simpleDraweeView, url) + } + + // 图片下载监听和设置低高分辨率图片 + fun display(simpleDraweeView: SimpleDraweeView, url: String, lowUrl: String, + listener: ControllerListener) { + simpleDraweeView.controller = Fresco.newDraweeControllerBuilder() + .setImageRequest(ImageRequest.fromUri(url)) + .setControllerListener(listener) + .setLowResImageRequest(ImageRequest.fromUri(lowUrl)) // 低分辨率图片 + .build() + } + + // 获取bitmap + fun display(context: Context, url: String, dataSubscriber: BaseBitmapDataSubscriber) { + val imageRequest = ImageRequestBuilder + .newBuilderWithSource(Uri.parse(url)) + .setProgressiveRenderingEnabled(true) + .build() + + Fresco.getImagePipeline() + .fetchDecodedImage(imageRequest, context) + .subscribe(dataSubscriber, CallerThreadExecutor.getInstance()) + } + + companion object { + + fun getInstance(): ImageUtils { + return Inner.anotherSingle + } + + private object Inner { + val anotherSingle = ImageUtils() + } + + fun display(simpleDraweeView: SimpleDraweeView, url: String) { + // if (url.startsWith("http://image.ghzhushou.com") && url.endsWith(".jpg")) { + // url = url + "?x-oss-process=image/format,webp"; + // } + simpleDraweeView.setImageURI(url) + } + } + +} diff --git a/app/src/main/java/com/gh/common/util/ShareUtils.java b/app/src/main/java/com/gh/common/util/ShareUtils.java index 7bbc19a883..3292236145 100644 --- a/app/src/main/java/com/gh/common/util/ShareUtils.java +++ b/app/src/main/java/com/gh/common/util/ShareUtils.java @@ -299,7 +299,7 @@ public class ShareUtils { } private void loadBitMap(final String iconUrl, final WXMediaMessage msg, final SendMessageToWX.Req req) { - ImageUtils.getInstance().display(mContext, iconUrl, new BaseBitmapDataSubscriber() { + ImageUtils.Companion.getInstance().display(mContext, iconUrl, new BaseBitmapDataSubscriber() { @Override protected void onNewResultImpl(Bitmap bitmap) { Bitmap compressBp = compressBitmap(bitmap); diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index 9c794dcb03..8bd9ce01f8 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -94,7 +94,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { for (ConcernInfo concernInfo : concernManager.getConcernGame()) { data.put(concernInfo.getId()); } - ConcernUtils.updateConcernData(this, data); + ConcernUtils.INSTANCE.updateConcernData(this, data); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index e75a6277f2..8d36055f82 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -291,7 +291,7 @@ public class GameDetailActivity extends BaseActivity { } mGameName.setText(mGameEntity.getName()); - ImageUtils.display(mGameIcon, mGameEntity.getIcon()); + ImageUtils.Companion.display(mGameIcon, mGameEntity.getIcon()); if (mGameEntity.getApk() == null || mGameEntity.getApk().isEmpty()) { mGameInfo.setText(""); } else { @@ -510,7 +510,7 @@ public class GameDetailActivity extends BaseActivity { Toast.makeText(GameDetailActivity.this, "关注成功", Toast.LENGTH_SHORT).show(); // 添加关注 - ConcernUtils.postConcernGameId(GameDetailActivity.this, mGameEntity.getId()); + ConcernUtils.INSTANCE.postConcernGameId(GameDetailActivity.this, mGameEntity.getId()); } else { Map kv2 = new HashMap<>(); kv2.put("点击", "取消关注"); @@ -532,7 +532,7 @@ public class GameDetailActivity extends BaseActivity { mGameConcern.setTextColor(0xffffffff); // 取消关注 - ConcernUtils.deleteConcernData(GameDetailActivity.this, mGameEntity.getId()); + ConcernUtils.INSTANCE.deleteConcernData(GameDetailActivity.this, mGameEntity.getId()); } }); } diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index f9418e4268..7dc222bf4b 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -213,7 +213,7 @@ public class MessageDetailActivity extends BaseActivity implements OnCommentCall mMessageDetailIconDv.setImageURI( Uri.parse("res:///" + R.drawable.user_default_icon_comment)); } else { - ImageUtils.display(mMessageDetailIconDv, icon); + ImageUtils.Companion.display(mMessageDetailIconDv, icon); } mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户")); } @@ -224,7 +224,7 @@ public class MessageDetailActivity extends BaseActivity implements OnCommentCall mMessageDetailIconDv.setImageURI( Uri.parse("res:///" + R.drawable.user_default_icon_comment)); } else { - ImageUtils.display(mMessageDetailIconDv, icon); + ImageUtils.Companion.display(mMessageDetailIconDv, icon); } mMessageDetailUserNameTv.setText(sp.getString("user_name", "光环用户")); } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java index 298854c835..fe784a3909 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardActivity.java @@ -109,7 +109,7 @@ public class ShareCardActivity extends BaseActivity { mShareGameNameTv.setText(gameName); mShareContentTv.setText(Html.fromHtml(shareContent)); // mShareGameIconDv.setImageURI(gameIconUrl); - ImageUtils.display(mShareGameIconDv, gameIconUrl); + ImageUtils.Companion.display(mShareGameIconDv, gameIconUrl); mShareQrCodeDv.setImageResource(R.drawable.test_qrcode); // 延迟操作,等待截图部分绘制完成 diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index d41a24b9e5..0741865279 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -171,7 +171,7 @@ public class ShareCardPicActivity extends BaseActivity { mShareGameNameTv.setText(gameName); mShareContentTv.setText(Html.fromHtml(shareContent)); // mShareGameIconDv.setImageURI(gameIconUrl); - ImageUtils.display(mShareGameIconDv, gameIconUrl); + ImageUtils.Companion.display(mShareGameIconDv, gameIconUrl); mShareQrCodeDv.setImageResource(R.drawable.test_qrcode); if (shareArrImg.size() > 1) { diff --git a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java index 0058a029f4..ec4a8b270f 100644 --- a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java +++ b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.java @@ -67,7 +67,7 @@ public class UserInfoActivity extends BaseActivity { if (!TextUtils.isEmpty(editContent)) switch (requestCode) { case 0x130: - ImageUtils.display(mUserinfoIconSd, editContent); + ImageUtils.Companion.display(mUserinfoIconSd, editContent); break; case 0x131: mUserinfoNicknameTv.setText(editContent); diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index d7a17791a0..9ce205a7c0 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -108,7 +108,7 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener final ZoomSimpleDraweeView imageView = (ZoomSimpleDraweeView) view.findViewById(R.id.viewimage_iv_show); final ProgressBarCircularIndeterminate progressBar = (ProgressBarCircularIndeterminate) view.findViewById(R.id.viewimage_pb_loading); progressBar.setVisibility(View.VISIBLE); - ImageUtils.getInstance().display(imageView, newUrls.get(position), urls.get(position), + ImageUtils.Companion.getInstance().display(imageView, newUrls.get(position), urls.get(position), new BaseControllerListener() { @Override public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) { @@ -274,7 +274,7 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener imageView.setController(controller); } else { // imageView.setImageURI(url); - ImageUtils.display(imageView, url); + ImageUtils.Companion.display(imageView, url); // ImageUtils.getInstance(getApplicationContext()).display(url, imageView, new BaseControllerListener(){ // @Override // public void onFinalImageSet(String id, Object imageInfo, Animatable animatable) { diff --git a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java index 8569d6f4df..e7e6393d31 100644 --- a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java @@ -86,7 +86,7 @@ public class WeiBoShareActivity extends Activity implements WbShareCallback { } private void weiboLoadBitMap(String iconUrl) { - ImageUtils.getInstance().display(this, iconUrl, new BaseBitmapDataSubscriber() { + ImageUtils.Companion.getInstance().display(this, iconUrl, new BaseBitmapDataSubscriber() { @Override protected void onNewResultImpl(Bitmap bitmap) { Utils.log("分享获取bitmap成功,准备分享"); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/CommentDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/CommentDetailAdapter.java index f89cbbee7a..1f5d4d0ed4 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/CommentDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/CommentDetailAdapter.java @@ -158,13 +158,13 @@ public class CommentDetailAdapter extends BaseRecyclerAdapter { if (mUserName != null && mUserIcon != null && !mUserIcon.isEmpty() && !mUserIcon.isEmpty() && mCommentDao.isMyComment(commentEntity.getId())) { holder.commentUserNameTv.setText(mSharedPreferences.getString("user_name", null)); - ImageUtils.display(holder.commentUserIconDv, mSharedPreferences.getString("user_icon", null)); + ImageUtils.Companion.display(holder.commentUserIconDv, mSharedPreferences.getString("user_icon", null)); } else { holder.commentUserNameTv.setText(commentEntity.getUser().getName()); if (commentEntity.getUser().getIcon().isEmpty()) { holder.commentUserIconDv.setImageURI(Uri.parse("res:///" + R.drawable.user_default_icon_comment)); } else { - ImageUtils.display(holder.commentUserIconDv, commentEntity.getUser().getIcon()); + ImageUtils.Companion.display(holder.commentUserIconDv, commentEntity.getUser().getIcon()); } } 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 91d859ca78..083817455a 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java @@ -117,7 +117,7 @@ public class ConcernAdapter extends BaseRecyclerAdapter { public void onBindViewHolder(final ConcernViewHolder holder, int position) { ConcernInfo concernInfo = mConcernList.get(position); // holder.concern_item_icon.setImageURI(concernInfo.getIcon()); - ImageUtils.display(holder.concern_item_icon, concernInfo.getIcon()); + ImageUtils.Companion.display(holder.concern_item_icon, concernInfo.getIcon()); if (mConcernGameList != null && position < mConcernGameList.size()) { GameEntity gameEntity = mConcernGameList.get(position); 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 bbca9d5eaf..29cf60641c 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java @@ -125,7 +125,7 @@ public class ConcernRecommendAdapter extends BaseRecyclerAdapter { holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty() || gameEntity.getTag() == null || gameEntity.getTag().isEmpty()) { 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 764eefd164..67b92af434 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java @@ -478,7 +478,7 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { holder.kaifuTop.setVisibility(View.GONE); } - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); holder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { holder.gameDes.setText(gameEntity.getBrief()); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java index 3bc535ab48..4cd793c4b1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -160,7 +160,7 @@ public class LibaoDetailAdapter extends BaseRecyclerAdapter { private void initLibaoDetailTop(LibaoDetailTopViewHolder holder) { - ImageUtils.display(holder.libaoGameIcon, mLibaoEntity.getIcon()); + ImageUtils.Companion.display(holder.libaoGameIcon, mLibaoEntity.getIcon()); holder.libaoName.setText(mLibaoEntity.getName()); if (TextUtils.isEmpty(mLibaoEntity.getPlatform())) { holder.libaoGameName.setText(mLibaoEntity.getGame().getName()); 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 9d16486932..d1ebcd2ca0 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -295,7 +295,7 @@ public class MessageDetailAdapter extends BaseRecyclerAdapter { } // viewHolder.thumb.setImageURI(mConcernEntity.getGameIcon()); - ImageUtils.display(viewHolder.thumb, mConcernEntity.getGameIcon()); + ImageUtils.Companion.display(viewHolder.thumb, mConcernEntity.getGameIcon()); viewHolder.title.setText(mConcernEntity.getGameName()); NewsUtils.setNewsPublishOn(viewHolder.time, mConcernEntity.getTime()); @@ -417,14 +417,14 @@ public class MessageDetailAdapter extends BaseRecyclerAdapter { !userIcon.isEmpty() && mCommentDao.isMyComment(commentEntity.getId())) { holder.commentUserNameTv.setText(sp.getString("user_name", null)); // holder.commentUserIconDv.setImageURI(sp.getString("user_icon", null)); - ImageUtils.display(holder.commentUserIconDv, sp.getString("user_icon", null)); + ImageUtils.Companion.display(holder.commentUserIconDv, sp.getString("user_icon", null)); } else { holder.commentUserNameTv.setText(commentEntity.getUser().getName()); if (commentEntity.getUser().getIcon().isEmpty()) { holder.commentUserIconDv.setImageURI(Uri.parse("res:///" + R.drawable.user_default_icon_comment)); } else { // holder.commentUserIconDv.setImageURI(commentEntity.getUser().getIcon()); - ImageUtils.display(holder.commentUserIconDv, commentEntity.getUser().getIcon()); + ImageUtils.Companion.display(holder.commentUserIconDv, commentEntity.getUser().getIcon()); } } 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 807304e06e..6bc9ef5dfa 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -330,7 +330,7 @@ public class PlatformAdapter extends BaseRecyclerAdapter { viewHolder.itemView.setBackgroundColor(0x00ffffff); // viewHolder.mDownloadItemIvPic.setImageURI(apkEntity.getApkCollection().getIcon()); - ImageUtils.display(viewHolder.mDownloadItemIvPic, apkEntity.getApkCollection().getIcon()); + ImageUtils.Companion.display(viewHolder.mDownloadItemIvPic, apkEntity.getApkCollection().getIcon()); if (mCloseEntity.getPosition() == position && mAdapterPosition == mCloseEntity.getAdapterPosition()) { viewHolder.mDownloadItemOpenCollection.setVisibility(View.GONE); viewHolder.mDownloadItemColseCollection.setVisibility(View.VISIBLE); 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 3cb64fa318..c72ffbf7bc 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -135,7 +135,7 @@ public class PluginAdapter extends BaseRecyclerAdapter { holder.gameOrder.setVisibility(View.GONE); // viewHolder.gameThumb.setImageURI(gameEntity.getIcon()); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); if (gameEntity.isPluggable()) { holder.gameName.setText(gameEntity.getName() + " - " + PlatformUtils.getInstance(mContext).getPlatformName(gameEntity.getApk().get(0).getPlatform())); 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 9503706a6f..795d42d139 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java @@ -339,7 +339,7 @@ public class ToolBoxRvAdapter extends BaseRecyclerAdapter { private void initToolBoxViewHolder(ToolBoxViewHolder viewHolder, final ToolBoxEntity toolBoxEntity) { viewHolder.mDes.setText(toolBoxEntity.getDes()); viewHolder.mTitle.setText(toolBoxEntity.getName()); - ImageUtils.display(viewHolder.mGameThumb, toolBoxEntity.getIcon()); + ImageUtils.Companion.display(viewHolder.mGameThumb, toolBoxEntity.getIcon()); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override 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 7474127536..f47c59bd5e 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 @@ -106,7 +106,7 @@ public class GameTestViewHolder extends GameViewHolder { } gameName.setPadding(0, 0, paddRight, 0); - ImageUtils.display(gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(gameThumb, gameEntity.getIcon()); gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { gameDes.setText(gameEntity.getBrief()); 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 1080dce897..0524127193 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -145,7 +145,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { } else if (!TextUtils.isEmpty(icon)) { // viewHolder.dmIcon.setImageURI(icon); - ImageUtils.display(viewHolder.dmIcon, icon); + ImageUtils.Companion.display(viewHolder.dmIcon, icon); } else { viewHolder.dmIcon.setImageURI(Uri.parse("res:///" + R.drawable.logo)); } 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 469d5703c7..0b0124bc16 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -380,7 +380,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter { viewHolder.guIcon.setImageURI(Uri.parse("res:///" + R.drawable.logo)); } else { // viewHolder.guIcon.setImageURI(updateEntity.getIcon()); - ImageUtils.display(viewHolder.guIcon, updateEntity.getIcon()); + ImageUtils.Companion.display(viewHolder.guIcon, updateEntity.getIcon()); } final String platform = PlatformUtils.getInstance(mContext) diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/MainFragment.java index a146f9b2a5..7042794f3e 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/MainFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/MainFragment.java @@ -175,6 +175,8 @@ public class MainFragment extends BaseFragment_ViewPager_Checkable { } private void checkMessageUnread(final Context context, boolean isCheck) { + if (context == null) return; + TokenUtils.getToken(context, isCheck) .flatMap(new Func1>() { @Override 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 67d614dbb7..4c0d28e63f 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java @@ -654,7 +654,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { if (mSubjectDigestList.size() >= i + 1) { // if (mSubjectDigestList.size() >= 5 && i < 5) { - ImageUtils.display(subjectIcon, mSubjectDigestList.get(i).getIcon()); + ImageUtils.Companion.display(subjectIcon, mSubjectDigestList.get(i).getIcon()); subjectName.setText(mSubjectDigestList.get(i).getName()); } @@ -779,7 +779,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { } holder.gameName.setPadding(0, 0, paddRight, 0); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); if (gameEntity.isPluggable() && gameEntity.getApk().size() > 0) { holder.gameName.setText(String.format("%s - %s", gameEntity.getName(), PlatformUtils.getInstance(mContext).getPlatformName( @@ -841,7 +841,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { final String name = mSubjectList.get(i).getName(); String tag = entity.getImage(); holder.image.setTag(tag); - ImageUtils.getInstance().display(holder.image, entity.getImage(), + ImageUtils.Companion.getInstance().display(holder.image, entity.getImage(), mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(mContext, 16)); holder.image.setOnClickListener(new View.OnClickListener() { @Override 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 ff3d85758e..5370011a7c 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java @@ -17,7 +17,6 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; -import com.lightgame.adapter.BaseRecyclerAdapter; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; @@ -50,6 +49,7 @@ import com.gh.gamecenter.entity.ToolBoxEntity; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.lightgame.adapter.BaseRecyclerAdapter; import org.greenrobot.eventbus.EventBus; diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailToolsAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailToolsAdapter.java index c48d00ae77..c17b7a2857 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailToolsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailToolsAdapter.java @@ -70,7 +70,7 @@ public class GameDetailToolsAdapter extends BaseRecyclerAdapter { viewHolder.mDes.setText(toolBoxEntity.getDes()); viewHolder.mTitle.setText(toolBoxEntity.getName()); - ImageUtils.display(viewHolder.mGameThumb, toolBoxEntity.getIcon()); + ImageUtils.Companion.display(viewHolder.mGameThumb, toolBoxEntity.getIcon()); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override 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 2b1452ea57..1fa5515b1b 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameGalleryAdapter.java @@ -42,7 +42,7 @@ class GameGalleryAdapter extends BaseRecyclerAdapter { @Override public void onBindViewHolder(final GameGalleryViewHolder holder, int position) { // holder.screenshot_item_iv.setImageURI(gallery.get(position)); - ImageUtils.display(holder.screenshotIv, gallery.get(position)); + ImageUtils.Companion.display(holder.screenshotIv, gallery.get(position)); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { 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 c8508b8217..54ed9caeed 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java @@ -483,7 +483,7 @@ public class XinXiAdapter extends BaseRecyclerAdapter { final GameEntity gameEntity = mGameList.get(position - position_game - 1); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); holder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { holder.gameDes.setText(gameEntity.getBrief()); diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/libao/Libao1FragmentAdapter.java index 0e0a56a2db..d5eab99d40 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao1FragmentAdapter.java @@ -227,7 +227,7 @@ class Libao1FragmentAdapter extends BaseRecyclerAdapter { .getPlatformName(libaoEntity.getPlatform())); } // holder.libaoGameIcon.setImageURI(libaoEntity.getIcon()); - ImageUtils.display(holder.libaoGameIcon, libaoEntity.getIcon()); + ImageUtils.Companion.display(holder.libaoGameIcon, libaoEntity.getIcon()); String content; if (libaoEntity.getContent().contains("
")) { diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java index c3a7b34be7..11205380a1 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java @@ -191,7 +191,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { public void onFailure(HttpException e) { if (e != null && e.code() == 409) { addLibaoListById(offset); - ConcernUtils.updateConcernData(mContext, new JSONArray(mGameIdList)); + ConcernUtils.INSTANCE.updateConcernData(mContext, new JSONArray(mGameIdList)); return; } mCallBackListener.loadError(); @@ -323,7 +323,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { final LibaoEntity libaoEntity = mLibaoList.get(position - 1); holder.libaoName.setText(libaoEntity.getName()); // holder.libaoGameIcon.setImageURI(libaoEntity.getIcon()); - ImageUtils.display(holder.libaoGameIcon, libaoEntity.getIcon()); + ImageUtils.Companion.display(holder.libaoGameIcon, libaoEntity.getIcon()); if (TextUtils.isEmpty(libaoEntity.getPlatform())) { holder.libaoGameName.setText(libaoEntity.getGame().getName()); } else { diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java index bae5ee2746..9ef6634552 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java @@ -89,7 +89,7 @@ class Libao3FragmentAdapter extends BaseRecyclerAdapter { final LibaoEntity libaoEntity = mLibaoList.get(position); holder.libaoName.setText(libaoEntity.getName()); - ImageUtils.display(holder.libaoGameIcon, libaoEntity.getIcon()); + ImageUtils.Companion.display(holder.libaoGameIcon, libaoEntity.getIcon()); if (TextUtils.isEmpty(libaoEntity.getPlatform())) { holder.libaoGameName.setText(libaoEntity.getGame().getName()); diff --git a/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java index 1b37869c42..9e0a1ee2cd 100644 --- a/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java @@ -207,7 +207,7 @@ public class CommentFragmentAdapter extends BaseRecyclerAdapter { UserEntity userEntity = commentEntity.getUserEntity(); if (userEntity != null) { viewHolder.userName.setText(userEntity.getName()); - ImageUtils.display(viewHolder.userIcon, userEntity.getIcon()); + ImageUtils.Companion.display(viewHolder.userIcon, userEntity.getIcon()); } viewHolder.requestControl.setText("回复了你的评论"); diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java index 12134ea982..4db0529d30 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java @@ -8,17 +8,16 @@ import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; +import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.CommentUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.QQUtils; import com.gh.common.util.TokenUtils; -import com.lightgame.utils.Utils; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.WebActivity; -import com.lightgame.adapter.BaseRecyclerAdapter; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.db.KeFuMarkReadDao; import com.gh.gamecenter.db.MessageMarkReadDao; @@ -26,10 +25,11 @@ import com.gh.gamecenter.db.info.KeFuMarkReadInfo; import com.gh.gamecenter.db.info.MessageMarkReadInfo; import com.gh.gamecenter.entity.MessageKeFuEntity; import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.base.OnRequestCallBackListener; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.google.gson.Gson; +import com.lightgame.adapter.BaseRecyclerAdapter; +import com.lightgame.utils.Utils; import org.greenrobot.eventbus.EventBus; diff --git a/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java index 604a476835..4a1e112c71 100644 --- a/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java @@ -8,17 +8,16 @@ import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; +import com.gh.base.OnRequestCallBackListener; import com.gh.common.util.CommentUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.QQUtils; import com.gh.common.util.TokenUtils; -import com.lightgame.utils.Utils; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.WebActivity; -import com.lightgame.adapter.BaseRecyclerAdapter; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.db.MessageMarkReadDao; import com.gh.gamecenter.db.NoticeMarkReadDao; @@ -26,10 +25,11 @@ import com.gh.gamecenter.db.info.MessageMarkReadInfo; import com.gh.gamecenter.db.info.NoticeMarkReadInfo; import com.gh.gamecenter.entity.MessageNoticeEntity; import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.base.OnRequestCallBackListener; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.google.gson.Gson; +import com.lightgame.adapter.BaseRecyclerAdapter; +import com.lightgame.utils.Utils; import org.greenrobot.eventbus.EventBus; diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index 32c19b2cb6..bd616a56dc 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -138,7 +138,7 @@ public class News1FragmentAdapter extends BaseRecyclerAdapter { } }); // viewHolder.thumb.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); - ImageUtils.display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0)); + ImageUtils.Companion.display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0)); viewHolder.title.setText(newsEntity.getTitle()); int views = newsEntity.getViews(); if (views == 0) { @@ -189,9 +189,9 @@ public class News1FragmentAdapter extends BaseRecyclerAdapter { // viewHolder.thumb1.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); // viewHolder.thumb2.setImageURI(newsEntity.getThumbnail().getUrl().get(1)); // viewHolder.thumb3.setImageURI(newsEntity.getThumbnail().getUrl().get(2)); - ImageUtils.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); - ImageUtils.display(viewHolder.thumb2, newsEntity.getThumbnail().getUrl().get(1)); - ImageUtils.display(viewHolder.thumb3, newsEntity.getThumbnail().getUrl().get(2)); + ImageUtils.Companion.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); + ImageUtils.Companion.display(viewHolder.thumb2, newsEntity.getThumbnail().getUrl().get(1)); + ImageUtils.Companion.display(viewHolder.thumb3, newsEntity.getThumbnail().getUrl().get(2)); int views = newsEntity.getViews(); if (views == 0) { viewHolder.read.setVisibility(View.GONE); @@ -222,7 +222,7 @@ public class News1FragmentAdapter extends BaseRecyclerAdapter { } }); viewHolder.title.setText(newsEntity.getTitle()); - ImageUtils.getInstance().display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0), + ImageUtils.Companion.getInstance().display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0), mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(mContext, 40)); int views = newsEntity.getViews(); if (views == 0) { 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 0c1dc9f714..4907d8df82 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java @@ -332,7 +332,7 @@ public class News2Fragment extends BaseFragment implements SwipeRefreshLayout.On concern.setVisibility(View.VISIBLE); // icon.setImageURI(gameEntity.getIcon()); - ImageUtils.display(icon, gameEntity.getIcon()); + ImageUtils.Companion.display(icon, gameEntity.getIcon()); name.setText(gameEntity.getName()); concern.setImageResource(R.drawable.concern_select_true); diff --git a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java index 530815e8a1..ea518c7e02 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java @@ -230,7 +230,7 @@ public class News2FragmentAdapter extends BaseRecyclerAdapter { public void onFailure(HttpException e) { if (e != null && e.code() == 409) { loadDataByGameId(offset); - ConcernUtils.updateConcernData(mContext, new JSONArray(gameIdList)); + ConcernUtils.INSTANCE.updateConcernData(mContext, new JSONArray(gameIdList)); return; } @@ -501,7 +501,7 @@ public class News2FragmentAdapter extends BaseRecyclerAdapter { final ConcernEntity concernEntity = concernList.get(position); - ImageUtils.display(viewHolder.thumb, concernEntity.getGameIcon()); + ImageUtils.Companion.display(viewHolder.thumb, concernEntity.getGameIcon()); viewHolder.title.setText(concernEntity.getGameName()); NewsUtils.setNewsPublishOn(viewHolder.time, concernEntity.getTime()); diff --git a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java index 9e62862e8f..d288e112ce 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -137,7 +137,7 @@ public class News4FragmentAdapter extends BaseRecyclerAdapter { } }); // viewHolder.thumb.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); - ImageUtils.display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0)); + ImageUtils.Companion.display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0)); viewHolder.title.setText(newsEntity.getTitle()); int views = newsEntity.getViews(); if (views == 0) { @@ -188,9 +188,9 @@ public class News4FragmentAdapter extends BaseRecyclerAdapter { // viewHolder.thumb1.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); // viewHolder.thumb2.setImageURI(newsEntity.getThumbnail().getUrl().get(1)); // viewHolder.thumb3.setImageURI(newsEntity.getThumbnail().getUrl().get(2)); - ImageUtils.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); - ImageUtils.display(viewHolder.thumb2, newsEntity.getThumbnail().getUrl().get(1)); - ImageUtils.display(viewHolder.thumb3, newsEntity.getThumbnail().getUrl().get(2)); + ImageUtils.Companion.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); + ImageUtils.Companion.display(viewHolder.thumb2, newsEntity.getThumbnail().getUrl().get(1)); + ImageUtils.Companion.display(viewHolder.thumb3, newsEntity.getThumbnail().getUrl().get(2)); int views = newsEntity.getViews(); if (views == 0) { viewHolder.read.setVisibility(View.GONE); @@ -221,7 +221,7 @@ public class News4FragmentAdapter extends BaseRecyclerAdapter { } }); viewHolder.title.setText(newsEntity.getTitle()); - ImageUtils.getInstance().display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0), + ImageUtils.Companion.getInstance().display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0), mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(mContext, 40)); int views = newsEntity.getViews(); if (views == 0) { 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 856fbec6d7..a136626e8d 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -325,7 +325,7 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { } private void initGameDetailTopViewHolder(GameDetailTopViewHolder viewHolder) { - ImageUtils.display(viewHolder.gamedetailThumb, mGameEntity.getIcon()); + ImageUtils.Companion.display(viewHolder.gamedetailThumb, mGameEntity.getIcon()); viewHolder.gamedetailName.setText(mGameEntity.getName()); if (mGameEntity.getApk() != null && mGameEntity.getApk().size() != 0) { for (int i = 0, size = mGameEntity.getApk().size(); i < size; i++) { @@ -376,7 +376,7 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { Toast.makeText(mContext, "关注成功", Toast.LENGTH_SHORT).show(); // 添加关注 - ConcernUtils.postConcernGameId(mContext, mGameEntity.getId()); + ConcernUtils.INSTANCE.postConcernGameId(mContext, mGameEntity.getId()); } else { Map kv = new HashMap<>(); kv.put("状态", "取消关注"); @@ -402,7 +402,7 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { concern.setTextColor(Color.WHITE); //取消关注 - ConcernUtils.deleteConcernData(mContext, mGameEntity.getId()); + ConcernUtils.INSTANCE.deleteConcernData(mContext, mGameEntity.getId()); } }); } @@ -479,7 +479,7 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { likeCount.setText(String.valueOf(commentEntity.getVote())); userName.setText(commentEntity.getUser().getName()); // userIcon.setImageURI(commentEntity.getUser().getIcon()); - ImageUtils.display(userIcon, commentEntity.getUser().getIcon()); + ImageUtils.Companion.display(userIcon, commentEntity.getUser().getIcon()); holder.list.addView(contentView); if (commentEntity.getParent() != null) { diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java index 66b8f3ac8c..b1fc62d567 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java @@ -188,7 +188,7 @@ class ConcernFragmentAdapter extends BaseRecyclerAdapter { private void initGameNormal(final GameNormalViewHolder holder, final GameEntity gameEntity, int i) { - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); holder.gameName.setText(gameEntity.getName()); int paddRight = 0; diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java index 1fa66a163e..d7a44e8a45 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -407,7 +407,7 @@ class InstallFragmentAdapter extends BaseRecyclerAdapter { holder.swipeText.setPadding(0, 0, DisplayUtils.dip2px(mContext, 15), 0); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty() || gameEntity.getTag() == null || gameEntity.getTag().isEmpty()) { 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 7f9dfbbe54..608b5532e8 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -29,6 +29,7 @@ import com.gh.gamecenter.entity.AppEntity; import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.lightgame.utils.Utils; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -116,6 +117,7 @@ public class PersonalFragment extends BaseFragment implements LoginUtils.OnLogin public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); checkUpdate(); + Utils.log("==========PersonalFragment"); } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java index 246fb5df6c..353e38047a 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -132,7 +132,7 @@ class SearchGameDetailFragmentAdapter extends BaseRecyclerAdapter { final GameNormalViewHolder viewHolder = (GameNormalViewHolder) holder; final GameEntity gameEntity = gameList.get(position); - ImageUtils.display(viewHolder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(viewHolder.gameThumb, gameEntity.getIcon()); viewHolder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { viewHolder.gameDes.setText(gameEntity.getBrief()); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java index 17c80fadf1..9f45f30c6d 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -141,7 +141,7 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter { if (holder instanceof GameNormalViewHolder && position == 0) { final GameNormalViewHolder viewHolder = (GameNormalViewHolder) holder; - ImageUtils.display(((GameNormalViewHolder) holder).gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(((GameNormalViewHolder) holder).gameThumb, gameEntity.getIcon()); viewHolder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { viewHolder.gameDes.setText(gameEntity.getBrief()); diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java index 18a78e82c4..12749e10d2 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java @@ -232,7 +232,7 @@ public class SubjectAdapter extends BaseRecyclerAdapter { holder.line.setVisibility(View.GONE); int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; final GameEntity gameEntity = mSubjectList.get(position); - ImageUtils.getInstance().display(holder.image, gameEntity.getImage(), widthPixels); + ImageUtils.Companion.getInstance().display(holder.image, gameEntity.getImage(), widthPixels); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -304,7 +304,7 @@ public class SubjectAdapter extends BaseRecyclerAdapter { final GameEntity gameEntity = mSubjectList.get(position); // holder.gameThumb.setImageURI(gameEntity.getIcon()); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); holder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { holder.gameDes.setText(gameEntity.getBrief()); @@ -374,7 +374,7 @@ public class SubjectAdapter extends BaseRecyclerAdapter { final GameEntity gameEntity = mSubjectList.get(position); // holder.gameThumb.setImageURI(gameEntity.getIcon()); - ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); + ImageUtils.Companion.display(holder.gameThumb, gameEntity.getIcon()); holder.gameName.setText(gameEntity.getName()); if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { holder.gameDes.setText(gameEntity.getBrief()); diff --git a/libraries/UmengPush/libs/utdid4all-1.1.5.3_proguard.jar b/libraries/UmengPush/libs/utdid4all-1.1.5.3_proguard.jar new file mode 100644 index 0000000000000000000000000000000000000000..5eed5beed5acfdb36f3db60326f46526596707f5 GIT binary patch literal 49743 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 On*^;kOzZ#o_WuAiZ##GZ literal 0 HcmV?d00001