issues
search
fWX228941
/
document
document descripe my groun-up
0
stars
0
forks
source link
屏幕适配
#13
Open
fWX228941
opened
5 years ago
fWX228941
commented
5 years ago
如果你使用了wrap_content,view的宽和高会被设置为该view所包含的内容的大小值。如果是match_parent(在API 8之前是fill_parent)则会匹配该组件的父控件的大小
通过使用wrap_content和match_parent尺寸值代替硬编码的尺寸
LinearLayout却不允许你精准的控制它子view的关系,子view在LinearLayout中只能简单一个接一个的排成行。如果你需要你的子view不只是简简单单的排成行的排列,更好的方法是使用RelativeLayout,它允许你指定你布局中控件与控件之间的关系
使用尺寸限定词,以此来告诉系统根据屏幕选择对应的布局文件,它们都能通过拉伸或者填充控件来适应不同的屏幕,但是它们却不能为每个不同屏幕尺寸提供最好的用户体验。因此,你的应用不应该只是实现灵活的布局,同时也应该为不同的屏幕配置提供几种不同的布局方式。你可以通过配置限定(configuration qualifiers)来做这件事情,它能在运行时根据你当前设备的配置(比如不同的屏幕尺寸设计了不同的布局)来选择合适的布局资源
使用最小宽度限定词,最小宽度限定词允许你根据设备的最小宽度(dp单位)来指定不同布局。比如,传统的7寸平板最小宽度为600dp【layout-sw600dp】
这样意味着当你的设备的最小宽度等于600dp或者更大时,系统选择layout-sw600dp/main.xml(两个窗格)的布局,而小一点的屏幕则会选择layout/main.xml(单个窗格)的布局。 然而,在3.2之前的设备上,这样做并不是很好的选择。因为3.2之前还没有将sw600dp作为一个限定词出现,所以,你还是需要使用large限定词来做。因此,你还是应该要有一个布局文件名为res/layout-large/main.xml,和res/layout-sw600dp/main.xml一样。在下一节中,你将学到如何避免像这样出现重复的布局文件。【不同的版本定义了不同的限定词】
图片也要兼容不同的屏幕尺寸,点9图片,这是一种能够指定哪些区域能够或者不能够拉伸的特殊png文件
sdk中的draw9patch程序(位于tools/directory目录下)来画点9图片。通过沿左侧和顶部边框绘制像素来标记应该被拉伸的区域。也可以通过沿右侧和底部边界绘制像素来标记
设计布局时,要避免使用绝对像素(absolutepixels)定义距离和尺寸。使用像素单位来定义布局大小是有问题的。因为,不同的屏幕有不同的像素密度,所以,同样单位的像素在不同的设备上会有不同的物理尺寸。因此,在指定单位的时候,通常使用dp或者sp
系统会自动根据当前设备屏幕密度自动去选择合适的资源进行加载:针对不同的设备密度提供不同的bitmap资源:小屏幕(low),medium(中),high(高)以及超高(extra-high)密度。这将能帮助你在所有的屏幕密度中得到非常好的图形质量和性能