专栏首页Flutter入门到实战黑科技:使用AI和机器学习将Android项目秒变IOS项目

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

最近看Github,发现了一个刚出炉的黑科技:利用人工智能(AI)和机器学习(ML)技术将现有Android源代码转换成iOS代码。目前支持Android项目中的资产目录文件和UI布局转换,以及部分外部库的转换。有了这个神器,以后一个人就可以轻松搞定两个平台了,真是爽歪歪啊。。。。我根本不需要学习iOS了。。。


已支持的功能:

  1. Android的资产目录 (如:jpgpng.9图等) => "Assets.xcassets"
  2. mipmap目录的图片资源 => “.appiconset”
  3. Color形式的xml => “.colorset”
  4. Shape形式的xml => PDF format in asset catalog
  5. Vector形式的xml文件 => Swift Code (CAShapeLayer)
  6. Animation形式的xml文件
  7. UI布局的xml文件 => storyboard file
  8. Java的POJO类 => Swift
  9. 外部的库Glide的转换

正在开发中的功能:

  1. 资源(Resource)xml文件
  2. Android SDK的类
  3. 更多的外部的库,比如:GSON, Retrofit2, ButterKnife等。
  4. 矢量图动画(Vector Animation)xml资源

未来支持的功能:

  1. Android的Kotlin语言
  2. Android的JetPack
  3. Android的代码编写的布局 转成 SwiftUI
  4. Lagacy .storyboard 转成 SwiftUI
  5. 测试用例的生成

UI的转换

目前支持CardView,Switch,ImageButton,ToggleButton这些控件类型的转换。

部分效果图如下:

CardView的屏幕截图:

image

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

image

Button的屏幕截图:

image

TextView的屏幕截图:

image

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

image

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

image

布局的转换

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

image

image

RelativeLayout的屏幕截图:

image

image

FrameLayout的屏幕截图:

image

image

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

image

image

TableLayout的屏幕截图:

image

image

ScrollView的屏幕截图:

ScrollView_ScreenRec.gif


资产目录文件的转换

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

image


Android Studio布局编辑器:

image

Xcode Storyboard编辑器:

image


Android Studio Asset资源图片:

image

Xcode Asset 面板:

image


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

image

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

image

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

image

Shape xml文件的对比:

image

动画转换的对比:

Android

iOS

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


外部库Glide的转换

支持的功能:

  • 从本地res文件夹加载drawable
  • 从URL加载图片
  • 将图片加载到UIImageView
  • 在下载过程中提供占位符图片
  • 在图片之间应用过渡:CrossFade,Flip
  • 支持图片Transformation (变换)API:circleCrop(),centerCrop(),fitCenter(),centerInside()
  • 清除待处理的请求
  • RequestOptions类可在实例之间重用设置

待支持的API:

  • priority()
  • diskCacheStrategy()
  • asBitmap()
  • error()
  • fallback()
  • clearMemory()

使用截图:

image


计算器App

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

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

image


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

官网地址:http://www.reflectcode.com/

Github: https://github.com/ReflectCode/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谷歌I/O大会进行时:AI加持五大应用,对话、拍照、阅读无所不能

    昨日凌晨,科技巨头秀——谷歌I/O开发者大会正式开幕。大会上,谷歌CEO Sundar Pichai和各产品线负责人,对Android P、谷歌AR地图、TPU...

    VRPinea
  • 谷歌I/O 2018进行时:ARCore1.2主推Cloud Anchor共享体验功能,AR地图无需GPS定位

    VRPinea
  • 【重磅】Facebook贾扬清发文,Caffe2go将开源,手机就能训练神经网络

    【新智元导读】Caffe作者,Facebook研究科学家贾扬清11月8日在Facebook官方网站上发文,介绍了他在Facebook 最新的机器学习研究成果——...

    新智元
  • 手机端的 Cortana 即将成为历史【智能快讯】

    AI 无处不在的时代,每天都有新的技术与研究成果出现。无论学术界还是商界,技术还是产品,AI 的新发现都源源不断,在带给我们全新视角的同时,也引起我们更深的思考...

    HyperAI超神经
  • 【快报】“中国造”手术机器人有望面世 | 特斯拉中国官网删除“自动驾驶“”无人驾驶”字眼

    1 特斯拉中国官网删除“自动驾驶” 、“无人驾驶”字眼 ? 特斯拉中国官网已经看不到“Autopile” 自特斯拉汽车在中国发生首次车祸,车主投诉特斯拉公司夸大...

    新智元
  • 《程序员》5月精彩内容:人工智能 为我所用

    用户1737318
  • 移动应用AI化成新战场?详解苹果最新Core ML模型构建基于机器学习的智能应用

    Google刚刚息鼓,苹果又燃战火!这一战,来自移动应用的AI化之争。 近日,苹果发布专为移动端优化的Core ML后,移动开发者对此的需求到底有多强烈?去年大...

    AI科技大本营
  • 一文看尽 Google I/O 大会

    非著名程序员
  • 微软昨晚打出AI组合拳,包括新成立AI实验室(挖人更方便了……)

    问耕 若朴 发自 凹非寺 量子位 出品 | 公众号 QbitAI 一觉醒来,发现微软昨晚打出一套AI组合拳。 第一招,组建AI研究实验室 微软首度透露建立了一个...

    量子位
  • 微信热传的 100+ 经典技术文章

    阿炬
  • 百度开源移动端深度学习框架MDL,手机部署CNN支持iOS GPU

    【新智元导读】百度开源了其移动端深度学习框架Mobile Deep Learning (MDL)的全部代码和脚本。MDL是一个基于卷积的神经网络,支持iOS g...

    新智元
  • 革命性web前端框架Flutter详细介绍和学习路径

    Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutte...

    Javanx
  • 荐读 | 除了会下棋的阿法狗,AI军团还有这44个知名项目

    在科幻小说中,我们经常看到AI软件的身影,许多人认为AI是一门存在于未来的技术,也许会变成现实,也许永远会停留在空想之中。 事实并非如此,我们当中的大多数人每天...

    新智元
  • 【AI 引擎】虚拟现实带你近距离接触朝鲜 | 微软Cortana登陆iOS和Android | 屠呦呦领诺贝尔奖

    1.微软语音助手Cortana登陆iOS和Android ? 微软先前已经在Windows版Cortana中启用了很多功能,但由于iOS和Android有许多限...

    新智元
  • 百度再出Lens黑科技!用PaddleMobile实现类人眼视觉AI能力

    你知道吗?人类有 70%的信息获取来自于视觉。但目前存在两个问题: ①人眼本身只能看到物理世界,无法看到其背后复杂的信息世界; ②人类的记忆力有限,视野有限,于...

    用户1386409
  • 2018年,谷歌人到中年

    如果用一个词来概括中国互联网行业的2018,我觉得应该是“水逆”,大大小小的科技公司都面临层出不穷的“水逆”事件。与中国科技行业水逆不同,硅谷科技巨头呈现出冰火...

    罗超频道
  • 微信多媒体团队梁俊斌访谈:聊一聊我所了解的音视频技术

    广州TIT创意园,这里是腾讯在广州的研发团队所在地,LiveVideoStack采访了微信多媒体内核中心音视频算法高级工程师梁俊斌(Denny)。从华为2012...

    JackJiang
  • 十分钟带你看 Google I/O 2018 的亮点(视频中英双字)

    今年的Google I/O开发者大会已经在美国落下帷幕。此次大会的重点是Google Assistant、Android P Beta,今年的主角依然是AI,它...

    CDA数据分析师
  • 关于Google Assistant,你想知道的都在这里了丨Google I/O 2017

    AI科技评论按:很多读者在思考,“我和AI科技评论的距离在哪里?” 答案就在文末。 ? 图片来源:CNET AI科技评论按:在谷歌 I/O 2017大会开始之前...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券