Android应用如何适配不同的屏幕
来源:互联网 发布:打印文件软件 编辑:程序博客网 时间:2024/05/18 01:05
Android使用size(尺寸) 和density(密度)这两个属性对设备屏幕进行分类。一个APP可能被安装到屏幕size和density不同的设备上。因此,APP应该包含一些替代资源,使其UI能适配不同的size和density。
•有四种基本的尺寸:small, normal, large, xlarge
•和四个基本的密度:低(ldpi),中(mdpi),高(hdpi),超高(xhdpi)
与适配多语言的操作类似,您需要把不同屏幕的layouts和bitmaps放在不同的资源目录中。需要注意的是屏幕方向(landscape或portrait)被认为是屏幕尺寸的变化,所以APP应该修改布局,以优化每个方向的UI显示。
创建不同的布局
要使不同屏幕尺寸的UI显示效果最佳,您应该为每个屏幕尺寸创建一个layout文件,并将每个layout文件保存到相应的以 - <screen_size>
后缀命名的资源目录中。例如,适用于大屏幕layout文件应该保存在res / layout-large /
下。
注意:Android系统会自动缩放您的布局,以适应屏幕。因此,不同屏幕尺寸的布局不需要关注UI元素的绝对大小,而要关注影响用户体验的布局结构(例如某些重要视图相对其他视图的大小和位置)。
例如,某项目包括默认布局和适用于大屏幕的替代布局:
MyProject/ res/ layout/ main.xml layout-large/ main.xml
layout的文件名必须完全相同,但是它们的内容是不同的,以便为相应的屏幕尺寸提供适合的UI。
在Java代码中引用布局的代码不变:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);}
系统根据APP运行的设备的屏幕尺寸,从相应的布局目录加载布局文件。有关Android如何选择适当资源的更多信息请见 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。
创建不同的Bitmaps
为了让APP在所有屏幕密度上都能显示出良好的图片质量,您应该提供适用low, medium, high and extra-high屏幕密度的位图资源。
您应该以矢量格式从原始资源开始,并使用以下尺寸比例为每个density生成这些图像:
• xhdpi: 2.0• hdpi: 1.5• mdpi: 1.0 (baseline)• ldpi: 0.75
这意味着如果您为xhdpi设备生成200x200的图片,则应为hdpi生成 150x150,为mdpi生成100x100,为ldpi生成75x75的相同图片资源。然后,将图片资源放在适当的drawable资源目录中:
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应用
- android如何处理不同屏幕的适配
- 【android】GridView如何适配不同屏幕
- Android GridView如何适配不同屏幕
- 如何让一个应用更好的适配不同分辨率的屏幕
- Android 适配不同的屏幕
- Android适配不同的屏幕
- Android适配不同的屏幕
- Android 适配不同的屏幕
- Android应用如何做屏幕适配
- ANDROID应用如何适配屏幕
- Android应用如何适配不同分辨率的手机
- Android应用如何适配不同分辨率的手机
- Android应用如何适配不同分辨率的手机
- Android应用如何适配不同分辨率的…
- Android平板上开发应用-关于精确适配不同的dpi和屏幕尺寸
- android开发如何更好的解决适配不同屏幕大小移动设备的问题
- 数据库解锁的sql
- C++中srand函数与rand函数产生一定范围内的随机数
- Android在自己的应用中启动第三方应用
- 数据库表空间不足
- C/C++ — 实现日期计算器
- Android应用如何适配不同的屏幕
- hashCode()函数详解
- NSOperation浅析
- MYSQL
- 模态框回车搜索的实现
- Linux C多线程
- 判断二进制数除以3的余数
- ffmpeg录制屏幕,生成MP4视频文件开发过程
- iOS中的runtime源码简要分析(一)