博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑科技:使用AI和机器学习将Android项目秒变IOS项目
阅读量:2356 次
发布时间:2019-05-10

本文共 2910 字,大约阅读时间需要 9 分钟。

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


已支持的功能:

  1. Android的资产目录 (如:jpgpng.9图等)  =>  "Assets.xcassets"

  2. mipmap目录的图片资源   =>  “.appiconset

  3. Color形式的xml   =>  “.colorset

  4. Shape形式的xml   =>  asset面板中的PDF

  5. Vector形式的xml文件   =>  Swift代码 (CAShapeLayer)

  6. Animation形式的xml文件

  7. UI布局的xml文件  =>  StoryBoard文件

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

开关,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资源图片:

外部库Glide的转换

支持的功能:

  • 从本地res文件夹加载drawable

  • 从URL加载图片

  • 将图片加载到UIImageView

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

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

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

  • 清除待处理的请求

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

待支持的API:

  • priority()

  • diskCacheStrategy()

  • asBitmap()

  • error()

  • fallback()

  • clearMemory()

使用截图:

计算器App

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

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


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

官网地址:www.reflectcode.com/

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

                        喜欢 就关注吧,欢迎投稿!

作者:AWeiLoveAndroid
链接:https://juejin.im/post/5dcace50518825573f58a5b5

转载地址:http://dpbtb.baihongyu.com/

你可能感兴趣的文章
自定义UI实例
查看>>
推荐一个不错的自定义UI
查看>>
fedora16 设置 gedit软件的默认编码
查看>>
S3C6410 存储器映射
查看>>
Linux 3.3.0移植到S3C6410开发板上之一
查看>>
Busybox支持中文的解决办法
查看>>
Spring中BeanFactory和FactoryBean有什么区别?
查看>>
牛年(2021)的KPI
查看>>
快速识别图片类型
查看>>
理解云原生
查看>>
docker常见问题答疑
查看>>
mac最简配置maven
查看>>
虚拟机性能监控与故障处理工具
查看>>
GIT的一些操作
查看>>
ZooKeeper 四字命令
查看>>
Mysql InnoDB锁问题
查看>>
ZooKeeper编程 基础教程
查看>>
Java 集合框架
查看>>
kafka 操作
查看>>
Java 集合框架 算法
查看>>