Android适配问题初认识

来源:互联网 发布:sql语言具有查询功能吗 编辑:程序博客网 时间:2024/05/21 10:01

曾经看过一篇学习方法的文章,学习效率最高的方法就是教别人(强行教别人)。

这就是我开始写博客的目的,很自私,但是这种既能分享经验又能提高自己的自私又何乐不为呢?



我在做一个Android app,项目名称叫做数字中传手机客户端,2014年暑假学习了Android并且将程序框架编了出来,也并没有太多注意程序的美化。

可能实在是丑爆了!我觉得略微研究一下Android适配问题。

程序界面正确显示在屏幕上主要由 屏幕像素密度 和屏幕尺寸 决定的。

这里先探讨一下屏幕分辨率。

这里拿我的华为荣耀6举例~~ 屏幕分辨率为1920*1080。

所以我们可以这样表示,手机长1920px,宽1080px。

知道分辨率后我们再来推导另一个重要的参数:屏幕像素密度density

有两个单位   dpi (Dots per inch每英寸‘2.75cm’的点数)和  ppi(Pixel per inch 每英寸的像素),在很多地方都是可以混用的。

我的手机5英寸,宽1080ppi,长14cm,宽7cm.

x_density = 1080/(7/2.75) = 424 ppi

当然我得到的这个数是个约等于,官方给出的结果是441。


好的,接下来是在开发android程序里常用的一个表示图像的单位dp了。

他是一种可以根据屏幕像素密度而变化的单位,举个栗子

android给了一个标准屏幕像素密度 160ppi

所以在该屏幕像素密度下,1dp = 1px(像素)

当在我的手机下运行时,屏幕像素密度变成了441,是原来的441/160 = 2.75625。

那么这时 1dp = 2.75625 px。

屏幕的长宽用换算后的dp表示 就是 

长 1920 / 2.75625 = 696.6 dp

宽 1080 / 2.75625 = 391.8 dp


用dp表示的一个好处就是他可以随着屏幕密度的变化而变化,所以我们引用图片的时候都是用dp做单位而不是px。但是还有一个问题就是你的图片像素不高,在density很高的设备上显示效果就不好了,所以最好可以针对不同的density做相对应的图片,在Android2.1以及之后,出现了drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi。在这些文件下提供的图片大小最好是3:4:6:8:12(别问我为什么我也不知道~~)。程序在不同的屏幕密度下运行时,会首先去符合当前屏幕密度的文件夹下找对应的资源,如果没有,系统会以最省力为前提去别的文件夹下找对应的资源并对其进行相应的缩放,如果还没有,就回去默认的drawable文件夹下找,然后按照2.1之前的规则缩放。如果还没有找到,应用就会报错或者直接crash掉了。当然如果清晰度够高的话一张图片就够用了。不过影响适配的还有另一个因素就是屏幕尺寸,有的手机宽有的手机窄,该怎么办!

下次再写~~


——————————————————————————————————————————————————————————————————


0 0
原创粉丝点击