lv在法国买比国内便宜多少 (l|V|在f|E组件的正确姿态是|r中嵌入n|u|t|a|t)
添加微信好友。 免费测试。
复制微信号
引见
在从n AT i v e向f u t e r过渡的漫长混合工程期内,为了成功颠簸过渡,在n AT i v e f u e r中经常使用更完善的控制是一个不错的选用。本文引见了一种新的数字射频器件的运行,以及基于该器件的双端嵌入式数字射频器件的处置方案。
1.1.d e m o r u n
嵌上天图的场景或者存在于许多运行程序中,但以后的地图sdk没有提供f l u t e r库,而且自己开发一套地图显然是不理想的。在这种状况下,经常使用混合堆栈的方式是更好的选用。咱们可以间接在n a t i v e的绘图树中嵌入一个m a p,但该方案中嵌入的v i e w不在f l u t e r的绘图树中。这是一种暴力和不雅的方式,也很难经常使用。
目前,经常使用由f l u t e r正式提供的控制是一个优雅的处置方案。上方是一个便捷的DEMO嵌入在高德地图中。让咱们依照这个运行场景来了解n d r o i d v i w的经常使用形式和成功原理。
1.2.一种新的用法
n d r o i d v i e w的经常使用形式与m e t h o d c h a n e l的经常使用形式相似,后者相对便捷,关键分为三个步骤:
步骤1:在d a r t代码的相应位置经常使用n d r o i d v i w。经常使用时,您须要输入一个。该序列将用于惟一地识别w ID g e t,并与n a t i v e的v i e w建设关联。
第2步:在n a t v e端参与代码,并编写一个p l a t f o r m v i w f a c t o r y。pla t f o r m v i e w a c t o r y的关键义务是在该方法中创立一个v i e w,并将其传递给fl u t e r(此语句不准确,但咱们临时可以了解,稍后将解释)
步骤3:经常使用该方法注册刚刚写入的PLATOFORM VIEW OFACTORY。该方法须要传入两个参数。第一个参数须要对应于在fl u t e r端写入的参数,第二个参数是刚刚写入的pla t f o r m v i w f a c t y。
这里省略了性能高德地图的局部。这位官员有更具体的文件,可以在高德开发平台上查阅。
以上是经常使用n d r o i d v e w的一切操作。总的来说,它仿佛相对便捷,但在真正经常使用它时,有两个疑问不容漠视:
谁来选择VIEW的最终显示大小?触摸事情是如何处置的?
如今让咱们给你一条不要钱的小鱼来逐个回答。
要处置上述两个疑问,咱们必定首先了解所谓“传输v i e w”的实质?
2.1.所谓的“传输v i e w”的实质是什么?
为了处置这个疑问,阅读源代码并从更深档次上扫视整个传输环节是无法防止的。你可以整顿出这样的流程图:
咱们可以看到,f l u t e r最终获取的是n a t i v e层前往的t e x t u r e i d。依据n a t i v e的常识,k y h该t e x t u r i d是与在n a t i v e侧渲染的v i e w的绘图数据相对应的i d。经过该ID,可以在gpu中找到并间接经常使用相应的图形数据。那么f l u t e r如何经常使用这个ID呢?
在之前对f l u t e r接口开发的深化了解中,咱们还引见了f u t e r的绘制环节。我也会给你一个便捷的分类
f l u t e r的f r a m w o r k层最终将提交给e n g i n e层的l a y e r e层。LAYE的每个叶节点都将在管道中遍历。每个叶节点最终将调用SKIA引擎来成功接口元素的绘制。遍历成功后,在调用g l p r e n t r n d r b u f r(IO s)或g l s w a p b u f r(a n d r o i d)后,按成功屏幕上的操作。
有很多种类型的打印机,并且一个n d r o i e w经常使用t e x t u r打印机。在前面的f l u t e r外部纹理中更具体地引见了t e x t u r e l y e r,这里不再重复。当遍历Te x t u r e l a y e r时,它将调用e n g i n e层的方法,并将Te x t u r e i d作为参数传递。最后,在绘图时,SKIA将依据TEXTUREID间接在gpu中找到相应的绘图数据,并将其绘制在屏幕上。
谁能获取这个我就能做到吗?当然,答案能否认的。TEXTURE数据存储在与创立它的EGLCoNTEXT对应的线程中。因此,假设在其余线程中操作,则无法取得相应的数据。这里须要引见几个概念:
显示对象(display):提供无关显示像素密度和大小的正当消息。p r e s e n t a t i o n:它为n d r o i d提供了绘制相应高低文(c o n t e x t)和显示对象(d i s p l a y)的才干。它理论用于双屏显示。
咱们不须要在这里解释纹理,咱们只要要了解,f l u t e r经过纹理成功外部纹理。在创立纹理时,会传入与fl u t e v i w相对应的c o t e x t和一个虚构显示对象,以便fl u t e r可以间接经过id查找和经常使用由n a t v e创立的纹理数据。
2.2.谁来选择最终的展现尺寸?
经过上述环节,咱们都可以以为,显示大小仿佛由两局部选择:一局部是ndroidview的大小,另一局部是ndroid end view的大小。那么谁来选择呢?咱们做个试验吧?
间接构建一个新的f l u t e r名目,并将两边局部改为一个n d r o i d v e w。
相应的代码也应参与到a n d r o i d端。为了更好地看到切割成果,这里经常使用了i m g e v i e w。
首先,看看n d r o i d w。与nD r o i d v i w相对应的r e n d r o b j e c t是r e n d r a n d r o i d v i w,并且有两种确定r e n d r o b j e c t的最终大小的或者性,一种是由父节点指定的,另一种是依据其自身在父节点指定的范畴内的状况来确定大小。关上相应的源代码,您可以看到有一个十分关键的属性,即nDROIDVIEW的大小由其父节点选择。咱们可以经常使用诸如c o n t a i n e r、s i z e d b o x等控件来控制n d r o i d v i w的大小。
n d r o i d v i e w的绘图数据由n a t i v e层提供。当在nATIVE中渲染的VIEW的实践像素大小大于nDROIDVEW的实践像素大小时,会出现什么状况?理论,处置这种状况只要两种选用,一种是切割,另一种是缩放。f l u t e r坚持其一向的做法。一切数据都以一致的方式显示。上述状况被视为一种极其状况。
当该VIEW的实践像素大小小于n d r o i d VIEW的实践像素大小时,将发现VIEW不会相应地减小(c o n t a i e r的背风景不会泄露),并且没有内容的中央将填充红色。要素是,在s i ng l e v i e w p r e s n t i o n::o n c r e a t e中,f r a m e l a y u t将用作r o t v i e。
2.3.触摸事情是如何经过的
每团体都应该相熟n d r o i d的事情流程。它从上到下传输,从下到上处置或回流。f l u t e r也经常使用此规定,但n d r o i d v i e w经过两个类处置手势:
m o t i o n t s d i s p a t c h r:担任将事情封装到n a t i v e的事情中,并将其传输到n a t i v e;
n d r o i d v i e g e s t u r e c o g n i z e r:担任识别相应的手势,该手势有两个属性:
而且,只要当po i n t v e n t的po i n t e r属性在f o r w a r d p o i n t e r s中时,它才会散布,否则它将存在于c a c h e n t s中。这里的成功关键是处置一些事情的抵触,例如滑动事情,这些事情可以经过g e s t u r e c o g n i z e r s来处置。请参考这里的官网注释。
因此,总的来说,这一局部的环节也很便捷:事情的初始阶段从n a t i v e到f l u t e r不在本文的范畴内。f l u t e r依据自己的规定处置事情。假设n d r o i d v e w赢得该事情,该事情将被封装到相应n a t i v e端的事情中,并经过方法通道前往给n a t i v e。NIVE将依据自己处置事情的规定启动处置。
3.1.程序限度
达利:这个处置方案是gogole为处置开发商始终增长的业务需求与落后的生态环境之间的矛盾而提出的。这一矛盾是重生态必定面对的关键矛盾。为了处置这个疑问,最便捷的方法当然是准许开发人员在旧的生态系统中经常使用十分成熟的控件。当然,这可以临时处置f l u t e r的生态开展不片面的疑问,但经常使用该方案无法防止地须要编写双端代码(即使如今i o s没有相应的控制,当然以后会降级),无法成功真正的交叉端。
在某种水平上,该方案存在性能毛病。在a类和r o i d v i e w的第三条评论中,该官员提到这是一个相对低廉的方案。当也可以经过经常使用FL u t e r控制来成功时,可以防止经常使用它。假设你以前读过“f l u t e r external texture”一文,你应该知道,在f u t e r成功外部纹理的方案中,g p u->c p u->g p u的数据处置老本相对较大,在少量经常使用的场景中会形成显著的性能毛病。
咱们经过一些方法绕过了两边CPU的步骤,并在一个p p中成功了这项技术来处置图片资源。3.2.实践运行
目前,闲置鱼类从n-a-t-i-v到f-u-t-r的迁徙遇到了一个疑问,即在f-u-t-e端无法访问n-a-t-v-e的本地图片资源。在f u t e r和n a t i v e将常年共存的状况下,当然可以依据f u t e r的规定从新复制资源并将其存储,但这无法防止地会参与软件包的容量,而且不容易治理。
面对这一疑问,咱们的处置方案是自创经常使用Te x t u r e的n d r o i d v i e的思维,并对其启动优化。成功了n-a-t-i-v-e和f-l-u-t-e-r图像资源的规范化。除了加载位于NATIVE资源目录中的本地图片,您还可以经常使用NATIVE图片库加载网络图片。
咱们这样做的要素是,咱们在n a t i v e端的图片库相对完善,并且经过了很多在线测试。在这个阶段,咱们不想在重复建造轮子上投入太多精神。理想上,处置在线图片资源的思绪与处置本地图片资源的思绪相反,因此咱们选用一致整合图片资源,并在沟通后与官网团队启动沟通。咱们将与你坚持分歧。请留意咱们的官网帐户。
短视频宝宝=慢?阿里巴巴的工程师们就在这样一秒钟内关上了路由治理代码的短视频。阿里巴巴工程师如何高效地处置这个疑问?(适用)一个很好的方案,可以协助您成功复杂数据源中单元格消息的准确规范化。我必定通知你们的是,对于f l u t e r的初始化环节,闲置鱼没有供应的做法是什么,以及如何做到这一点?不务正业的鱼没有货源。闲置市场规模超越万亿。二手电子商务迎来了循环经济的红利。“校园圈”真的能成为游鱼成长的第二个引擎吗?