android 加载大图片适配问题解决方案

时间:2021-05-20 20:15:59

我们在加载小图片可能你写死了宽和高也许看不出来图片变形的问题,但是你要加载大的图片没做好适配是很容易看出图片变形的,比如轮播图就是一个,看下我的例子 这是没做适配时加载的

android 加载大图片适配问题解决方案

我这个imageview的宽度就是设置为fill_parent 高度为wrap_content ,这些图片来自豆瓣,明显看出来第一张图片和第二张图片明显高度不一样而且图片变形了,那么怎么解决呢?其实也简单,我们知道图片的宽度就是屏幕的宽度,所以只要后台传过来的图片是按照一定的比例就可以在每个屏幕上算出他的高度,那么我们就自定义一个imageview,

package com.example.imageload.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.WindowManager;
import android.widget.ImageView;


public class CustomLoadImageView extends ImageView{
public CustomLoadImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}


public CustomLoadImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}


public CustomLoadImageView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int makeHeight = (int) (width/0.67) ;//假如服务器传递过来的图片比例是    宽/高 = 0.67
setMeasuredDimension(width, makeHeight);
}
}


我这个是按照第一张图片的比例来的 第一张图片比例  宽/高=99/149=0.67,现在来看下效果:

android 加载大图片适配问题解决方案

到红色的横线那里是第一张图片,现在是不是看起来没怎么变形,你可以去拿个图片按照我的说法去试试,在我项目中加载大图片都是这样适配的,当然前提条件是后台要告诉你这些图片的大概比例,由于图片加载都是每个项目中必会的,在这里就不贴代码了,关键是哪个自定义的imageview,看懂了就懂了,在此记录和分享下!