autolayout使用中的一些坑记录

来源:互联网 发布:腾讯对战平台mac版 编辑:程序博客网 时间:2024/05/21 04:22

很早就接触到autolayout这个适配框架,但是以前觉得可能不是很成熟所以一直没有使用,不过最近项目中正好做适配,索性就用它了。洪洋大神已经把很多功能、注意点以及如何使用都做了很好的解释,我就不多说了,参考博客:http://blog.csdn.net/lmj623565791/article/details/49990941/      以及github地址:https://github.com/hongyangAndroid/AndroidAutoLayout    不过还是遇到了很多问题,具体如下:

         1.自定义view如何适配?

            对于自定义view,里面肯定需要一些其他尺寸也需要适配,这时候我们需要知道一件事,就是我们自定义view的宽和高是可以使用框架来进行适配的(洪洋的博客或者giihub中都有介绍),所以我们其他的一些尺寸值,我们就要采用相对值,相对于view的宽和高来取尺寸,例如:假如说UI给的尺寸为500*500,我们自定义view的尺寸为1000*1500,那么我们就应该这么配置尺寸:

w1=0.5*view.getWidth();  h1=v.getHeight()/3;

         2.切图如何适配?

          这是一个特别让人头疼的事,但是解决了又发现特别好。最开始为了适配平板,我们ui给我切了4套图,但是问题还是有,就是有些平板适配还是不行,当时就纠结了。不过后来想想其实只要切一套图就可以了,只需要xhdpi的图就行,其实我们可以把imageview的尺寸用代码适配写死,然后图片的缩放模式设置为填充,这样就可以通过代码做适配了,还少用了几套图,包减小了不少,很爽。

        3.dialog如何适配?

         首先说dialog寄存的activity需要使用适配,因为他宿主的很多属性还是会影响到dialog的,这点非常重要,然后就是dialogfragment中:

    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);        View rootView = inflater.inflate(R.layout.fragment_normal_dialog, container, false);        AutoUtils.auto(rootView);        return rootView;    }

其实就是使用AutoUitls.atuo(view)方法就可以了。

        4.正方形的图片如何做适配?

        像头像等等图片都是正方形的,那么如何来做适配呢?当然洪神的博客上也有,就是如下:

由于该库的特点,布局文件中宽高上的1px是不相等的,于是如果需要宽高保持一致的情况,布局中使用属性:app:layout_auto_basewidth="height",代表height上编写的像素值参考宽度。app:layout_auto_baseheight="width",代表width上编写的像素值参考高度。
但是使用的时候注意点就是要按照大的尺寸作为基准,否则会出现图片变大,适配不成功。


原创粉丝点击