美文网首页我爱编程
网络加载得图片适应不同android得手机,解决方案

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

作者: 南娇 | 来源:发表于2018-06-21 16:44 被阅读201次

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

    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);
    }
    

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

    相关文章

      网友评论

        本文标题:网络加载得图片适应不同android得手机,解决方案

        本文链接:https://www.haomeiwen.com/subject/fmccyftx.html