适应不同的屏幕
来源:互联网 发布:sopcast网络电视 apk 编辑:程序博客网 时间:2024/05/16 04:51
本文来自Android Developer,自行翻译Supporting Different Screens
安卓通过两种基础性能对设备进行分类:size(大小)和density(密度)。为了使APP可以在不同size和density的设备上安装,我们应该提供可选择的源文件以使APP可以适配不同size和density的设备
- sizes有四种:small, normal, large, xlarge
- densities有四种: low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
为了声明用于不同的的屏幕的布局和位图,我们需要吧这些可选择的资源分别放在不同的目录下。
同时注意屏幕的方向(landscape or portrait)也被认为是不同的屏幕大小。
创建不同的布局
为了优化APP在不同大小屏幕上的用户体验,我们应该为我们所支持的每种大小的屏幕创建不同的布局XML文件。每个布局应被保存在适当的资源目录下,以-为后缀命名。比如,对大屏幕(large screens)的布局文件应该被保存在res/layout-large/目录下。
注意:安卓会自动测量我们的布局去匹配屏幕。因此不同屏幕的布局不需要担心UI元素的绝对大小,而应该关注会影响用户体验的布局结构(比如重要的view相对于其他view的位置与大小)。
举个例子,这个工程包含一个默认的布局和一个供大屏选择的布局:
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
文件名必须一致,但是其中的内容不同。这样可以想对应的屏幕size提供合适的UI 。
像平时一样引用布局文件:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);}
系统基于APP运行的设备屏幕的大小从恰当的目录加载合适的布局文件。关于安卓怎么选择合适的资源,可以到 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及更高版本支持高级的方法定义屏幕size,这种方法允许给基于最小宽高的屏幕size指定资源,最小宽高由密度独立像素决定。可以到 Designing for Multiple Screens了这里写链接内容解。
创建不同的位图
我们应该总是提供位图资源以适应不同的密度:low, medium, high and extra-high,以此来获得好的图片质量和不同密度的屏幕上的表现。
为了产生些图片,我们应该从向量格式的原始资源开始并产生适用于不同密度的图片:
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (baseline)
- ldpi: 0.75
这意味着如果我们提供200*200的图片给xhdpi的设备,那么我们应该提供150*150的资源给hdpi,100*100给mdpi,75*75给ldpi。
并把资源放在对应的目录下:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
每当我们引用@drawable/awesomeimage,系统都会基于屏幕密度选择合适的位图。
注意:低密度(ldpi)资源并不总是必需的。当我们提供了hdpi的资源,系统可以缩小1.5倍去适配屏幕。
最后附上适配横屏模式的代码,其中使用了fragment。
- 适应不同的屏幕
- android适应不同的屏幕
- 关于适应不同屏幕的理解
- 适应各种不同屏幕宽度的网页
- android 不同分辨率,屏幕适应
- 适应不同分辨率屏幕的问题 android layout
- Qt on Android:怎样适应不同的屏幕尺寸
- Qt on Android:怎样适应不同的屏幕尺寸
- 一个网页适应多种不同屏幕的移动wap开发
- 兼容不同的屏幕大小(推荐,最官方的适应屏幕大小的经验)
- Android布局layout如何适应不同的分辨率和不同大小的屏幕
- 适应不同的设备
- wpf 根据不同屏幕分辨率自动适应屏幕
- CSS使网页适应不同屏幕大小
- 实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题
- 自适应页面布局使得应用适应不同屏幕的尺寸变得更加容易
- HTML和CSS适应不同终端屏幕的实现(附typecho CSS文件)
- 关于适应屏幕的宏
- redis启动提示vm.overcommit_memory、somaxconn警告错误
- Linux0.11内核--引导程序分析
- ios 的数据持久化技术(一)
- Elasticsearch创建索引
- 常用类
- 适应不同的屏幕
- Java-QRCode生成二维码学习笔记
- 并查集
- 软件程序编写规范 - 中(仅供参考)
- POJ 2449 Remmarguts' Date A* -
- 1044 火星文
- Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构
- OpenGL基础教程(1):体系结构一览
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map)