当前位置:   article > 正文

android监控删除图像,Android图片加载尺寸监控

40dp大概多高

前言

安卓开发过程中,很多时候都会用到加载网络图片,而加载这些网络图片往往又很占内存,所以,我们最好对这些图片进行一个监控。比如说,imageView的宽和高为40dp,然后经过转换,大概是120px左右。也就是说,我们加载的图片尺寸,其实只要120px就行了。如果后台返回的图片尺寸是300px*300px,那多出的180px是没有意义的,只会浪费内存和流量。所以,我们在开发的时候,要对图片进行一个监控。

效果图

fa1c4fbf4f57?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

如果网络图片的尺寸,大于本地imageview设置的尺寸,并且超过一定数值(比如超过100px),就弹框显示,展示这张图片,还有在哪个Activity,图片链接,网络图片和本地imageview的尺寸对比。然后再把这些信息告诉后端,让他们下发尺寸小一点的网络图片。

代码实现

首先是建立一个统一加载图片的方法,这个一般都会有:

/**

* 加载网络图片

*/

public void loadUrlImage(final Activity activity, final String url, final ImageView imageView) {

Glide.with(activity).load(url).into(imageView);

if (isShowDialog) {

checkImgSize(activity, url, imageView);

}

}

然后,就是判断,开发版就开启图片监控:,然后去获取网络图片的尺寸:

/**

* 获取网络图片尺寸

*/

private void checkImgSize(final Activity activity, final String url, final ImageView imageView) {

Glide.with(activity)

.load(url)

.asBitmap()

.into(new SimpleTarget() {

@Override

public void onResourceReady(final Bitmap resource, GlideAnimation super Bitmap> glideAnimation) {

imageView.post(new Runnable() {

@Override

public void run() {

if (resource.getWidth() - imageView.getWidth() > imgSize || resource.getHeight() - imageView.getHeight() > imgSize) {

showDialog(activity, url, resource.getWidth(), resource.getHeight(), imageView.getWidth(), imageView.getHeight());

}

}

});

}

@Override

public void onLoadFailed(Exception e, Drawable errorDrawable) {

}

});

}

然后根据获取的图片尺寸和本地的进行比较,如果超出了当初设置的值,那就弹框显示:

/**

* 弹框

*/

private void showDialog(Activity activity, final String url, int urlWidth, int urlHeight, int imgWidth, int imgHeight) {

SharedPreferences sp = activity.getSharedPreferences("imgSizeSp", MODE_PRIVATE);

final SharedPreferences.Editor editor = sp.edit();

final String urls = sp.getString("img", "");

if ((dialog == null || (dialog != null && !dialog.isShowing())) && !urls.contains(url)) {

dialog = new Dialog(activity);

View view = LayoutInflater.from(activity).inflate(R.layout.show_img_size_dialog, null);

TextView textView = (TextView) view.findViewById(R.id.tv_content);

ImageView imageView = (ImageView) view.findViewById(R.id.iv_pic);

Button btn_notip = (Button) view.findViewById(R.id.btn_notip);

Button btn_cancel = (Button) view.findViewById(R.id.btn_cancel);

Glide.with(activity).load(url).into(imageView);

btn_cancel.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dialog.dismiss();

}

});

btn_notip.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

editor.putString("img", urls + url).apply();

dialog.dismiss();

}

});

textView.setText(activity.getLocalClassName() + "\n\n" + url + "\n\n" + "图片超出View尺寸\nbitmap:" + urlWidth + " * " + urlHeight + "\nview:" + imgWidth + " * " + imgHeight);

dialog.setContentView(view);

dialog.show();

}

}

总结

思路大概就是这样,代码优化就看人吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/341322
推荐阅读
相关标签
  

闽ICP备14008679号