Android适配相关小结

来源:互联网 发布:最新好看的网络电影 编辑:程序博客网 时间:2024/05/17 07:28

    近日很是无聊,花了半小时简单汇总一下安卓适配相关知识,以备自己及他人参考学习,如果有错误,欢迎评论~


ldpi   :240x320  ~ 120dpi
mdpi  :320x480  ~160dpi--------------------标准
hdpi   :480x800  ~240dpi
xhdpi  :1280x720 ~320dpi-------------------720P
xxhdpi : 1920X1080 ~500dpi------------------1080P

l:m:h:x=3:4:6:8:12


dpi=对角线长度像素总数/对角线长度;


由于国产手机分辨率及尺寸杂乱,导致计算出来的dpi与google文档参数有一定出入;


dimens.xml样式引用规律:先找对应分辨率的dimens,若没有找到,则找比它小的,若还没有找到,则找默认的,如还没找到则报错(不会找比它分辨率高的)


drawable中图片引用规律:先找对应的,没有则找比它分辨率高的,再没有的话则找比它分辨率小的。


手机: 480P--------- 1dp~1.5px
            720P--------- 1dp~2px
            1080P-------- 1dp~3px


       sp与px换算和dp与px换算基本一致,可以使用以下方法完成:


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


    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }


    public static int px2sp(Context context, float pxValue) {
        final float fontScale =          context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }


    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }


手机适配的方式如下:


1:尽量在xml布局文件中用线性布局,使用权重;

2:对等分屏幕,同时视图高度与宽度相同,可以通过在Java代码中控制;

eg:topWidth = (ApplicationWrapper.screenWidth - Utils.dip2px(context, 36 * 3)) / 2;        
       viewHolder.ivTopPic.getLayoutParams().width = topWidth;
       viewHolder.ivTopPic.getLayoutParams().height = topHeight;

 

3:对不同手机展示不同布局的,可以通过写不同的xml布局文件
eg:
    android3.0之前,适配指定分辨率,将layout文件夹做如下命名:
    layout  layout-1024x768   layout-1024x600   layout-1280x768 
    android3.0以后,需将高度减去48像素,即底部状态栏的高度:
    layout  layout-1024x720   layout-1024x552   layout-1280x720 
    横屏版本的话,中间加上land,例如: layout-land-1024x720
    竖屏版本的话,中间加上port,例如: layout-port-1024x720
    注意:layout这个原来的文件夹及资源一定要存在,否则会出现错误
               同时在命名layout文件夹时,大数放在小数的前面,否则会报错

 
4:对相同布局可能边距及字体大小的相关适配可以通过在不同的dimens.xml文件中适配


eg:values-port-1280x720、values-port-800x480、values-sw480dp、values-sw600dp、values-sw800dp
注意:数值前面有sw的是针对pad版本的适配,目前国产手机追求高大上,所以屏幕越来越大比如华为荣耀X2大到7寸,所以目前手机与pad的区分越来越难;基本都是根据屏幕的宽度来区分。


5:要灵活使用.9图片


6:未完待续~
 
适配Pad一般根据最小屏幕宽度,sw480,sw600,sw800分别表示屏幕最小宽度为480dp、600dp、800dp;

1 0
原创粉丝点击