android 黑科技项目,黑科技:使用AI和机器学习将Android项目秒变IOS项目

4a687ff5b5e21d13b452cf146c721d3b.png

最近看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的屏幕截图:

2eca779a321976e53138b8ee9cd8f179.png

开关,ImageButton,ToggleButton的屏幕截图:

978cc5a5023006608e148187cc09f7cb.png

Button的屏幕截图:

f78b38b0ea654bc95c84403ae22431e7.png

TextView的屏幕截图:

b09fdb915e3fac7425308e3cde10f49d.png

使用普通键盘的EditText的屏幕截图:

e2d4b6718e465ae0007ee68fd769cac7.png

带电话拨号键盘的EditText的屏幕截图:

42f5ad6a882f16878b23bbcbb3859365.png

布局的转换

目前支持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的屏幕截图:

d5df7031837053e91fd767e409033716.png

c3508b35b497c2f24bae925634e92168.png

RelativeLayout的屏幕截图:

b4d3835be79940a271a4431e854fd70b.png

d6c1d123873a3f040eac64633a43156f.png

FrameLayout的屏幕截图:

1100cbb268604dc47a8eedf26940c9d1.png

4894ca4885b0a09b8e2b1256071255e1.png

ConstraintLayout的屏幕截图(这个也做了移植,确实经惊艳到我了):

448e4444ed47c7ede722c0d249414a2a.png

803a08a87cab103a0d017eaf7674fedb.png

TableLayout的屏幕截图:

f324365c326b6738784d647db220af46.png

d0e844844d07b7910a8a4aec47dea50a.png

ScrollView的屏幕截图:

975f8cd5eae4ad947b7609bca93e2d6b.png

资产目录文件的转换

这一部分内容比较多,简单的说就是把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设备的显示了各种资产的使用情况的屏幕截图:

27e9e3d32edd91944499d2c87c7eaee5.png

Android Studio布局编辑器:

0c8b5013e64c3445a460714f2671d8db.png

Xcode Storyboard编辑器:

1e273e35f3131efcbf535ef1c854223d.png

Android Studio Asset资源图片:

a7eab7da3dc74025285f5a699876dae2.png

Xcode Asset 面板:

aca6a0d0074261d07bae5212dd02fb8a.png

Android Studio .9.PNG 图片资源编辑器:

c5d242e1e756c3c78a292b124e349013.png

Xcode Asset面带有从.9.png文件中提取的切片信息:

88814d3132760f3c224e11c1c6e4e77a.png

Vector矢量图的转换截图对比:

baa6c3f7ccdccdab5cc0a71a38bf3a95.png

Shape xml文件的对比:

c0e0d2c2fe4f13092da53abce3351fd1.png

动画转换的对比:

Android

iOS

f0399086873266951bc1d9a02809465e.gif

1ebcf67cbc453c71297df0cec166c138.gif

事实上效果是同步的,只是录屏和操作步骤不一致的原因,看起来有些延迟。

外部库Glide的转换

支持的功能:

从本地res文件夹加载drawable

从URL加载图片

将图片加载到UIImageView

在下载过程中提供占位符图片

在图片之间应用过渡:CrossFade,Flip

支持图片Transformation (变换)API:circleCrop(),centerCrop(),fitCenter(),centerInside()

清除待处理的请求

RequestOptions类可在实例之间重用设置

待支持的API:

priority()

diskCacheStrategy()

asBitmap()

error()

fallback()

clearMemory()

使用截图:

279c19ae12546627efab3b790e588356.gif

计算器App

这是一个移植的计算器项目。

使用截图如下,还是挺酷选的呢,效果保持一致,操作也很流畅:

e58d4da77fdbe6e6eef26a228807ef34.gif

最后附上官网地址,有兴趣的可以去看看。

关于作者:公众号“Flutter那些事”,独家放送最新Flutter、Dart和Fuchsia等技术动态,以及众多原创,有技术深度的技术干货文章,还有Flutter实战干货文章,等你来看,喜欢Flutter和跨平台开发以及原生移动端开发的朋友们,赶紧来看看,欢迎大家关注。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值