赞
踩
最近看Github,发现了一个刚出炉的黑科技:利用人工智能(AI)和机器学习(ML)技术将现有Android源代码转换成iOS代码。目前支持Android项目中的资产目录文件和UI布局转换,以及部分外部库的转换。有了这个神器,以后一个人就可以轻松搞定两个平台了,真是爽歪歪啊。。。。我根本不需要学习iOS了。。。
已支持的功能:
Android的资产目录 (如:jpg,png,.9图等) => "Assets.xcassets"
mipmap目录的图片资源 => “.appiconset”
Color形式的xml => “.colorset”
Shape形式的xml => asset面板中的PDF
Vector形式的xml文件 => Swift代码 (CAShapeLayer)
Animation形式的xml文件
UI布局的xml文件 => StoryBoard文件
Java的POJO类 => Swift
外部的库Glide的转换
正在开发中的功能:
资源(Resource)xml文件
Android SDK的类
更多的外部的库,比如:GSON, Retrofit2, ButterKnife等。
矢量图动画(Vector Animation)xml资源
未来支持的功能:
Android的Kotlin语言
Android的JetPack
Android的代码编写的布局 转成 SwiftUI
Lagacy .storyboard 转成 SwiftUI
测试用例的生成
UI的转换
目前支持CardView,Switch,ImageButton,ToggleButton这些控件类型的转换。
部分效果图如下:
CardView的屏幕截图:
开关,ImageButton,ToggleButton的屏幕截图:
Button的屏幕截图:
TextView的屏幕截图:
使用普通键盘的EditText的屏幕截图:
带电话拨号键盘的EditText的屏幕截图:
布局的转换
目前支持RelativeLayout,FrameLayout,LinearLayout (Nested),ConstraintLayout,TableLayout和ScrollView这些布局类型的转换。另外只有部分布局属性做了转换,如下表所示:
Control
Attributes
LinearLayout
orientation, gravity, background, textAppearance
RelativeLayout
layout_centerHorizontal, layout_centerVertical, layout_toLeftOf, layout_toRightOf, layout_above, layout_below, layout_alignParentTop, layout_alignParentBottom, layout_alignParentRight, layout_alignParentLeft
FrameLayout
layout_marginTop, layout_gravity = right, left, right+bottom, left+bottom, center, center_horizontal, center_vertical, right+center_vertical, bottom+center_horizontal
ConstraintLayout
Bottom_toBottomOf, Top_toTopOf, Top_toBottomOf, Left_toLeftOf, Start_toEndOf, Right_toRightOf, Baseline_toBaselineOf, Vertical_bias, Horizontal_bias
TableLayout
TableLayout, TableRow, background, padding
ScrollView
ScrollView, android.support.v4.widget.NestedScrollView, HorizontalScrollView, android:scrollbars
LinearLayout的屏幕截图:
RelativeLayout的屏幕截图:
FrameLayout的屏幕截图:
ConstraintLayout的屏幕截图(这个也做了移植,确实经惊艳到我了):
TableLayout的屏幕截图:
ScrollView的屏幕截图:
资产目录文件的转换
这一部分内容比较多,简单的说就是把Android工程的res目录的文件转换成iOS工程的Assets.xcassets目录的文件。
mipmap目录的图片资源:Android工程的mdpi,hdpi,xhdpi和xxhdpi的图像资源被映射到iOS工程的1x,2x和3x图像资源路径里面。
针对.9.png图片文件:在catalog中为asset添加了切片(slicing )信息。
Vector图片形式的xml被转换成Storyboard上能够使用的.pdf文件。
向量图像xml也被转换成Swift代码,并在VectorStore.swift中为每个vector文件添加一个静态方法。
除此之外还支持.png,color形式的xml,Shape形式的xml,Animation形式的xml的转换。
以下是使用截图:
Android和iOS设备的显示了各种资产的使用情况的屏幕截图:
Android Studio布局编辑器:
Xcode Storyboard编辑器:
Android Studio Asset资源图片:
Xcode Asset 面板:
Android Studio .9.PNG 图片资源编辑器:
Xcode Asset面带有从.9.png文件中提取的切片信息:
Vector矢量图的转换截图对比:
Shape xml文件的对比:
动画转换的对比:
Android
iOS
事实上效果是同步的,只是录屏和操作步骤不一致的原因,看起来有些延迟。
外部库Glide的转换
支持的功能:
从本地res文件夹加载drawable
从URL加载图片
将图片加载到UIImageView
在下载过程中提供占位符图片
在图片之间应用过渡:CrossFade,Flip
支持图片Transformation (变换)API:circleCrop(),centerCrop(),fitCenter(),centerInside()
清除待处理的请求
RequestOptions类可在实例之间重用设置
待支持的API:
priority()
diskCacheStrategy()
asBitmap()
error()
fallback()
clearMemory()
使用截图:
计算器App
这是一个移植的计算器项目。
使用截图如下,还是挺酷选的呢,效果保持一致,操作也很流畅:
最后附上官网地址,有兴趣的可以去看看。
关于作者:公众号“Flutter那些事”,独家放送最新Flutter、Dart和Fuchsia等技术动态,以及众多原创,有技术深度的技术干货文章,还有Flutter实战干货文章,等你来看,喜欢Flutter和跨平台开发以及原生移动端开发的朋友们,赶紧来看看,欢迎大家关注。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。