移动开发作家群(719776724)分享专题Android

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

2019-11-13  本文已影响0人  AWeiLoveAndroid

最近看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的屏幕截图:(gif图内容太大,做了压缩)


资产目录文件的转换

这一部分内容比较多,简单的说就是把Android工程的res目录的文件转换成iOS工程的Assets.xcassets目录的文件。

除此之外还支持.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的转换

支持的功能:

待支持的API:

使用截图:

image

计算器App

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

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

image

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

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

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

上一篇下一篇

猜你喜欢

热点阅读