zoukankan      html  css  js  c++  java
  • android 屏幕适配

    // 从做过的项目中做的一些屏幕适配学到了一些东西,进行一下总结.

    1、理解几个名词

    dip:设备独立像素,不同设备有不同的显示效果,和硬件设备有关。 不依赖像素.
    dp: 同dip
    sp:(scaled)放大像素,一般用于定义字体大小(google官方推荐).
    dpi:每英寸的像素数量.
    density:密度

    ldpi 低密度 120dpi    density=0.75
    mdpi 中密度 160dpi
    hdpi 高密度 240dpi
    xhdpi 超高密度 320dpi  density=2
    xxhdpi 超超高密度 480dpi
    xxxhdpi 超超超高密度 640dpi


    2、不同尺寸屏幕文字大小的显示

    布局页面内容(图片,文字)不同尺寸屏幕下的大小显示不同:

    在每个文件加中都放置一套dimens.xml 文件。

    dimens.xml 中的适配问题:(不同屏幕字体显示大小不同)
    854*480的屏幕,会寻找 844*480,
    不会寻找844*481 的values文件夹。
    不会寻找855*479.
    也不会寻找855*480.
    // 如果找不到刚好恰当的,就选择最近的长和宽都小于当前手机的values文件夹中dimens.xml 中定义的尺寸大小。
    文件夹名称命名为:values-1200x800


    3、不同尺寸屏幕图片大小的显示

    在res目录下有 drawable, drawable-ldpi, mdpi, hdpi, xhdpi, xxhdpi, 图片放在这些文件夹中是有区别的。

    google在设计screen fit 的时候使用自动渲染机制
    Android SDK会自动屏幕尺寸选择对应的资源文件进行渲染,如SDK检测到你手机dpi是160的话会优先到drawable-mdpi文件夹下找对应的图片资源,注意只是优先,假设你手机dpi是160,但是你只在xhpdi文件夹下有对应的图片资源文件,程序一样可以正常运行。所以理论上来说只需要提供一种规格的图片资源就ok了,如果只提供ldpi规格的图片,对于大分辨率的手机如果把图片放大就会不清晰,所以需要提供一套你需要支持的最大dpi的图片,这样即使用户的手机分辨率很小,这样图片缩小依然很清晰。


    如果你在xhdpi文件夹下放了一张图片a.png(100*100), xhdpi的设备会去该文件夹下找这张图并原样显示。但是如果是hdpi的设备就会去hdpi文件夹下面找图片,但是没有找到,只能使用hdpi文件夹下面的图片,会根据density计算并缩放。(1.5/2) * 100 = 75, 所以,在hdpi的设备中显示的大小应该是75*75px。

    http://blog.csdn.net/singwhatiwanna/article/details/19139013 中有一张表格总结的非常好,可以参考一下。


    // 我们设计图片最好提供当下流行的分辨率进行设计,这样能够达到比较好的效果(适当放大缩小图片不会严重走样)。 当然,你可以对各种分辨率设计一套图(UI设计师会愤怒的...抓狂 ),但这样打包成apk会增大很多,并不可取。

    4、延伸问题

    因为在Android中,相同dip在所有mdpi设备上虽然像素数量是一样的,但是因为各设备dpi不一样,所以在最终的显示尺寸上是有微弱差别的。

    如:165.2 PPI,根据android归一化原则(取值有160,223,240,320,480,640),归一到160dpi即 mdpi一类。计算屏幕像素密度的时候单位是PPI,计算完了归一化。


    如何获取你使用的手机的具体的物理尺寸大小?
    这个问题暂时还没有解决,如果解决之后我会补上。 你若有什么好的办法请告诉我,谢谢~


    -------------------------------------------------------------------------------------------------------------------------------------------

    腾讯QQ团队重点按照以下的方式来做不同适配:
    1、布局文件xml不使用像素等单位,也尽量不在xml文件中设置尺寸,根据不同分辨率定义几套dimens文件,从而在布局文件里引用dimens文件里已经定义好的尺寸。
    2、图片需要美工针对高低分辨率做两套图,如果是填充背景型的图片,用.9格式;
    3、代码特别是自定义控件绘制时避免使用硬编码,应该引用dimens文件中的尺寸。
    具体情况我们可以反编译QQ的apk文件看一下布局。

    // 上面说的实际上只是一些基本的屏幕适配注意点,想把项目适配做的非常好并不是一件容易的事情,以后在开发过程中有什么新的问题及解决办法我会继续补充。


  • 相关阅读:
    Spring 结合 Hibernate 配置 C3P0
    servlet直接调用spring的serivce方法
    http协议 web开发的应用 笔记
    一个让微软晕倒的中国人,绝对经典
    经典的上课插嘴
    教授说接吻
    在狼身上值得我们学习的十大处世哲学(经典)
    结婚前的暴强对话
    小笑话
    非一般的分手信
  • 原文地址:https://www.cnblogs.com/jinfenglee/p/4388710.html
Copyright © 2011-2022 走看看