Android 屏幕的适配方法

来源:互联网 发布:三国志11兵种数据 编辑:程序博客网 时间:2024/04/29 14:45

相关概念介绍:

屏幕尺寸:指屏幕的对角线的长度,单位是英寸,1英寸 = 2.54厘米。
屏幕分辨率:屏幕分辨率是指在横纵向上的像素点数,单位是px,1px = 1个像素点。一般以纵向像素*横向像素。
屏幕像素密度:指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大。
dp、dip、dpi、sp、px

  • px
    我们应该是比较熟悉的,前面的分辨率就是用的像素为单位,大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。
  • dp = dip dip是Density independent
    pixel的缩写,也就是独立的像素密度的意思,与密度无关,在Android中,规定以160dpi为基准,1dp=1px,如果密度是320dpi,则1dip=2px,以此类推。
  • dpi 屏幕像素密度,dp与px的转换以此为参考。
  • sp 如果设置字体的大小,需要用sp,sp除了与密度无关,还与scale无关,使用sp,系统会根据屏幕密度的变化自动进行转换。

mdpi、hdpi、xdpi、xxdpi

mdpi、hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。

Google官方指定按照下列标准进行区分:

名称 像素密度范围 mdpi 120dpi~160dpi hdpi 160dpi~240dpi xdpi 240dpi~320dpi xxdpi 320dpi~480dpi xxxdpi 480dpi~640dpi

解决方案:

  • 多使用wrap_content,和match_parent
  • weight是线性布局的一个独特的属性,我们可以使用这个属性来按照比例对界面进行分配,完成一些特殊的需求。
  • 复杂的情况下使用RelativeLayout
  • 使用限定符,使程序在不同的尺寸下显示不同的内容。res/layout/main.xml,单面板(默认)布局: res/layout-large/main.xml,双面板布局:
  • 使用最小宽度限定符,最小宽度限定符可让您通过指定某个最小宽度(以 dp 为单位)来定位屏幕。例如,标准 7 英寸平板电脑的最小宽度为 600 dp,因此如果您要在此类屏幕上的用户界面中使用双面板(但在较小的屏幕上只显示列表),您可以使用上文中所述的单面板和双面板这两种布局,但您应使用 sw600dp 指明双面板布局仅适用于最小宽度为 600 dp 的屏幕,而不是使用 large 尺寸限定符(适用于Android3.2以及更高版本)。
  • 使用布局别名。
  • 使用屏幕方向限定符号。
  • 使用自动拉伸位图,.9图
  • 使用非密度制约像素,使用dp和sp
0 0