搜索
您的当前位置:首页正文

网络加载得图片适应不同android得手机,解决方案

来源:知库网

冰冻三尺非一日之寒,所有的创新都是在大量的知识积累的基础上出来的,所以只有不断的积累知识,才能有更好的创新。第一次写,写的不好大家多多包涵。我也是站在巨人的肩膀上

QQ截图20180621163034.png

今天我遇到得问题是这三张图片是网络加载得,开始我写得高度是固定得,但是不同得手机显示有问题(问题就是屏幕宽得android手机图片变扁了)。仔细想了一下原因,就是屏幕变宽,布局拉伸造成了图片变扁了。

解决办法:1.自己计算布局得比例。我ui布局比例是宽是340高是139,计算了一下大概2.4左右 ,然后左右的边距是10dp

1.首先获取屏幕得宽度

    Resources resources = this.getResources();
    DisplayMetrics dm = resources.getDisplayMetrics();
    float density = dm.density;(屏幕得密度)
    int widht=dm.widthPixels;(屏幕得宽度,这里是像素值)
    //计算布局得宽度 20*density--->就是两边得间距转换成像素
    int mLayoutHeight=(int) (widht-20*density);
    //布局得高度
    int mLayoutHeight = (int) (screenWidth / 2.4);
    //然后手动设置控件得宽高
    LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(screenWidth, mHeight);
    //设置布局左右上得间距
    linearParams.leftMargin = dip2px(getContext(), 10);
    linearParams.rightMargin = dip2px(getContext(), 10);
    linearParams.topMargin = dip2px(getContext(), 12);
    event_linear.setLayoutParams(linearParams);

dp转换成像素得方法

public static int dip2px(Context context, float dpValue) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dpValue * scale + 0.5f);
}

这样就完成了,可以解决任何屏幕得宽度来显示图片了,绝对不变形,如果在出现变形得话,那说明美工切得图片有问题

Top