优化游戏截图

This commit is contained in:
khy
2016-10-24 10:03:13 +08:00
parent b768f5f661
commit e52caa013d
7 changed files with 65 additions and 38 deletions

View File

@ -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();