应用程序骨架支持多个屏幕
因为我们知道Android随着各种不同的function,分辨率和屏幕尺寸的设备而来,所以在开发一个支持多个(大和小)屏幕的应用程序时,存在大小和布局的障碍。
这导致了屏幕尺寸,分辨率和DPI的不同组合,并且为Android设备的devise和开发创造了相当大的挑战。 虽然其他制造商(非Android)具有不同的分辨率和DPI,但它们共享相同的屏幕大小,并且分辨率遵循相同的宽高比。 因此,可以创build一个图像,以适应非Android设备。
我的问题是,是否有适当的stream程或体系结构,以满足要求?
记得我们有不同大小和分辨率的平板电脑。
我知道Android开发人员包含这个信息,但我的看法是从实施。
据我所知,我所了解的是,即使程序员必须知道devise的概念,为了deviseAndroidgraphics。
最后创build了一个处理多屏幕布局和图标的结构。
Android会根据两个参数将设备显示分为几类:
- 屏幕尺寸,显示屏的物理尺寸(对angular线测量)
- 屏幕密度,显示器的物理像素密度(每英寸像素或ppi)`
要快速确定屏幕大小和密度,请安装适用于Android的“ 我的尺寸 ”应用程序。
屏幕尺寸
Android定义了四种通用屏幕尺寸:
Qualifier Size small ~3 inches (approx) normal ~4 inches (approx) large Exceeds 4 inches xlarge Exceeds 7 inches
- 大多数手机被分类为小型或正常(对angular大约3到4英寸)。 但是现在有很多大屏幕的手机,比如Galaxy S4,HTC One,Xperia Z
- 像三星Galaxy Tab这样的小型平板电脑被归类为大型(大于4英寸)
- 特大号适用于大型设备,例如大型平板电脑
Android定义了四种广义的屏幕密度:
Qualifier Description Nominal value ldpi low density 120 ppi mdpi medium density 160 ppi hdpi high density 240 ppi xhdpi extra high density 320 ppi
典型:
- 屏幕尺寸对您的应用布局影响最大
- 屏幕密度对您的图像和graphics资源影响最大
这里列出了设备屏幕的百分比差异
- Ldpi- 75%
- Mdpi- 100%(根据Android开发者网站的基础)
- Hdpi-150%
- XHdpi- 200%
但是现在我们知道大部分的设备都是用480X800的,所以我认为这是基于设备,所以我们的新计算会是这样的
- Ldpi-50%
- Mdpi- 66.67%
- Hdpi- 100%
- XHdpi-133.33%
这意味着第一个图标和devise将只为480X800 ,然后为其余的(即Ldpi,Mdpi,Xhdpi)创build。
所有的布局都有图像,并且颜色和形状必须统一(没有复杂的形状,没有曲线),所以对于这种图像,我们创build了9patch
,放在“drawable(no-suffix)”文件夹中。 要创build9Patch图像,您可以使用DrawNinePatch或BetterNinePatch
现在只需要根据Android的标准重新命名你的图像,并用hdpi
完成你的应用程序,然后只需要drawable-hdpi
文件夹和Open Adode Photoshop (推荐)创build多个大小的Action (只需按照百分比比例改变大小)大小然后只是做批量自动化,并给予源(drawable-hdpi)和目的地(drawable-ldpi,drawable-mdpi,drawable-xdpi)。
我之所以坚持使用Photoshop,是因为它会通过动作自动调整图像大小,另外还有一点是您不需要重命名文件(它将指定与原始文件相同的名称)。
一旦完成了所有图像的创build,请刷新您的项目并对其进行testing。
有时可能会出现支持屏幕(xhdpi,hdpi,mdpi)的布局可能会在小屏幕(ldpi)中被剪切的情况,所以为了处理它,只需为它创build单独的布局文件夹(layout-small)并添加ScrollView
(大部分) 。 而已。
平板电脑片分为两种尺寸。
- 7“(1024X(600-48(导航栏)))= 1024X552(可绘制大)
- 10“(1280X(800-48(导航栏)))= 1280X752(可绘制的x大)
在这个我们需要创build图像的两个屏幕,只是把它们相应
所以总而言之,我们将在我们的应用程序中拥有这个文件夹来支持多个屏幕。
drawable drawable-ldpi drawable-mdpi drawable-hdpi drawable-xhdpi drawable-large drawable-xlarge
将更多的资格与Screen size and Screen density
组合
drawable-large-ldpi drawable-large-mdpi drawable-large-hdpi drawable-large-xhdpi
Screen density and Version
更多限定符
drawable-ldpi-v11 drawable-mdpi-v11 drawable-hdpi-v11 drawable-xhdpi-v11
和更多的Screen size and Version
限定符
drawable-large-v11 drawable-xlarge-v11
和更小的Smallest width concept(SW)
drawable-sw???dp
此外,在Android V3.0 Honeycomb中,他们引入了SW(smallest width)
新概念,其中设备被分类为屏幕宽度,所以如果我们创build一个名为drawable-sw360dp
的文件夹,那么具有720dp(宽度或高度)的设备将使用该文件夹中的资源。
例如findSamsung Galaxy S3
dp后缀为drawable-sw?dp
参考DP计算 ,如果你想支持你的布局或绘制到S3然后计算说
px =设备宽度= 720
dpi =设备密度= 320
给出的公式
px = dp * (dpi / 160)
互换公式,因为我们有px的价值
dp = px / (dpi / 160)
现在把价值,
dp= 720 / (320/160); dp=360.
所以drawable-sw360dp
会做这个工作
从GsmArena Sameway获得设备configuration,你也可以根据设备的Android API版本创build文件夹,即drawable-hdpi-v11`,因此具有API11的设备是Hdpi,那么它将使用这个资源。
其他提示:
-
使用相对布局,dp,sp和mm
dp单位 – 与设备无关的像素在160 ppi的屏幕上归一化为1个物理像素,即中等密度。 在运行时缩放。 用于屏幕元素尺寸
sp单位 – 缩放的像素,基于dp单位指定为浮点值,但是会额外缩放用户的字体大小首选项设置。 在运行时缩放。 用于字体大小
你应该总是使用RelativeLayout进行布局; AbsoluteLayout已弃用,不应使用。
-
使用适当的图像格式 – PNG与JPEG
Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.
但是,PNG和JPEG不是等同的。 他们有不同的质量权衡,PNG并不总是最好的:
JPEG可以提供比PNG文件大小减less50%的文件,如果你的应用程序是图像密集型的,那么这是非常重要的
对于相同的文件大小,更高质量的“有损”JPEG可能比高度压缩的“无损”PNG看起来更好
-
将标签添加到您的图像和graphics进行debugging
-
使用supports-screens元素
-
用真实的设备值configuration你的模拟器
通常,桌面系统显示为72ppi(Mac)或96ppi(Windows,Linux)。 与手机相比,台式电脑的显示屏始终是低密度的。
总是configuration你的Android模拟器来模拟真实的设备值,并且总是把它们设置为模拟设备密度。
在Eclipse中,可以很容易地创build多个仿真器(从Eclipse菜单栏中selectWindow> AVD Manager> New ),configuration了真实设备的值:
为其仿真的真实设备命名模拟器指定分辨率,不要使用内置的通用尺寸设置设备密度以匹配真实设备(在“硬件”窗格中将“抽象LCD属性”设置为真实密度,总是一个整数值)
启动设备时,请始终select“缩放显示为实际大小”,然后以英寸input实际屏幕大小。
如果不设置设备密度,则仿真器默认为低密度,并且始终加载特定于ldpi的资源。 分辨率(像素尺寸)将是正确的,但您的密度相关的图像资源将不会按预期显示。
当然,您所做的任何事情都不会在较低密度的桌面显示器上重现更高密度的图像质量。
以下是截至2012年10月1日的7天期间收集的数据。要查看有关Android平台版本的最新统计信息, 请转到此处
基于屏幕尺寸
基于屏幕密度
devise师应该创build基础devise
base size of mdpi devices * density conversion factor of highest supported density bucket
size.Base屏幕尺寸为320 X 480像素和密度桶如下:
- ldpi:0.75
- mdpi:1.0(基本密度)
- hdpi:1.5
- xhdpi:2.0
- xxhdpi:3.0
- xxxhdpi:4.0
要解决Android设备上额外的可用空间,应在两个方向(水平和垂直)上使用可伸缩组件。 详细信息请点击这里:
http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/