Android 屏幕尺寸和分辨率的适配

分辨率无关

使用密度无关的像素

Android 使用密度无关的像素(dp)来指定屏幕尺寸,它使布局具有缩放效果。
在应用程序中应经常使用dip(dp),而避免使用像素指定任何布局尺寸、View大小或者图像尺寸。
Android还使用了缩放无关的像素(sp)来衡量文本大小的特殊情况。

像素密度的资源限定符

最还为不同像素密度提供多个图像资源

  • res/drawable-ldpi 为120dip左右的屏幕提供低密度资源
  • res/drawable-mdpi 为160dip左右的屏幕提供中等密度资源
  • res/drawable-tvdpi 为213dip左右的屏幕提供中高密度资源
  • res/drawable-hdpi 为240dip左右的屏幕提供高密度密度资源
  • res/drawable-xhdpi 为320dip左右的屏幕提供超高密度资源
  • res/drawable-nodpi 用于不管宿主屏幕密度如何都不能缩放的资源

为不同屏幕大小提供支持和优化

不用为每个特定的屏幕创造一个不同的绝对布局,可以使用下面两段式方法:
1. 保证所有的布局都能在一个合理的范围内进行缩放
2. 创造一组范围重叠的备选布局来满足所有可能的屏幕配置

创建可缩放的布局

为不同屏幕类型优化布局

使用long和notlong修饰符为正常的宽屏显示提供优化的布局,使用port和land修饰符分别指示当屏幕为横屏或者竖屏时所使用的布局

res/layout-long-land/    宽屏横屏模式的布局
res/layout-notlong-port/ 非宽屏竖屏模式的布局

指定支持的屏幕尺寸

可以通过在清单文件中使用supports-screens元素来指定应用程序可以运行在哪些屏幕上


false值强制Android使用兼容性缩放比例来尝试正确地缩放应用程序的UI,这通常会使UI图像质量下降。

创建可缩放的图形资源

可以使用XML定义drawable资源,储存在res/drawable文件夹下。

颜色Drawable


形状Drawable

形状Drawable资源允许使用标记指定基本形状的尺寸、背景和笔划轮廓线。
shape的属性值:

  • line 一条跨越父View的宽度的水平线,线的宽度和样式是通过形状的笔划来描述的
  • oval 简单的椭圆形
  • rectangle 简单的矩形。也支持使用radius属性创建圆角矩形的子节点
  • ring 使用innerRadius和thickness属性指定圆环的形状的内径和厚度。使用innerRadiusRatio和thicknessRatio将圆环的内径和厚度定义为宽度的比例。

使用子节点时,可以通过width和color属性指定形状的轮廓线,还可以包含节点来移动形状在画布上的位置。

渐变Drawable

渐变Drawable是使用标记并作为形状Drawable定义中的子节点定义的。
每一个渐变Drawable都要求至少有一个startColor和endColor属性,并且支持一个可选的middleColor属性。通过使用type属性,可以把渐变定义为以下列出的某种类型:
1. 线性 显示按照angle属性定义的角度从startColor到endColor的直接颜色过渡。
2. 辐射 从形状的外边界到中心绘制从startColor到endColor的圆形渐变。要使用gradientRadius属性指定以像素计算的渐变过渡的半径。centerX和centerY移动渐变中心的位置。(可能需要为不同的屏幕分辨率指定不同的渐变半径)
3. 扫描 绘制一个扫描渐变,它将沿着父形状的外边界从srartColor到endColor进行过渡。

.9图

以.9.png作为文件扩展名的可拉伸的位图。

你可能感兴趣的:(Android)