【android官方文档】android 屏幕适配 支持不同的屏幕
2014-02-21 11:14
543 查看
如转载请注明出处http://blog.csdn.net/ethanchiu/article/details/19611537
一般有四种尺寸: small, normal, large, xlarge
和四种密度low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
为了给不同的屏幕适配,应该使用不同的布局和图片,你必须将这些可选的资源放到不同的文件夹下,类似于你设置不同语言。
需要意识到屏幕的方向(水平或者垂直)是不同的屏幕尺寸,所以许多apps需要修订布局来优化不同方向的用户体验。
注意:为了适应不同屏幕,android自动放缩布局。因此,不需要担心不同屏幕上的布局的UI元素的绝对值,应该把重点放在影响用户体验的布局结构上(比如重要view相对于兄弟view的大小和位置)。
比如,这个项目包含了默认的布局和一个可选的大屏幕布局:
文件名字是一样的,但是里面的内容是不一样的。
在你app中的简单引用
Resources 。
另一个例子,有一个项目包含水平方向的布局文件:
默认的,layout/main.xml文件用在垂直方向的布局。
如果需要给水平方向提供特殊的布局,并且在大屏幕上,就需要使用large 和 land 标示符:
注意:Android 3.2 即以上的版本提供一个定义屏幕尺寸的先进方法,这个方法可以给最小宽度和高度指定资源文件。本问不包括这个技术,更多信息请看Designing
for Multiple Screens。
为了生成这些图片,你需要用矢量格式的原生资源,并为每种密度生成图片:
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
这就意味着要给xhdip设备生成200x200的图片,同样的hdpi是150x150,mdpi是100x100,ldpi是75x75。
任何时候引用@drawable/awesomeimage ,系统会根据屏幕密度选择合适的图片。
注意:ldpi资源不总是必要的。当你提供了hdpi资源,系统会压缩一半,来适应ldpi的屏幕。
更多创建图标的注意点和知道,参看Iconography design guide.
支持不同的屏幕
android将设备屏幕归纳为两种:尺寸和密度。你要知道你安装的app是在你设备屏幕的范围内的。这样,app需要包含些资源文件来优化app在不同密度尺寸的屏幕下的外观。一般有四种尺寸: small, normal, large, xlarge
和四种密度low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
为了给不同的屏幕适配,应该使用不同的布局和图片,你必须将这些可选的资源放到不同的文件夹下,类似于你设置不同语言。
需要意识到屏幕的方向(水平或者垂直)是不同的屏幕尺寸,所以许多apps需要修订布局来优化不同方向的用户体验。
创建不同的布局
为了优化在不同屏幕尺寸下的用户体验,你需要创建不同的布局xml文件。每一个布局文件需要保存在合适的资源文件夹下,按照 -<screen_size> 作为后缀。比如,一个大屏幕的布局需要放在res/layout-large/文件夹下。注意:为了适应不同屏幕,android自动放缩布局。因此,不需要担心不同屏幕上的布局的UI元素的绝对值,应该把重点放在影响用户体验的布局结构上(比如重要view相对于兄弟view的大小和位置)。
比如,这个项目包含了默认的布局和一个可选的大屏幕布局:
MyProject/ res/ layout/ main.xml layout-large/ main.xml
文件名字是一样的,但是里面的内容是不一样的。
在你app中的简单引用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }系统从合适的文件夹中读取了布局文件。更多信息看Providing
Resources 。
另一个例子,有一个项目包含水平方向的布局文件:
MyProject/ res/ layout/ main.xml layout-land/ main.xml
默认的,layout/main.xml文件用在垂直方向的布局。
如果需要给水平方向提供特殊的布局,并且在大屏幕上,就需要使用large 和 land 标示符:
MyProject/ res/ layout/ # default (portrait) main.xml layout-land/ # landscape main.xml layout-large/ # large (portrait) main.xml layout-large-land/ # large landscape main.xml
注意:Android 3.2 即以上的版本提供一个定义屏幕尺寸的先进方法,这个方法可以给最小宽度和高度指定资源文件。本问不包括这个技术,更多信息请看Designing
for Multiple Screens。
创建不同的Bitmap图片
你需要提供广义上不同密度的图片: low, medium, high and extra-high 。这会帮你获得好的图形质量和性能。为了生成这些图片,你需要用矢量格式的原生资源,并为每种密度生成图片:
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
这就意味着要给xhdip设备生成200x200的图片,同样的hdpi是150x150,mdpi是100x100,ldpi是75x75。
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png
任何时候引用@drawable/awesomeimage ,系统会根据屏幕密度选择合适的图片。
注意:ldpi资源不总是必要的。当你提供了hdpi资源,系统会压缩一半,来适应ldpi的屏幕。
更多创建图标的注意点和知道,参看Iconography design guide.
相关文章推荐
- Android 设置飞行模式,判断是否是飞行模式
- Android APK自动安装
- android的上下文菜单---context menu
- android--Notification--Flag类型
- Android多线程与Java多线程比较
- Android 图片的浏览、缩放、拖动和自动居中
- Android组件研究
- android将对象转换为json格式
- android数据存储之ContentProvider
- Android AsyncTask的使用介绍与示例
- 【Android学习】 LinearLayout 组件左右分开的布局设置
- android中多分辨率支持方法
- Android examples
- (转)Android 系统 root 破解原理分析
- Android任务、进程、线程的关系
- Android数据缓存
- Android QQ空间浏览图片动画特效的实现(※)
- 关于android中线性布局的layout_gravity属性
- Android中AutoCompleteTextView的使用
- Android中GridView使用总结