Android 屏幕适配简易版


如何做好Android 屏幕适配呢,我就拿我觉得比较说一下我认为比较简单的方式,主要分为以下几个步骤:

一:确定好设计图的尺寸ui设计图出图到你手上,首先你要做的是看一下设计图的尺寸,是不是通用尺寸,如果图的大小是735*888,,这种图明显不是常见的设备最好是          让设计师重新做一个比较合适的尺寸比如720*1280,当然要是他不肯改,那也没办法那就继续往下走吧

二:确定好图后,根据你的调试设备生成对应的dimen.xml文件

1:获取设备dpi

        public static float getDpi(Context context){
           WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
           DisplayMetrics dm = new DisplayMetrics();
          wm.getDefaultDisplay().getMetrics(dm);
          return dm.densityDpi;
        }

      2:生成dimens.xml,次函数的参数分别为,设备的宽,设备的高,设备的dpi值

public static String getDimenResourceDpi(int width,int height,float densityDpi){
    StringBuilder sb = new StringBuilder();
    int size = Math.max(width,height);
    sb.append("<resources>");
    sb.append("\n");
    for (int i = 1; i <=size;i++){
        sb.append("\t<dimen name=\"");
        sb.append("px_");
        sb.append(i);
        sb.append("\"");
        sb.append(">");
        sb.append((float) (i) * 160f / densityDpi);
        sb.append("dp</dimen>\n");
    }
    sb.append("</resources>");
    return sb.toString();
}


3:在单元测试中或者自己写一个java程序输出dimen.xml

    @Test
    public void createDimenXMl()throws Exception{
        String content = PhoneDevice.getDimenResourceDpi(780,1280,213);
        FileManager.writeFile(new File("H:\\dimens.xml"),content);
    }


把生成的文件拷进values中使用这样,设计图里遇到占据屏幕宽高的尺寸全部用match_parent 如果不是则用我们自己生成的dimen中的值替换

设计图宽是300px 就写成layout_width="@dimen/px_300"

这样实际上就使用了dp来进行适配,而且是与当前设备准确的值,这样就到达了在于设计图分辨率大小一致的设备上,是精确到1px的,而其他不同分辨率下的因为使用了dp进行适配,效果相差不大与设计图基本一致,而遇到某些屏幕宽高度比较特殊的只能做特殊处理了,新建特定尺寸下的布局文件即可解决,高度不够的情况下使用scrollview来替换掉高度不足以显示内容的设备布局,思路大致就是这样了


市场上基本上手机的分辨率就是哪几种主流的,精确适配了这几类主流机型,那么其余的机型即使不做适配,运行起来的效果也不会相差特别大,也就达到了适配的效果,当然这种方法也是不能完全解决的,只是提供一种比较简单,不使用第三方库的方式设备,比如鸿扬大神的百分比布局autoLayout,虽然好,但是却不喜欢每次写布局出现com.zhy.xxxx 这种字眼,是不是啊,而且总不能没有别人写的库你就不会做适配了吧,水平有限,希望有错欢迎大家指正,我会改。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值