diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index a65efd80a0..3acf205daa 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -167,7 +167,7 @@ public class BaseActivity extends Activity implements OnCallBackListener { public void onEventMainThread(final EBShowDialog showDialog) { if (!isPause && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { if ("hijack".equals(showDialog.getType())) { - DialogUtils.showHijackDialog(this); + DialogUtils.showQqSessionDialog(this, null);// 建议用户联系客服 } else if ("plugin".equals(showDialog.getType())) { DialogUtils.showPluginDialog(this, new DialogUtils.ConfiremListener(){ @Override diff --git a/app/src/main/java/com/gh/base/BaseFragmentActivity.java b/app/src/main/java/com/gh/base/BaseFragmentActivity.java index 9f77bf8fb6..7988088d67 100644 --- a/app/src/main/java/com/gh/base/BaseFragmentActivity.java +++ b/app/src/main/java/com/gh/base/BaseFragmentActivity.java @@ -158,7 +158,7 @@ public class BaseFragmentActivity extends FragmentActivity { public void onEventMainThread(final EBShowDialog showDialog) { if (!isPause && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { if ("hijack".equals(showDialog.getType())) { - DialogUtils.showHijackDialog(this); + DialogUtils.showQqSessionDialog(this, null);// 建议用户联系客服 } else if ("plugin".equals(showDialog.getType())) { DialogUtils.showPluginDialog(this, new DialogUtils.ConfiremListener(){ @Override diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index ba1967b681..563cdfdf81 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -100,10 +100,10 @@ public class DialogUtils { }); } - // 打开QQ客户端,创建临时会话 + // 网络劫持时 打开QQ客户端,创建临时会话 public static void showQqSessionDialog(final Context context, String qq) { if (qq == null) { - qq = "2586716223"; + qq = "2586716223";// 默认客服QQ } final String finalQq = qq; showWarningDialog(context, "警告", "您当前网络环境异常,下载地址可能被运营商恶意替换(网络劫持)" + diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.java b/app/src/main/java/com/gh/common/util/ImageUtils.java index 878f25daa7..632dd5111e 100644 --- a/app/src/main/java/com/gh/common/util/ImageUtils.java +++ b/app/src/main/java/com/gh/common/util/ImageUtils.java @@ -117,7 +117,7 @@ public class ImageUtils { .setFadeDuration(500) .setPressedStateOverlay(new ColorDrawable(context.getResources().getColor(R.color.pressed_bg))) .setBackground(new ColorDrawable(Color.parseColor("#ececec"))) - .setPlaceholderImage(placeholderImage, ScalingUtils.ScaleType.CENTER) + .setPlaceholderImage(placeholderImage) .build(); simpleDraweeView.setHierarchy(hierarchy); simpleDraweeView.setImageURI(url); @@ -125,11 +125,12 @@ public class ImageUtils { } //图片下载监听 - public void display (String url, SimpleDraweeView simpleDraweeView, ControllerListener listener){ + public void display (String url, String lowUrl, SimpleDraweeView simpleDraweeView, ControllerListener listener){ DraweeController controller = Fresco.newDraweeControllerBuilder() - .setUri(url) + .setImageRequest(ImageRequest.fromUri(url)) .setControllerListener(listener) + .setLowResImageRequest(ImageRequest.fromUri(lowUrl)) //低分辨率图片 .build(); simpleDraweeView.setController(controller); } diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index c8ed9f24cc..698b645600 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -20,8 +20,7 @@ import com.facebook.drawee.controller.BaseControllerListener; import com.facebook.drawee.drawable.ScalingUtils; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; -import com.facebook.imagepipeline.request.ImageRequest; -import com.facebook.imagepipeline.request.ImageRequestBuilder; +import com.facebook.imagepipeline.core.ImagePipeline; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseActivity; import com.gh.common.util.DisplayUtils; @@ -33,6 +32,8 @@ import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; /** @@ -49,6 +50,7 @@ public class ViewImageActivity extends BaseActivity implements private RelativeLayout.LayoutParams rparams; private ArrayList urls; + private Map newUrls; private String scaleType; @@ -56,6 +58,8 @@ public class ViewImageActivity extends BaseActivity implements private boolean isOrientation; + private ImagePipeline imagePipeline; + private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { @@ -70,14 +74,14 @@ public class ViewImageActivity extends BaseActivity implements SimpleDraweeView imageView = (SimpleDraweeView) view.findViewById(R.id.viewimage_iv_show); final ProgressBarCircularIndeterminate progressBar = (ProgressBarCircularIndeterminate) view.findViewById(R.id.viewimage_pb_loading); progressBar.setVisibility(View.VISIBLE); - ImageUtils.getInstance(getApplicationContext()).display(urls.get(position), imageView + ImageUtils.getInstance(getApplicationContext()).display(newUrls.get(position), urls.get(position), imageView , new BaseControllerListener(){ - @Override - public void onFinalImageSet(String id, Object imageInfo, Animatable animatable) { - super.onFinalImageSet(id, imageInfo, animatable); - progressBar.setVisibility(View.GONE); - } - }); + @Override + public void onFinalImageSet(String id, Object imageInfo, Animatable animatable) { + super.onFinalImageSet(id, imageInfo, animatable); + progressBar.setVisibility(View.GONE); + } + }); } } @@ -97,6 +101,8 @@ public class ViewImageActivity extends BaseActivity implements setContentView(R.layout.activity_viewimage); + imagePipeline = Fresco.getImagePipeline(); + DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); width = outMetrics.widthPixels / urls.size(); @@ -146,20 +152,19 @@ public class ViewImageActivity extends BaseActivity implements Gh_RelativeLayout view = (Gh_RelativeLayout) View.inflate(container.getContext(), R.layout.viewimage_normal_item, null); SimpleDraweeView imageView = (SimpleDraweeView) view.findViewById(R.id.viewimage_iv_show); - ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url)) - .setAutoRotateEnabled(false) - .build(); - DraweeController controller = Fresco.newDraweeControllerBuilder() - .setImageRequest(request) - .setAutoPlayAnimations(true) - .build(); - imageView.setController(controller); if (scaleType != null || isOrientation) { imageView.getHierarchy().setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER); } - if (!urls.get(position).startsWith("http://image.ghzhushou.com/pic/hq/")) { - checkUrl(urls.get(position)); + if (!url.startsWith("http://image.ghzhushou.com/pic/hq/") && url.startsWith("http://image.ghzhushou.com/pic/")) { + String hqUrl = "http://image.ghzhushou.com/pic/hq" + url.substring(url.lastIndexOf("/")); + if (imagePipeline.isInBitmapMemoryCache(Uri.parse(hqUrl))){ // 检查高清图是否被缓存 + loadImage(hqUrl, imageView); + }else { + checkUrl(url, imageView); + } + }else { + loadImage(url, imageView); } view.setOnSingleTapListener(this); view.setTag(position); @@ -174,8 +179,8 @@ public class ViewImageActivity extends BaseActivity implements @Override public void destroyItem(ViewGroup container, int position, Object object) { -// container.removeView((View) object); -// object = null; + container.removeView((View) object); + object = null; } @Override @@ -204,10 +209,23 @@ public class ViewImageActivity extends BaseActivity implements } - private void checkUrl(final String url) { - if (!url.startsWith("http://image.ghzhushou.com/pic/")) { - return; + private void loadImage(String url, SimpleDraweeView imageView){ + if (url.contains(".gif")) { + DraweeController controller = Fresco.newDraweeControllerBuilder() + .setUri(url) + .setAutoPlayAnimations(true) + .build(); + imageView.setController(controller); + }else { + imageView.setImageURI(url); } + + } + + + + private void checkUrl(final String url, final SimpleDraweeView imageView) { + newUrls = new HashMap<>(); new Thread() { @Override public void run() { @@ -222,13 +240,21 @@ public class ViewImageActivity extends BaseActivity implements if (code == 200 && urls != null) { for (int i = 0, size = urls.size(); i < size; i++) { if (urls.get(i).equals(url)) { - urls.set(i, newUrl); + newUrls.put(i, newUrl); Message msg = new Message(); msg.arg1 = i; handler.sendMessage(msg); break; } } + } else { + //没有高清图时 + handler.post(new Runnable() { + @Override + public void run() { + loadImage(url, imageView); + } + }); } } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index 218d188584..cb76b0bda1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -81,8 +81,6 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { final SlideEntity slideEntity = slideList.get(getPosition(position)); -// ImageUtils.getInstance(context).display(slideEntity.getImage(), -// holder.imageView, R.drawable.preload); ImageUtils.getInstance(context).display(slideEntity.getImage(), holder.imageView, R.drawable.preload, context); // indicator.setPosition(slideList.size(), getPosition(position)); diff --git a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java index c0e1d1fa3a..1ae1566a18 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -371,7 +371,9 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On for (int i = 0, size = gameList.size(); i < size; i++) { if (!concernManager.isConcern(gameList.get(i).getId())) { for (int j = 0; j < installGameList.size(); j++) { - if (recommendGameList.size() >= 4) continue; + if (recommendGameList.size() >= 4) { + continue; + } if (installGameList.get(j).getId().equals(gameList.get(i).getId())) { recommendGameList.add(gameList.get(i)); installGameList.remove(j); 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 67eb2544b8..ad6abc0b81 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -486,9 +486,9 @@ public class News4FragmentAdapter extends RecyclerView.Adapter