您的位置首页>硬件>

Android屏幕的布局与字体自适应

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Android屏幕的布局与字体自适应问题。做应用的时候发现程序没有屏幕自适应功能。换

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Android屏幕的布局与字体自适应问题。

做应用的时候发现程序没有屏幕自适应功能。换了手机使用后,界面很混乱,字体也很奇怪。借助百度,我找到了一个自适应的方法。

1字体自适应。

这里有一些关于安卓系统下尺寸单位的知识。

下面列出了几个表达单位:

1.1 dip :器件独立像素。不同的设备有不同的显示效果,这与设备的硬件有关。一般来说,我们建议使用这个来支持WVGA、HVGA和QVGA (WVGA=800x480,HVGA=480x320,QVGA=320x240),这与像素无关。

1.2px:像素(像素)。不同的设备具有相同的显示效果。一般我们的HVGA代表320x480像素,用的比较多。

1.3pt:点是标准长度单位,1pt=1/72英寸,用于印刷行业,非常简单易用;

1.4sp:缩放像素。它主要用于字体显示,最适合文本大小。您可以根据用户的字体大小偏好进行缩放。

根据以上对单元的分析,使用sp作为单元可以实现自适应字体大小。亲测,很好用。

在res文件夹中创建一个名为values-320x240的文件夹。其中,320x240是你手机屏幕的分辨率,根据你手机屏幕的情况命名不同,比如values-800x480。在这个文件夹下创建一个dimens.xml文件来定义各种字体的大小。然后系统会根据你手机屏幕的分辨率自动调用响应文件夹。

另外,值得提醒的是,记得在你的默认值文件下的dimens.xml文件中写下相应的字体大小,因为当系统无法知道你手机屏幕的大小时,它会自动在你的默认文件中查找一些东西,否则程序会崩溃。

2布局自适应。

下面的介绍就是今天让我好几次抓狂的地方。

首先介绍百度告知的几种自适应方法:

2.1不同布局。

安卓手机有不同的屏幕尺寸,包括480x320、640x360、800x480和854x480。App如何自动适应不同屏幕?其实很简单,只需要在res目录下创建不同的布局文件夹,比如layout-640x360和layout-800x480。所有的布局文件将在编译后写入R.java,系统将根据屏幕大小选择合适的布局使用。但是需要注意的是,根据分辨率添加布局文件时,布局的原始文件夹和资源必须存在,否则会出现错误。同时,在命名布局文件夹时,必须遵守这样的规则。大量的布局-640x360应该放在小数点前面,否则会报告错误。下图显示了要定义的文件夹和文件:

可绘制hdpi、可绘制mdpi和可绘制ldpi之间的区别:

(1)可绘制-hdpi存储高分辨率图片,如wvga (480x800)和fwvga (480x854)。

(2)可绘制的mdpi包含中等分辨率的图片,例如HVGA (320x480)。

(3)3)可绘制-ldpi包含低分辨率图片,如QVGA (240x320)。

注意:三者的分辨率是不同的,就像你降低电脑的分辨率,图片会变大,反之分辨率越高,图片会变小。

2.2使用权重属性。

为了确保页面的布局随着屏幕的大小而变化,最好使用相对布局模式,并且使用较少的绝对分配。

将控件布局中的宽度和高度设置为填充父级,不要使用wrap——content。因为包装内容的大小不是固定的。权重的属性很好地解决了这个问题。当包装在控件外部的布局的宽度和高度属性设置为填充父级时,可以使用权重的反比。也就是说,如果控件a将权重设置为9,控件b将权重设置为20,那么a占用的空间是20/(920),b占用的空间是9/(920)。这个反比属性适用于任何分辨率的手机。

虽然这种方法解决了自适应的问题,但是当我在使用时发现需要使用wrap_content属性时,就会出现布局无法填充的现象。(可能是我的布局有问题。).

2.3在程序中制定。

获取屏幕大小,并在程序中设置高度和宽度属性。

//获取屏幕的高度。

Int heigh=(Activity)m_context)。getWindowManager()。getDefaultDisplay()。getHeight();

text view . set height((int)(heigh/14);

这个方法感觉不太适合复杂的布局,但是在我写应用的时候就够了~

以上总结可能存在错误,今后将积极改正。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。