优化游戏截图
This commit is contained in:
@ -20,13 +20,11 @@ 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;
|
||||
import com.gh.common.util.ImageUtils;
|
||||
import com.gh.common.util.Utils;
|
||||
import com.gh.common.view.Gh_RelativeLayout;
|
||||
import com.gh.common.view.Gh_RelativeLayout.OnSingleTapListener;
|
||||
|
||||
@ -34,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;
|
||||
|
||||
|
||||
/**
|
||||
@ -50,6 +50,7 @@ public class ViewImageActivity extends BaseActivity implements
|
||||
private RelativeLayout.LayoutParams rparams;
|
||||
|
||||
private ArrayList<String> urls;
|
||||
private Map<Integer, String> newUrls;
|
||||
|
||||
private String scaleType;
|
||||
|
||||
@ -57,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) {
|
||||
@ -71,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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,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();
|
||||
@ -147,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);
|
||||
@ -175,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
|
||||
@ -205,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() {
|
||||
@ -228,13 +245,21 @@ public class ViewImageActivity extends BaseActivity implements
|
||||
//urls出现空指针
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user