zoukankan      html  css  js  c++  java
  • android适配_相关概念和应用

    有几个概念以及相关公式先理解下:
    1、dp:device independent pixels(设备独立像素),是像素和密度的比
    dp = px / density

    2、dpi(dot per inch每英寸的点数)和ppi相等,是屏幕对角线的像素数和屏幕尺寸的比例
    dpi = ppi = (√(screenHeight^2 + screenWidth^2)) / 屏幕大小(inch)


    3、密度是dpi和160的比例
    density = dpi / 160

    4、英寸是相许和dpi或ppi的比例
    inch = px / dpi = px / ppi


    适配,按自己理解的只有以下两种情况(有不同见解可以补充)

    先看第一种情况(屏幕宽度相同,分辨率不同)

    1、一款分辨率是480 * 800的手机,宽 480,高800,高度一般会受虚拟键等的影响,但宽度是一定的,以宽度为标准,所以,一般都是按宽度进行区分

    160dpi 屏幕宽度为3 inch,dp为480dp

    2、另外一款分辨率 720 * 1280的手机宽 720,高1280

    240dpi 屏幕宽度为3 inch,dp同样为480dp

    所以,两款手机屏幕大小一样,但是分辨率不同,因此,相同的布局文件相同的dimens文件完全适用于这两款手机
    但是图片呢,相同的图片,分别放在drawable-mdpi和drawable-hdpi,
    在第一款手机上显示正常,在第二款手机上却会显得小,所以,高密度的图片应该做大
    (注:如果只有一套图,比如放在drawable-mdpi中,图片显示大小是相同的)

    第二种情况(分辨率相同,屏幕宽度不同)

    1、一款分辨率 720 * 1280的手机宽 720,高1280
    160dpi 屏幕宽度为4.5 inch,dp为720dp

    2、一款分辨率 720 * 1280的手机宽 720,高1280
    240dpi 屏幕宽度为3 inch,dp为480dp

    借上一种情况结果,图片会做不同尺寸,现在布局和尺寸可能会不同了
    所以,布局和尺寸需要进行适配,如果不同大小的屏幕需要不同布局。
    例如第一款手机,可能是平板大小了,布局和手机不同,layout不能适用于平板,
    因此,需要重新建立文件夹重新布局例如 layout-sw720dp
    第二款手机,布局也不同,需要建立layout-sw480dp

    对于不同屏幕尺寸,view的尺寸可能也会有不同
    在values中会有dimen.xml文件,因此尺寸也需要适配
    可能会建立如下目录values-sw720dp、values-sw480dp

    sw720dp、sw480dp的格式如下:
    sw<N>dp (smallestWidth)屏幕横竖屏切换,最小屏幕宽度不会发生变化
    w<N>dp 屏幕横竖屏切换,屏幕宽度会根据横竖屏发生变化

    其中的N指的是屏幕宽度,单位dp,720px不同密度,宽度不同,所以会有不同目录
    这种使用方式是3.2才开始使用,之前是使用small、normal、large、xlarge这种
    目录名称举例:
    layout-sw720dp、layout-sw480dp、layout-sw320dp、layout-large、values-sw480dp等


    总结,就目前自己了解的适配就这两种情况
    1、屏幕宽度相同,分辨率不同(适配不同密度图片、不同密度的样式、主题等)
    2、分辨率相同,屏幕宽度不同(适配不同布局、适配不同尺寸)

    另外,从android生成的目录结构来看,应该还有第三种,适配不同版本
    如values目录会有values-v11、values-v14,里边只有style.xml,
    是不同的主题,可能是不同版本的android,主题有新增的,想在新版本使用新ui界面,做的适配,未经证实,仅是猜测。

    推荐以下文档,研读:

  • 相关阅读:
    eclipse快捷键
    eclipse跑jfinal项目遇到的种种坑,java.lang.NoSuchMethodError
    ./configure ,make ,make install命令
    解决docker,ubuntu镜像中没有vi/vim
    使用qr生成二维码
    shell重定向
    ubuntu16.04启动rabbitmq报错
    HandlerMapping
    springMVC中绑定参数的常用注解
    mybatis的缓存机制
  • 原文地址:https://www.cnblogs.com/dzboy/p/3929533.html
Copyright © 2011-2022 走看看