Android布局之屏幕自适应

原创 2012年03月27日 20:03:34

      Android布局之屏幕自适应

         在做应用时发现程序没有屏幕自适应功能,变换手机使用之后,界面就很混乱了,字体也很奇怪。经过百度的帮助,找到自适应方法。

1          字体的自适应

这里又有关于Android下表示大小的单位的相关知识。

下面列出几种表示单位:

1.1     dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGAHVGAQVGA WVGA=800x480HVGA=480x320, QVGA=320x240)推荐使用这个,不依赖像素。

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

1.3    pt: point,是一个标准的长度单位,1pt1/72英寸,用于印刷业,非常简单易用;

1.4    sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。可以根据用户的字体大小首选项进行缩放

根据上面对单位的分析,使用sp为单位就可以实现自适应字体大小啦。亲测,比较好用。

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

   另外,值得提醒的是,记得在你默认的values文件下的dimens.xml文件中也要写上相应的字体大小哦,因为当系统无法认识你手机屏幕大小的时候,它会自动去找你默认文件中的东西,没有写的话程序会崩溃。

 

2          布局自适应

下面的介绍,就是今天让我几度抓狂的东西。

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

2.1         不同的layout

       Android手机屏幕大小不一,有480x320,640x360, 800x480,854x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。 但是需要注意的是根据分辨率添加layout文件时,layout这个原来的文件夹及资源一定要存在,否则会出现错误。同时在命名layout文件夹时,必须遵守这样的规则.layout-640x360 大数放在小数的前面,否则会报错。下图为需要定义的文件夹和文件:

drawable-hdpidrawable-mdpidrawable-ldpi的区别: 

(1)drawable-hdpi里面存放高分辨率的图片,WVGA (480x800),FWVGA (480x854) 

(2)drawable-mdpi里面存放中等分辨率的图片,HVGA (320x480) 

(3)drawable-ldpi里面存放低分辨率的图片,QVGA (240x320) 

备注:三者的解析度不一样,就像你把电脑的分辨率调低,图片会变大一样,反之分辨率高,图片缩小。

2.2         利用weight属性

保证页面的布局随着屏幕的大小变化而变化,最好使用相对布局方式,少使用绝对赋值。

将你控件的layout中的width、height设置为fill-parent,不要使用wrap——content。因为wrap-content的大小是不固定的。而weight(权重)这个属性很好的解决了这个问题。当包裹在控件外面的Layout的width、height属性都设置为fill-parent时,可以利用weight的反比特性。即如果控件A设置weight为9,控件B设置weight为20,那么A所占的空间为20/(9+20),B所占的空间为9/(9+20)。这样的反比属性对任何分辨率下的手机都是合适的。

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

2.3         在程序中制定

获得屏幕的大小,在程序中设置height和width属性。

//得到屏幕的高度

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

textview.setHeight((int)( heigh /14);

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

以上各种总结可能会有错误,以后发现会积极改正。经过一天乱七八糟的抓狂编程,觉得自己还是没有细细的去研究这些要点,而且使用非常死板,没有灵活运用API。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

4种必须知道的Android屏幕自适应解决方案

以下是Demo首页的预览图 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTI...

4种必须知道的Android屏幕自适应解决方案

 以下是Demo首页的预览图 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZ...

4种必须知道的Android屏幕自适应解决方案

以下是Demo首页的预览图 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTI...

Android 之UI自适应解决方案

1.概况        作为Android开发人员,最头疼的莫过于让自己开发的程序在不同终端上面的显示效果看起来尽量一致(当然,如果要充分利用大屏幕的优势另当别论)。在全球范围内来讲,android有...

android自定义View(2):实现百分比自适应布局

android界面适配的难是历史原因,我们只能想办法解决。github上面已有一些布局自适应的解决方案,今天我分享的是自定义控件:RelativieLayout自适应百分比宽高。实现的原理其实很简单,...

Android 百分比布局库(percent-support-lib) 解析与扩展

Google终于开始支持百分比的方式布局了,瞬间脉动回来,啊咧咧。对于这种历史性的时刻,不出篇博客难以表达我内心的激动。,本文分为3个部分: PercentRelativeLayout、Percent...

Android布局:两边控件长度固定,中间控件长度自适应

完成如图的效果,线性横向布局,包括三个空间,从左往右以此是TextView,EditText,Button三个控件,左右两边的控件长度是wrap_content,要让中间那个EditText控件自适应...

android更改桌面icon容纳个数以及布局大小

在android应用开发过程中,经常需要更改桌面workspace所能摆放程序快捷方式的个数,修改如下: diff --git a/packages/apps/Launcher2/res/value...

Android自适应屏幕大小和layout布局

一:不同的layout  Android手机屏幕大小不一,有480x320, 640x360, 800x480,854x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res...

Android自适应不同分辨率或不同屏幕大小的layout布局(横屏|竖屏)

一:不同的layout Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢?    其实很简单,只需要在res目录下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)