1 基本设置

1.1AndroidManifest.xml设置

在<manifest>中添加子元素<supports-screens android:largeScreens="true"android:normalScreens="true" android:anyDensity="true"android:smallScreens="true"></supports-screens>

android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:

1)如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源;

2)如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源,其他同理;

3)如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。

1.2横屏竖屏目录区分

1)drawable

a)drawable-hdpi该图片即适用于横屏,也适用于竖屏;

b)drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源;

c)drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。其他同理。

2)layout

在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

2 多屏幕适配的4条黄金原则

1)在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent和dp;

具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,match_parent或dp比px更好,文字大小应该使用sp来定义。

2)在程序的代码中不要出现具体的像素值,在dimens.xml中定义;

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

3)不使用AbsoluteLayout(android1.5已废弃) ,可以使用RelativeLayout替代;

4)对不同的屏幕提供合适大小的图片。

不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra-high为96×96。

Android屏幕尺寸适配注意事项

3 使用9-patch PNG图片

使用图片资源时,如果出现拉伸,因为图片处理的原因,会变形,导致界面走形。9-patch PNG图片也是一种标准的PGN图片,在原生PNG图片四周空出一个像素间隔,用来标识PNG图片中哪些部分可以拉伸、哪些不可以拉伸、背景上的边框位置等。

“上、左”定义可拉伸区域

Android屏幕尺寸适配注意事项

“右、下”定义显示区域,如果用到完整填充的背景图,建议不要通过android:padding来设置边距,而是通过9-patch方式来定义。

Android屏幕尺寸适配注意事项

Android SDK中提供了编辑9-Patch图片的工具,在tools目录下draw9patch.bat,能够立刻看到编辑后的拉伸效果,也可以直接用其他图片编辑工具编辑,但是看不到效果。

4 测试验证

一般使用AVD Manager创建多个不同大小的模拟器,如下图:

Android屏幕尺寸适配注意事项

更多相关文章

  1. Android有进度条的下载图片并且显示图片
  2. android 屏幕监听滑动事件
  3. Android Button的背景图片拉伸变形解决方法
  4. android图片转换代码
  5. Android监听屏幕锁屏
  6. Android 异步从网络上下载图片
  7. android设置背景图片透明

随机推荐

  1. 从性能角度选购Adroid智能手机,双核、大屏
  2. Android(安卓)精选项目简介(可参考)
  3. ANDROID Porting系列四、建立公开密钥和
  4. Android中android:id="@id/变量名"和andr
  5. 为什么说android UI操作不是线程安全的
  6. Android接入支付宝实现支付功能
  7. android 开源项目集锦
  8. Android中WebView载入本地HTML代码并实现
  9. 控件事件android中自定义控件
  10. Android(安卓)中的长度单位详解