相对布局与绝对布局的的意义与用法
技术论坛
发表于 主页 > 技术论坛

  相对布局与绝对布局的的意义与用法我使用duilib快3个月了,总体感觉duilib的使用还是较为简单的,只是刚入门时可能有些摸不清头脑。今天写一篇关于duilib的入门日志,大致说一下duilib中的各个布局的作用,以及很关键的相对布局与绝对布局的意义与用法。希望可以帮到使用duilib的新手朋友们。duilib高手就可以直接省略这篇文章了!我刚使用duilib的时候非常依赖duilib自带的设计器,用他可以拖拉控件,可视化的做出自己想要的界面。可是用一段时间就会发现原带的设计器有很多bug,时不时会崩溃,支持的控件数量有限,属性数量也有限,导出的代码冗余。当时问了几个高手,大家建议不要使用设计器而应该自己手写xml代码。起初手写时感觉特别麻烦,可是用几天后你会发现手写要比使用设计器好得多:你可以更加了解duilib,熟悉每个控件的各个属性,对控件的控制也更加方便。而如果想称心如意的脱离设计器去编写xml文件,有非常有必要弄明白各个布局的用法和布局技巧。追剧爷爷都是从孙子走过来的在美华人反歧视纪录片入围奥斯卡!我现在可以完全靠手写xml来做出一个程序的界面,相信用了一段duilib的朋友也是这样在知道了6大布局的用法之后,摄影师给你6个提高风光摄影水平的建议,知道了各种样式的界面外观的大致布局方法,而这还远不够让我们写出漂亮的布局外观,只有配合相对布局与绝对布局才可以更好的控制界面的元素。值得一提的是,我这里说的相对布局和绝对布局并不是一个容器或者控件,这只是一种技巧和使用方法,用在容器布局所包含的控件上,常用到横纵向布局中我先来介绍绝对布局,笼统上说绝对布局和相对布局其实只有一个差别,也就是我在前面提到的float属性,容器中包含的控件float属性为真就是绝对布局,为假就是相对布局。不要小看这一个属性,他带来的效果可以天壤之别!给控件的float属性设为真后,就使用了绝对布局,故名意思,绝对布局就是让控件的坐标绝对化,这样这个控件就不受他的容器的束缚而可以自己随意设置自己的位置!比如在横纵向布局中给他们包含的子控件设置float属性,这个控件就不会被自动横纵向排列。而我的建议是,能不用绝对布局就别用绝对布局!原因有三个: 1)绝对布局破坏了各个容器的特性,而不受容器的束缚2)绝对布局让控件的坐标固定,不利于控件自动调节位置3)后面提到的相对布局几乎可以完成绝对布局的所有特性那么为什么要用绝对布局,因为他的一个功能是相对布局无法完成的,就是让控件或者布局重叠或者相交!有的时候我们必须这样做来让控件组合起来达到一些效果。我可以明确的说,我在做仿酷狗播放器的过程中,整个xml布局代码只用了2个绝对布局,一个是编写搜索栏《仿酷狗音乐播放器开发日志二——搜索栏的编写》,一个是编写电台控件虽然不建议使用,但我也得说一下绝对布局相关的属性和使用技巧1)把float属性设置为真2)设置pos属性,这个属性在float为真时才有效,他包含四个字段,分别以为了控件的左上右下下个坐标的位置,但是建议只指定前两个字段来设置控件的左上角的坐标,控件的宽度用width和height属性来控制,这样做的好处是避免了计算右下角坐标的繁琐!以后修改的时候也很清晰!用了这个属性,就可以让控件拥有相对布局的一部分特性,那就是根据容器的大小,自己可以调整位置和大小!这个特点我在《仿酷狗音乐播放器开发日志二——搜索栏的编写》用到了,是为了让搜索按钮可以自己移动。这个属性的前两个字段表示横纵向的位移值,后两个字段表示缩放值,具体效果大家应该自己实践一下!另外这个属性默认是有严重bug的,就是窗体最小化再恢复后有这个属性的控件会自动无规律偏移,这个bug我修复了,详见《仿酷狗音乐播放器开发日志二——搜索栏的编写》这样就介绍完了绝对布局,然后就是整片文章的最重要部分,相对布局!在容器内部使用控件或者容器时,float属性设置为flase(duilib默认为false)就是相对布局了。这是我非常推荐使用的,前面我也说了我在写仿酷狗的整个布局中,上百个控件中我只给两个控件使用了绝对布局,其余都是相对布局。他的优点如下: 1)布局和控件是可以根据窗体的大小改变而自动调整位置的,这点很重要 2)不需要绝对布局那样麻烦的计算各个控件的位置 3)在容器中调整前一个控件的位置,淘票票新春电影嘉年华开启,后面的控件都会自动调整坐标其实总得来说使用相对布局意义就是使用布局控件的自动排列特性!使用了相对布局后,就不用设置float属性和pos属性,一般只设置甚至不设置width和height属性。这点很重要,如果你的控件或者布局的大小是固定的,那么就设置width和height属性,如果想让控件或者布局根据窗体的大小而自动调整大小和位置,就不设置这两个属性。如果只设置了一个属性,比如width设置为100,影视视频制作而height不设置,那么他的高度是自动调整的而宽度是固定的。父容器会自动安排他包含的元素,让含有width和height属性的控件占据相应的大小,把剩下的空间都分配给没有设置wieth和height属性的容器或者控件里。看下面一个例子:这个例子是我的仿酷狗播放器的换肤窗体的标题栏。他的外层是一个横向布局,公司宣传片拍摄高度为30,宽度随窗体调整。让标题文字居于左侧,关闭按钮在最右侧,如果让窗体调整宽度后文字和关闭按钮自动调整位置,就需要把中间的空位占满。这时我们就需要一个占位控件,不给他设置width和height属性,这样子他就会自动占据剩余的空间!就达到了相对布局的自动调整位置的效果。这个使用方法是相对布局里非常常用的!而这个占位控件在没有什么其他要求时建议像我给出的例子那样,使用Control控件,公司宣传片拍摄因为他是所有控件和容器的祖先基类,代码和属性相对是最少的,这样有利于提高程序的效率!在充分理解了占位的技巧后,再配合一些微调属性,就可以完美控制各个控件了,这几个微调属性分别是inset、padding、childpadding,这几个属性的介绍如下:

公司宣传片拍摄-版权信息
公司宣传片拍摄-
虚拟演播室拍摄 三维动画制作 MG动画制作 影视视频制作 企业宣传片制作 公司宣传片拍摄 天源文化传播有限公司公司地址:天津市西青区王顶堤商贸城58众创 本站视频作品采用知识共享署名非商业性使用津ICP备14005706号-1

友情链接: 赚客吧 企业广告片拍摄 活动策划 企业宣传片制作 年会活动策划 广告片拍摄制作 动画制作 多媒体企业展厅 影视视频拍摄制作 广告策划公司 MV拍摄制作 企业宣传片制作 天津活动策划 设计制作公司 虚拟演播室 中国家居网 短视频运营 动画制作公司 广告片制作公司 活动拍摄 VR拍摄