Android-培训-02-JFM

上传人:m**** 文档编号:509485340 上传时间:2022-11-29 格式:DOCX 页数:24 大小:1.13MB
返回 下载 相关 举报
Android-培训-02-JFM_第1页
第1页 / 共24页
Android-培训-02-JFM_第2页
第2页 / 共24页
Android-培训-02-JFM_第3页
第3页 / 共24页
Android-培训-02-JFM_第4页
第4页 / 共24页
Android-培训-02-JFM_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《Android-培训-02-JFM》由会员分享,可在线阅读,更多相关《Android-培训-02-JFM(24页珍藏版)》请在金锄头文库上搜索。

1、UIAroid中所有的界面都是由视图构成。例如文本框,按钮,分割线,等等。所有的视图均有一种公共的基类View。其中Viewrop是Vw的子类,可作为Vew的容器,完毕View的布局(所有的布局都是Viwou的子类)。indow中的所有Viw都是在一棵树内。即可以通过代码也可以通过XML配备文献来向这个树中添加iw。视图树如下图:IDView也许有一种数字I类型。这个ID一般是在XML中定义,重要用于在视图树种查找指定的View。例如:l 在样式文献中定义一种按钮,分派一种唯一ID:l 在Actiity中,可以查找这个按钮:注意,ID在一颗树内也许是不唯一的,但是最佳要保证在视图树内的一部分要

2、唯一。位置视图是一种矩形构造。拥有1个坐标和2个尺寸。坐标是矩形左上角的坐标;尺寸是宽和高。坐标和尺寸的单位为像素(pixe,构成屏幕的图象的最小独立元素)。可以通过viewgeLft()和vew.getTop()来获取坐标。为了以便尚有2个措施,vie.getRi()和view.etottom()。关系如图,淡黄色的是父Vi,绿色的是目前View。例如:当viegtLeft()返回20就代表着这个iew是在所属的父View的左边沿右侧0像素。如上图中就是left为20像素。大小,填充和边距视图的大小是通过宽和高来表达。视图一般会有2组宽高值。l 第一组,估计值这组值决定视图在其父视图内想要占

3、据的大小。可通过ieetMaseWth()和viegetMeasuredHeight()。l 第二组,实际值这组值决定视图在屏幕上的实际尺寸。这组值也许与估计值相似。可通过view.getidt()和vew.etHight()获得。Pddig(内边距)是以像素为单位,表达内容距离边框的大小,拥有4个值lef,t,righ,tom。可通过view.setPadding(let,op,right,bottom)或者vw.setPaingRlati(sat,top,en,bottom)来设立,获取可通过vie.getPadingef(),iew.getPaddingTop(),iew.gePaddi

4、gRt(),ew.gePddinBottm(),gtdSar(),getPadingd()。gins(外边距)是在Verup中提供,一般Vew不提供该属性,使用paddig即可。注:padingStar,addd与addingLeft,pddingight有什么差别呢?一方面对于中国大陆来说,这个是没有任何差别的。在drod1开始对双向文字进行有限支持,4.2开始对从右到左的文字进行了原生级别全面支持。padingStat在LTR中与paddingLeft相似;在TL中与ddngRig相似。布局布局分个过程:1. 测量过程测量过程是在view.measu(wdthMasurepc,hightM

5、easuSec)措施中完毕,并且会自上向下遍历视图树。每个视图通过递归方式向下推送尺寸明细。在最后每个视图保存自己的尺寸。2. 实际布局实际布局是在view.lyut(lft,tp,ight,botto)措施中完毕。同样是自上而下。在这个过程中,所有的父iw均会使用之前测量好的值来定位所有子View的位置。注旨在vi.meaure()措施执行后,由于子视图需要,因此viweteasureWidth()和iegetMeareHeight()必须可以取到值。为了保证在测量过程的最后,所有的父视图都可以接受子视图的大小,视图在测量宽和高时必须要遵守父视图所派给的约束(宽,高)。父视图或许会调用mea

6、sure措施多次测量它的子视图。例如:一方面父视图会不限制尺寸来计算每一种子视图,这样父视图可以懂得它的子视图想要的大小;然后,如果子视图无限制的尺寸过大或者过小,父视图会使用实际值来再次执行esasure措施。测量过程会使用2个类来传递尺寸:l Viw.MeasurSec描述视图但愿的测量和定位方式。有三种模式:1. UNSPCIFIED:父视图给子视图一种尺寸,但是由子视图来决定自身真正的尺寸。2. XATL:父视图给子视图指定的明确尺寸。子视图必须使用。3. ATOST:父视图给子视图指定的最大尺寸。l ViewGroup.LoutPra描述视图但愿的宽和高。有3类值可以指定:1. 精确

7、值:数字,单位可以是px(像素),dp(无关密度的像素),p(优先字体大小缩放的像素值),n(物理屏幕的英寸),mm(物理屏幕的毫米)2. Mach_paret:视图会尽量与父视图connt同样大。(使用Fil_paren已通过时,在API 8之前使用。)3. Wraconent:视图会尽量与自身的cnent同样大。此外注意不同的ViewGroup子类也许有不同的Layoutaram子类。绘图通过遍历视图树,并且渲染每一种视图。根据视图树遍历顺序,父视图会在它的子视图之前绘制,同级视图会按照浮现树中的顺序来绘制。如果给视图设立背景,背景会在视图的oDraw()措施之前绘制。onw()措施是绘制

8、视图的措施。注意,android的框架不会在视图无效的区域进行绘制。强制视图进行绘制可以调用inalidte()事件解决及线程视图基本循环:1. 事件进入,转发至合适的视图。视图会解决事件及告知一种的监听。2. 在事件的解决过程中,视图的边界有也许变化,此时视图会调用reustLayu()。3. 在事件的解决过程中,视图的外观有也许变化,此时视图会调用ivlidate()。4. 如果reqestLaou()或者invalidate()有执行过,框架会合适的进行测量,布局及绘制。注意:视图树是在一种单线程中。只能在I线程中执行有关措施。在其她线程中想要修改需要使用Hler。焦点解决视图中的焦点针

9、对方向键或者轨迹球之类的硬件才浮现的。框架会针对顾客的输入解决常规的焦点移动。涉及移除视图,隐藏视图,新增视图。通过isFocusabe()来检测视图与否可获得焦点。可通过etocuale(ooen)来设立。在触摸模式下,需要使用isousablenTouch()来检测视图与否可获得焦点,可通过tFcusableTouchMoe(boolean)设立。触摸模式对于一种可触摸的设备,一旦顾客触摸屏幕,设备会立即进入触摸模式。此模式下,只有iocsaleInTouchMe()返回tue时才可获得焦点,例如文本框。也有某些不需要获取焦点的,例如按钮(只监听oncic事件即可)触摸模式的状态被保存在c

10、tvi中,通过isInuchMde()来检查与否在触摸模式。滚动对于视图内部滚动,框架提供了基本的支持。涉及沿X,Y滚动及滚动条绘制。ve.scrllBy(x,y) 滚动的起始位置。ew.scrolo(x,) 滚动的结束位置。viewawaScllBas()触发滚动条的绘制。TS(标记)虽然叫做标记,但是并不是用来辨认视图的。TAS基本上是一组与视图有关系的扩展数据。一般是为了以便而储存视图自身的数据。2个措施进行储存wetTg( ke,Objct ta)Vie.stTa(Obct tag)2个措施进行读取ie.geta(in e)View.geTag()属性视图公开的属性有alpha,和某些

11、与视图变化有关的属性。例如:RNSLTION_X和TRANSLON_Y。可通过2种方式获得:1. Proert形式例如:Vie.ALHA.g(viewj)可获取vewOj的alp值。2. SetterGeter形式例如:viewObj.etAlpha()可获取iewObj的lph值。这些属性的重要目的是设立视图渲染有关的持久化状态,重要用于动画动画从androd30开始,推荐使用andodaniatin包来制作动画。该包下的类会修改视图中的真实属性。与3.0之前的动画相比,不再仅仅是视图绘制及显示。可用stAimaton(animation)和tatAimation(animation)。安全

12、性有时应用自身必须要验证所要执行的行为,这个行为是通过顾客充足理解和批准的。例如:申请权限,点击购买,或者点击一种广告。但是歹意应用可以欺骗顾客执行这些操作,并且顾客却完全不懂得。因此针对敏感功能,andrid提供的是一种触摸过滤机制。启动触摸过滤需要调用vew.etFilterouchesWheObscure(bool)或者在XL中设立andrd:iltTucshenObsured的值为true。此时当视图一旦被其她窗口遮蔽,系统会丢弃视图所收到的触摸事件。因此视图上浮现tos或者diaog时,触摸事件同样会被系统丢弃。如果想自定义控制,可重写viw.nFltrToucvnForSecrty

13、(nEvnt)。常用的UI布局1. elatveyu关联型布局。可使用相对位置的布局。2. Gridayut表格型布局。3. Linrayou线性布局。必须要指定是水平还是竖直。U事件传递事件自上而下传递,iwGroup计算传递给子View。解决事件顺序相反。Ativity是与顾客交互,并且带界面的组件。创立ait创立acvity分环节:1. 继承actity,并实现某些生命周期措施。2. 创立相应的XML视图文献。通过cvity.setConentVew将视图放入到contet中。3. 在manifst文献中声明atvt。如下图例子:上图中,黑色框2中的ndroid:nme一般是需要全名称(

14、带包名),这里虽然写的是“.ExampleActiv”,但是包名是在根节点属性“acge”中声明,如第一种黑框。褐色框中表达的是该ativity是可以通过图标点击进入的。启动acivity从actiity中启动其她的activity,大体分两种:1. 一般启动:2. 启动并返回成果:并必须实现这个措施来解决返回成果关闭ctiit一方面要说的是ciity的生命应当交给系统来管理,但是某些条件下需要我们手动清理此时需要在tivi中执行finish措施。注意:在执行finis措施时,只是标记了该activty可以被关闭,但什么时候关闭还是由系统决定,因此清理睬有延迟。ctivt的生命周期生命周期中的重要措施:1. nCrateatvity创立后会调用该措施。2. onStaraivity将要可以用于显示。3. onR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号