delphi xe6 破解补丁开发手机程序怎么自适应各种不同屏幕大小的手机

您的位置:
本文网址:
栏目分类??????????????????????????????????特别关注热门排行推荐信息没有资料相关信息
页面执行时间0.5938秒 查询数据库36次客户端设计:针对不同的屏幕大小如何设计_界面设计_前端技术
您的位置: &
& 详细内容
文章描述:客户端交互设计适配之――屏幕大小.
随着各个手机操作系统的应用平台的上线,几乎所有的互联网应用都在往手机上迁移。然而手机与PC 不一样,PC经过了多年的发展,在设计上形成了很多不成文的规则,如网页的宽度都在960px左右【当然,由于整体的电脑屏幕往大尺寸及高分辨发展,除了背景宽屏自适应外,不少网页也正朝着更宽的方向上发展】。当前的手机种类繁多,手机屏幕的大小、比例各异,并且手机的屏幕本身就小,因此既要考虑应用在不同屏幕大小上的适配,又要保持其一致性,同时还要提高每个手机屏幕的使用效率,这就存在着很多的矛盾点。
在客户端的设计过程中,针对不同的屏幕大小,应该如何来设计?是否每个大小的屏幕尺寸都需要一个新的界面布局,还是所有的屏幕尺寸都使用相同的界面布局?我们将在下面的内容中来探讨这些内容。
一、当前热门手机的屏幕大小&
下图中,我抽取了国内某个网络电器城某周的10大畅销手机排名:
虽然只是2010年中的某一周的手机销售量排名,由此可以看出,当前使用中的手机屏幕差异很大,各种屏幕大小和分辨率都有。如果为了适配更多的用户群体,则需要考虑的手机屏幕大小和分辨率更多。【不过,根据当前的手机发展趋势,及手机客户端的使用行为可以看出,最主要需要用户关注的手机屏幕是2.4家陨希240*320以上的手机屏幕,因为这样的手机使用客户端的频率和用户量都会更多。个人建议更多地是考虑320*480及以上的屏幕。】
二、屏幕大小正确理解
说起屏幕大小的时候,会有两种表达方式,1) &我的屏幕2.4迹愕钠聊3.5肌& 2)&这个屏幕分辨率 240*320,那个屏幕分辨率为320*480。&但在设计过程中,屏幕的分辨率和屏幕的实际尺寸必须同时考虑。
这里首先有几个概念需要再澄清一下:
屏幕物理尺寸:屏幕对角线长的实际尺寸,如2.4迹3.5嫉鹊
屏幕分辨率:屏幕所能显示像素的多少。如,240*320等。
屏幕密度(pixel per inch):以每英寸的像素数。每英寸的分辨率数,如160ppi。
物理尺寸决定了屏幕的实际尺寸,而分辨率可以表示屏幕上可以呈现的像素点数,屏幕密度决定了屏幕的精细程度。相同的屏幕大小,如果分辨率高,则屏幕元素更精细。一个界面元素在屏幕里的实际尺寸却是与屏幕密度相关,屏幕密度较小的屏上,界面元素的实际尺寸就会大些,反之亦然。
&在进行手机界面布局中,除了元素的像素值外,考虑元素的实际尺寸也非常重要,甚至更为重要(人眼是要靠物体成像在视网膜上的视角大小来进行识别感知,视角是与物体实际大小和距离有关)。
&&&&&&&&&&
在不同屏幕中,不同的图标点阵或者不同的字体及大小的汉字,在人的主观感知上,会有一个最优的结果值。在设计的过程中,我们需要根据这个最优值来进行界面的布局及设计。
也可以看出,这个用户感知最优的取值也与使用手机的人群有关(如年龄大的用户需要物理尺寸更大的界面元素)。
1.确定目标的屏幕大小
屏幕大小由宽度和高度两个因素决定,但是在布局手机客户端的过程中,最关心的是宽度值。宽度确定后,高度可以由滚动或者翻页来显示所有内容;文字可以在适当的位置折行;标题栏可以伸缩适配屏幕宽度等等。但并不是不考虑高度,图标、文字、特殊的组件不仅需要考虑宽度,也需要考虑整个屏幕的布局是否与之适配。
由于不可能对所有的客户端进行单独的开发,因此,需要对手机屏幕的大小的归类。同时,在设计中也不会真的只考虑屏幕大小一个因素,屏幕大小和操作系统、手机类型等还是存在很大的相关性的。
首先,我们先来定义一下手机的屏幕大小的归类档次:
A. 小屏幕:宽度240 px 以下屏幕或者2.4 以下屏幕
一般以非智能机为主,归在这个分类中的手机屏幕,一般是以java版本的客户端为主。
B. 中等屏幕:宽度240~320 px,或者2.4~3.0计聊
智能手机以Symbian或S60 v1,2,3,Windows mobile为主流;或者是非智能手机的客户端以java版本为主。
同时包括240*320的宽屏手机。
C. 大屏幕:宽度320 px以上屏幕或者 3.0家陨系钠聊
&iPhone 手机只有两个版本的适配,屏幕物理尺寸保持一致;
Android 系统手机及衍生平台手机
Win phone 7 系统手机
Nokia S60 v5,symbian 3等
D. 平板屏幕:7技耙陨系钠聊弧究梢圆话谑只校^_^】
由于当前的平板电脑上的应用的开发都是基于手机应用的功能,但是,平板的屏幕物理尺寸大增,使用情景也和手机不一致,在设计上有很多的特殊性,可发挥空间也更大,因此个人建议单独的设计。
其次,根据我们的产品战略,来确定待开发产品的用户群体来确定一款目标手机屏幕。由于对于某个业务的手机客户端都不会只推出其中的某一款(除非是战略上的用户群确定为使用某种手机的特殊业务),而是会对不同的手机平台分别进行适配。因此,确定的目标手机屏幕,应该是在该档次中最主流的手机屏幕大小,在以此为基准向上或向下来适配其他的同档手机。
2.适配原则
1)& 客户端的logo,在各个手机上都应该清晰地显示
2)& 标题或者底部栏必须100%的与手机宽度适配
3)& 文字内容如果显示不下的话,可以自动适配宽度进行折行
4)& 图片可以根据宽度进行自动缩放,屏幕宽度超过图片本身时,显示图片本身的大小
5)& 适配过程中,界面的元素的宽高最小值应该符合用户的主观舒适范围值。
6)& 不能完全使用分辨率的绝对比例来对界面布局进行缩放;
3. 适配思路分析
根据我们前面的分析,
C类大屏幕大小主要以Android、iPhone、win phone 7 和Nokia V5等手机为主,它们都是触屏手机,在适配上可以划为一个档次。
B类中等屏幕大小智能机主要以Symbian 和Windows mobile为主,因此在适配这两个平台时,主要集中在B类屏幕间的适配。
B类中等屏幕大小还有一块是非智能手机,使用Java客户端,同时,A类小屏幕大小主要使用Java客户端,因此,Java类客户端需要适配的范围更广,至少应包括B类和A类的屏幕大小。
(1)Android 与iPhone手机的适配
iPhone 本身就只有两个分辨率及一个屏幕大小尺寸,可以很好的来适配(最多出两套图片即可,系统会自动读取)。
对于android,由于其开放性,导致了各种屏幕的大小及分辨率都有。但Android系统有一个很好的特性,系统会根据屏幕的分辨率密度来进行自适应。但是,当密度差异较大时,自适应后,图标会由于拉伸变得模糊影响效果。这时,必须要通过重新设计新的图标或者加大间距来保持最佳的视觉效果及更便利于用户操作。
Android 手机屏根据屏幕的分辨率密度和物理尺寸,可以分为以下几类:
&注:图中的【】内的值为手机所占的百分比值。Android 开发平台数据,不一定准
Android 提供了如下的机制来对不同大小和密度的屏幕进行适配:
1)& 图片资源的缩放
基于当前屏幕的密度,平台自动加载任何未经缩放的限定尺寸和密度的图片。如果图片不匹配,平台会加载默认资源并且在放大或者缩小之后可以满足当前界面的显示要求。如果没有多套资源,平台会认为默认的资源是中密度的屏幕资源(160dpi)。例如,当前为高密度屏幕,平台会加载高密度资源(如图片),如果没有,平台会将中密度资源缩放至高密度。
2)& 根据分辨率和坐标自动缩放(密度不同的屏幕适配)
如果程序不支持多种密度屏幕,平台会自动缩放绝对像素坐标值和尺寸值等,这样就能保证屏幕元素能和密度160的屏幕上一样能显示出同样物理尺寸的效果。平台会根据密度的比例来缩放实际尺寸的大小。
3)& 兼容更大的屏幕大小(屏幕不同的适配)
当前屏幕超过程序所支持屏幕的上限时,定义supports-screens元素,这样超出显示的基准线时,平台会以屏幕大小的比例来缩放整个屏幕。
由上表格也可知,当前的Android手机主要集中在标准屏的中密度和高密度两个型号上。因此在设计中,主要是设计其中的一种为主,再去适配另一个型号即可。对于在一个档次上的手机,都会根据上述的三个原则,系统自动去适配。个人认为,在进行Android手机设计时,如果只准备一套资源时,应该以高密度的版本为主,这样去适配中密度时,效果更好。
当然,如果屏幕的密度差异较大时,自动适配的效果肯定不会,如果要取得更好的适配效果,必须针对几个不同的屏幕密度进行单独设计屏幕元素,提高视觉满意度。
(2)非Android、iphone的手机适配
对于其他的非Android、iphone手机,则需要更多地考虑其适配规则,这些手机系统不提供自适应的适配。
简单整理规则如下:
1)& 向上适配(标准屏向更大【分辨率高,物理尺寸大】的屏幕适配)
在向更大的屏幕适配时,根据设备分辨率的不同,会分为两种状态。
A.如果两者的屏幕分辨率密度(dip)差不多,物理尺寸更大的屏幕。那可以直接在当前尺寸上拉长、拉宽即可,图标、行距都可以保持不变。
B. 如果屏幕密度要大很多,物理尺寸差不多的。则适配点包括:
设计多套图标,需要有更大分辨率的图标
使用不同的字体,需要更大的字体来适配大设备分辨率的屏幕
增加行间距
自适应放大内容中的图片
Tab页签 需要根据屏幕的大小来确认每屏最多显示的数目。
&考虑一些复杂界面,增大界面中的一些元素的分辨率,会导致许多东西需要重新设计。这种情况需要重新设计该界面。
2)& 向下适配
在向更小的屏幕适配,这种情况较少,那会集中在如下几点:
考虑一些极限点的改进,需要适配到小屏幕的手机中,如标题的最大字数等。
title、bottom栏与小屏幕宽度适配。
考虑到行高(行信息展示)的设计是否适合更小的屏幕高度。
在结构上,需要考虑在小屏幕中,显示是否合适。
根据屏幕密度的比例来设计屏幕元素,需要更小分辨率的屏幕元素
使用小的字体,具体的大小需要根据屏幕的大小来设定。
(3)竖屏横屏适配
横竖屏的适配,在本文中,不过多讨论,这里只是简单的整理一下,我自己的理解。
对于不同功能的应用,都有其特定的页面展现形式,个人并不赞同蛮目对任何应用不加选择的都去适配横屏。
个人观点如下:
1)& 不同的应用,在设计的过程中,对于选择不同的屏幕有不同的选择,如普通list多的应用,竖屏更合适;显示图片更多的界面,或者想更好的展示全景的应用,横屏更合适。
2)& 不必遵循,对任何的应用都可以自动进行横屏竖屏的切换。如果觉得没有必要横屏或者竖屏的应用,就可以不切换。
3)& 由于用户在使用手机的过程中,经常会无意中调整位置,从而导致手机误认为是要进行横竖屏的转化,从而更容易导致操作上的失误,引起用户的反感。
4)& 横竖屏的切换时,允许用户对于同一个界面有不同的展示方式。例如不一定在竖屏时时list方式显示,在横屏时也和竖屏保持一致,这时横屏可以有更好的适应横屏的展示方式,使用户更好的操作。
由于手机系统各异,手机的屏幕尺寸五花八门,屏幕的性能也呈现多样性,还有触摸屏和非触屏的区分,这四个变量结合起来,会有无数种不同的情况,如何能使你的应用完美地展现给用户,适配固然很重要。但是,更重要的是你要在适配之前,确定应用的目标群体。如果你的应用主要是针对高端手机用户的,那你何必去考虑低端的手机呢?毕竟为了很少的用户,使你花了很大的力气,可能会有不值得,这一点绝对值得每一个设计师思考。
===========
&&&&&& 题外话
一般来说,我们在设计一个产品时,首先需要确定产品的用户群体,然后基于用户群体来设计针对该用户群特点和使用行为的界面。但是对于手机客户端,感觉这个过程不能完全适用:
原因是因为,我的客户端设计主要是针对不同的手机平台(Android、ios,Win Phone 7,Palm Pre,Symbian&)来开发的,因此,开发出来的客户端适用于所有的持有该手机的用户。但是这些手机持有者是否都有相同的特质,是否都喜爱使用该客户端,是个很大的未知数。另一方面,如果我在建立用户群时,完全根据用户的需求、使用行为又或者人种学特征来分类,那每一群人中持有的手机各不相同,那又该如何定义每个不同平台下的客户端的功能呢?
当然,有人也会说那就先了解不同的手机平台的用户群特征,然后再研究这群人对本客户端应用的需求和使用行为,以此再来设计客户端,目前来说这是更好的研究思路。
总之,这样深入的讨论,会发现客户端会越想越复杂,有人说手机客户端的设计是最复杂的,是很有道理的,值得大家更多地探讨&
( 04:07:59)
( 14:22:25)
( 11:28:51)
( 17:21:00)
( 19:18:00)
相关排行总榜DELPHI7的程序如何实现在不同分辨率下让窗口自适应不同的屏幕分辨率?
[问题点数:100分,结帖人F]
DELPHI7的程序如何实现在不同分辨率下让窗口自适应不同的屏幕分辨率?
[问题点数:100分,结帖人F]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年4月 Delphi大版内专家分月排行榜第三2014年3月 Delphi大版内专家分月排行榜第三2013年5月 Delphi大版内专家分月排行榜第三2013年1月 Delphi大版内专家分月排行榜第三2010年11月 Delphi大版内专家分月排行榜第三2009年12月 Delphi大版内专家分月排行榜第三2009年11月 Delphi大版内专家分月排行榜第三
2011年4月 Delphi大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。android应用自适应多分辨率的解决方法&1. 首先是建立多个layout文件夹(drawable也一样)。在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等。需要适应那种分辨率就写成什么。注意:& && && &a.& &较大的数字要写在前面:比如layout-854x480而不能写layout-480x854.& && && &b.& &两个数字之前是小写字母x,而不是乘号。2. 在不能的layout下调整layout 的长宽等各种设置。以适应不同的分辨率。3 最后需要在AndroidManifest.xml里面添加下面一段,没有这一段自适应就不能实现:
&/application&
&supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:anyDensity = "true"/&
&/manifest&
在&/application&标签和&/manifest& 标签之间添加上面那段代码。即可
======================================================android 应用程序自适应屏幕大小和layout 的布局一:不同的layout&Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢?&& &其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。&二:hdpi、mdpi、ldpi&在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。&  drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:&  (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)&  (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)&  (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)&  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。更正:应该是对应不同density 的图片& &&&  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。&备注:三者的解析度不一样,就像你把电脑的分辨率调低,图片会变大一样,反之分辨率高,图片缩小。屏幕方向:&横屏竖屏自动切换:&& &&&可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。&不同分辨率横屏竖屏自动切换:&以800x600为例&可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录&不切换:&以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。&还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。&要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:&&&在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation="landscape"。&例如(landscape是横向,portrait是纵向):
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.ray.linkit"
android:versionCode="1"
android:versionName="1.0"&
&application android:icon="@drawable/icon" android:label="@string/app_name"&
&activity android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait"&
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
&activity android:name=".GamePlay"
android:screenOrientation="portrait"&&/activity&
&activity android:name=".OptionView"
android:screenOrientation="portrait"&&/activity&
&/application&
&uses-sdk android:minSdkVersion="3" /&
&/manifest&
另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!&有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。&而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配 置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的 onConfigurationChanged方法。实现方式如下,不需要做太多的内容:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (this.getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_PORTRAIT) {
// port do nothing is ok
写一个支持多分辨的程序,基于1.6开发的,建立了三个资源文件夹drawable-hdpi drawable-mdpi drawable-ldpi,里面分别存放72*72 48*48 36*36的icon图标文件。当我在G1(1.5的系统)上测试时,图标应该自适应为48*48才对啊,但实际显示的是36*36。怎么才能让其自适应 48*48的icon图标呢?解决办法: drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹
阅读(...) 评论()Android官方提供的支持不同屏幕大小的全部方法
本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法:
让你的布局能充分的自适应屏幕
根据屏幕的配置来加载合适的UI布局
确保正确的布局应用在正确的设备屏幕上
提供可以根据屏幕大小自动伸缩的图片
使用 &wrap_content& 和 &match_parent&
&为了确保你的布局能够自适应各种不同屏幕大小,你应该在布局的视图中使用&wrap_content&和&match_parent&来确定它的宽和高。如果你使用了&wrap_content&,相应视图的宽和高就会被设定成刚好能够包含视图中内容的最小值。而如果你使用了&match_parent&(在Android API 8之前叫作&fill_parent&),就会让视图的宽和高延伸至充满整个父布局。
通过使用&wrap_content&和&match_parent&来替代硬编码的方式定义视图大小,你的视图要么仅仅使用了需要的那边一点空间,要么就会充满所有可用的空间。例如:
[] &LinearLayout xmlns:android=&/apk/res/android&&
&&& android:orientation=&vertical&&
&&& android:layout_width=&match_parent&&
&&& android:layout_height=&match_parent&&&
&&& &LinearLayout android:layout_width=&match_parent&&&
&&&&&&&&&&&&&&&&& android:id=&@+id/linearLayout1&&&&
&&&&&&&&&&&&&&&&& android:gravity=&center&&
&&&&&&&&&&&&&&&&& android:layout_height=&50dp&&&
&&&&&&& &ImageView android:id=&@+id/imageView1&&&
&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&&
&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&&
&&&&&&&&&&&&&&&&&& android:src=&@drawable/logo&&
&&&&&&&&&&&&&&&&&& android:paddingRight=&30dp&&
&&&&&&&&&&&&&&&&&& android:layout_gravity=&left&&
&&&&&&&&&&&&&&&&&& android:layout_weight=&0& /&&
&&&&&&& &View android:layout_height=&wrap_content&&&
&&&&&&&&&&&&& android:id=&@+id/view1&&
&&&&&&&&&&&&& android:layout_width=&wrap_content&&
&&&&&&&&&&&&& android:layout_weight=&1& /&&
&&&&&&& &Button android:id=&@+id/categorybutton&&
&&&&&&&&&&&&&&& android:background=&@drawable/button_bg&&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&&
&&&&&&&&&&&&&&& android:layout_weight=&0&&
&&&&&&&&&&&&&&& android:layout_width=&120dp&&
&&&&&&&&&&&&&&& style=&@style/CategoryButtonStyle&/&&
&&& &/LinearLayout&&
&&& &fragment android:id=&@+id/headlines&&&
&&&&&&&&&&&&& android:layout_height=&fill_parent&&
&&&&&&&&&&&&& android:name=&com.example.android.newsreader.HeadlinesFragment&&
&&&&&&&&&&&&& android:layout_width=&match_parent& /&&
&/LinearLayout&&
&LinearLayout xmlns:android=&/apk/res/android&
&&& android:orientation=&vertical&
&&& android:layout_width=&match_parent&
&&& android:layout_height=&match_parent&&
&&& &LinearLayout android:layout_width=&match_parent&
&&&&&&&&&&&&&&&&& android:id=&@+id/linearLayout1&&
&&&&&&&&&&&&&&&&& android:gravity=&center&
&&&&&&&&&&&&&&&&& android:layout_height=&50dp&&
&&&&&&& &ImageView android:id=&@+id/imageView1&
&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&& android:src=&@drawable/logo&
&&&&&&&&&&&&&&&&&& android:paddingRight=&30dp&
&&&&&&&&&&&&&&&&&& android:layout_gravity=&left&
&&&&&&&&&&&&&&&&&& android:layout_weight=&0& /&
&&&&&&& &View android:layout_height=&wrap_content&
&&&&&&&&&&&&& android:id=&@+id/view1&
&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&& android:layout_weight=&1& /&
&&&&&&& &Button android:id=&@+id/categorybutton&
&&&&&&&&&&&&&&& android:background=&@drawable/button_bg&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&0&
&&&&&&&&&&&&&&& android:layout_width=&120dp&
&&&&&&&&&&&&&&& style=&@style/CategoryButtonStyle&/&
&&& &/LinearLayout&
&&& &fragment android:id=&@+id/headlines&
&&&&&&&&&&&&& android:layout_height=&fill_parent&
&&&&&&&&&&&&& android:name=&com.example.android.newsreader.HeadlinesFragment&
&&&&&&&&&&&&& android:layout_width=&match_parent& /&
&/LinearLayout&注意上面的例子中是如何使用&wrap_content&和&match_parent&来给控件定义宽高的,这让整个布局可以正确地适应不同屏幕的大小,甚至是横屏。
下图是这个布局分别在竖屏和横屏时显示的结果,注意控件的宽和高是根据屏幕自适应的。
使用RelativeLayout
通过多层嵌套LinearLayout和组合使用&wrap_content&和&match_parent&已经可以构建出足够复杂的布局。但是LinearLayout无法允许你准确地控制子视图之前的位置关系,所有LinearLayout中的子视图只能简单的一个挨着一个地排列。如果你需要让子视图能够有更多的排列方式,而不是简单地排成一行或一列,使用RelativeLayout将会是更好的解决方案。RelativeLayout允许布局的子控件之间使用相对定位的方式控制控件的位置,比如你可以让一个子视图居屏幕左侧对齐,让另一个子视图居屏幕右侧对齐。
&?xml version=&1.0& encoding=&utf-8&?&&
&RelativeLayout xmlns:android=&/apk/res/android&&
&&& android:layout_width=&match_parent&&
&&& android:layout_height=&match_parent&&&
&&& &TextView&
&&&&&&& android:id=&@+id/label&&
&&&&&&& android:layout_width=&match_parent&&
&&&&&&& android:layout_height=&wrap_content&&
&&&&&&& android:text=&Type here:&/&&
&&& &EditText&
&&&&&&& android:id=&@+id/entry&&
&&&&&&& android:layout_width=&match_parent&&
&&&&&&& android:layout_height=&wrap_content&&
&&&&&&& android:layout_below=&@id/label&/&&
&&& &Button&
&&&&&&& android:id=&@+id/ok&&
&&&&&&& android:layout_width=&wrap_content&&
&&&&&&& android:layout_height=&wrap_content&&
&&&&&&& android:layout_below=&@id/entry&&
&&&&&&& android:layout_alignParentRight=&true&&
&&&&&&& android:layout_marginLeft=&10dp&&
&&&&&&& android:text=&OK& /&&
&&& &Button&
&&&&&&& android:layout_width=&wrap_content&&
&&&&&&& android:layout_height=&wrap_content&&
&&&&&&& android:layout_toLeftOf=&@id/ok&&
&&&&&&& android:layout_alignTop=&@id/ok&&
&&&&&&& android:text=&Cancel& /&&
&/RelativeLayout&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 delphi xe6 视频教程 的文章

 

随机推荐