解决AndroidAutoLayout无法适配18:9 全面屏

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/b275518834/article/details/79627108

随着人们对大屏手机需求的变化,Android全面屏 越来越多


AutoLayout这个以往用于简单适配屏幕像素的框架存在着严重变形的问题

鸿洋的AutoLayout项目地址 已经停止更新了

https://github.com/hongyangAndroid/AndroidAutoLayout

以下为宽高比缩略图

变形效果 左为正常需求  右边为全面屏


解决方案 修改AutoLayoutConfig init方法

将高度只按宽度同比例进行适配 (AutoLayout里面Meta配置为1080*1920 16:9 全面屏为18:9)

源码:

public void init(Context context) {
        getMetaData(context);
        int[] screenSize = ScreenUtils.getScreenSize(context, useDeviceSize);
        mScreenWidth = screenSize[0];
        mScreenHeight = screenSize[1];
        }


    }
修改为以下代码
public void init(Context context) {
        getMetaData(context);

        int[] screenSize = ScreenUtils.getScreenSize(context, useDeviceSize);
        mScreenWidth = screenSize[0];
        //取宽度作为基准
        float mDesignRate = 1.0f * mDesignHeight / mDesignWidth;
        float screenRate = 1.0f * screenSize[1] / screenSize[0];
        if (screenRate > mDesignRate) {
            mScreenHeight = (int) (screenSize[1] * (mDesignRate / screenRate));
        } else {
            mScreenHeight = screenSize[1];
        }


    }

这个修改方案并不是非常好,比如这是一个长屏幕   原来的autolayout布局是刚好到底部   蓝色我代码修改后的是适配  刚好剩下白色区域 但是变形的问题解决了 如果有更好的方案可以邮箱我

275518834@qq.com

展开阅读全文

没有更多推荐了,返回首页