鸿蒙和安卓开发的一些对比

说明:写个文章简单总结一下鸿蒙和安卓开发常见的一些异同之处,能快速认识理解一下鸿蒙和安卓的开发,意在同时开发两个端的或者转鸿蒙比较方便理解。有空会更新一下。

一、鸿蒙/安卓开发相关

1、开发文档

鸿蒙官方文档:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852

安卓官方文档:
https://developer.android.google.cn/guide

2、关于调试

鸿蒙调试:现在只能用远程模拟器,没有本地调试,对于没有真机调试,现在鸿蒙的远程模拟器还是比较麻烦,运行卡,1小时后就断开要重新安装了。然后对于分布式应用没真机现在也调试不了,以后要比较久才能开放本地模拟器和分布式应用调试。

二、鸿蒙/安卓开发语言对比

鸿蒙开发语言:

  • Java (应用层开发)
  • JS(使用前端渐进式的开发方式,参考Vue、小程序开发)(应用层开发)
  • C/C++ (Framework/系统/硬件层开发)

Android开发语言:

  • Java (应用层开发)
  • kotlin (JVM语言,可以看成Java的衍生语言,比Java要简洁、易用)(应用层开发)
  • C/C++ (Framework/系统/硬件层开发)

简单总结下鸿蒙开发的特点:

  • 鸿蒙和安卓的应用层的开发都使用了Java开发,其鸿蒙的Java的API和安卓很相似,安卓开发的人员能够很快熟悉鸿蒙的开发
  • 鸿蒙使用JS的前端语言作为开发应用语言,一方面由于国内比较多前端开发人员,容易吸引更多的人转到鸿蒙开发,一方面由于前端编程效率要比开发Java要快点,更容易开发。

三、鸿蒙/安卓常见使用的类/资源对比

1、重要基础类

鸿蒙安卓描述
Page Ability
(Ability 、AbilitySlice)
Activity用户显示和交互的界面。鸿蒙的Page Ability一般由Page(Ability类)和AbilitySlice构成,一个Page可以由一个或多个AbilitySlice构成,可以说Page是管理AbilitySlice,这个和安卓的Activity有点区别,可以把一个AbilitySlice看作一个Activity界面,Page就是一组Activity;安卓上一个Activity就是一个Activity,没有组的定义,都是单独使用的,而鸿蒙一般是Page和AbilitySlice组合使用的。
Service AbilityService后台服务,处理后台的任务
Data AbilityContentProvider数据内容提供者,用来管理自身应用、共享数据给其他应用
Fragment模块化界面。Fragment依附于Activity上,一个Activity有多个Fragment界面回来切换。鸿蒙没有类似的功能类,可以说和AbilitySlice有点相似之处
公共事件
(CommonEventData)
BroadcastReceiver用于发送、接收广播消息,鸿蒙和安卓在实现上有点差别,鸿蒙类似EventBus之类的框架,实际上都差不多,都是使用观察者的模式实现
IntentIntent意图,对象之间传递信息的载体,主要用于组件间启动和传递数据,如上面鸿蒙的Page Ability与Service Ability之间的启动和传递数据,安卓的Activity和Activity,Activity和Service之前传递数据,就需要它
TaskDispatcher任务分发器,鸿蒙已经把封装了类似线程池的类,安卓上要自己使用Java的线程池类
EventHandlerHandler线程间通信的类,常用于子线程中通知更新UI

2、Java/XML UI类:

鸿蒙安卓描述
ComponentView基础视图组件,各类UI组件基本都继承它。
ComponentContainerViewGroup组视图,可以把它看成一个容器,这个容器能放多个视图组件。鸿蒙的ComponentContainer继承Component,安卓的ViewGroup继承View
DirectionalLayoutLinearLayout按照水平或者垂直方向的布局,安卓叫线性布局,最常用的布局
StackLayoutFrameLayout堆叠/层次/帧布局,视图组件会一层层堆叠覆盖,简单的来说就是后面的视图叠在前面的视图上,最常用的布局
DependentLayoutRelativeLayout相对布局,按照布局中的其他组件的位置来定位的
AdaptiveBoxLayout鸿蒙的自适应盒子布局,大概就是分为行和指定的多少列,每一行中,每一列的高度按照最高的那一列,每一列的宽度按照指定的高度。安卓的没有相似的布局。
ConstraintLayout安卓的约束布局,要通过support包才使用,官方推荐的布局方式(创建带视图的项目一般默认使用它),其布局特性和RelativeLayout很相似,都是根据各个视图或父视图的相对位置来定位的,其灵活性要高于 RelativeLayout,而且可以使用鼠标拖动设计,设计上是比较方便,但是国内依然比较少用
PositionLayoutAbsoluteLayout位置布局,子组件通过指定的x/y坐标定位位置
TableLayoutTableLayout表格布局,按照表格排列划分组件
TextTextView文本视图组件,显示普通的文字
ButtonButton按钮视图组件
TextFieldEditText可编辑文本框视图组件
ImageImageView图片视图组件
TabList和TabTabLayoutTab标题栏视图组件,实现多个标签栏/标题,能快速切换
PickerNumberPicker滑动选择器视图组件
DatePickerDatePicker年月日选择器视图组件
TimePickerTimePicker时分秒选择器视图组件
SwitchSwitch开关切换视图组件
RadioButtonRadioButton单选按钮视图组件
RadioContainerRadioGroup单选按钮组,RadioButton的容器,在其包裹下的RadioButton保证只有一个被选项
CheckboxCheckbox多选框视图组件
ProgressBarProgressBar进度条视图组件
RoundProgressBar圆形进度条视图组件,安卓官方没有实现圆形的进度条组件,需要自己实现
ToastDialogToast吐司,窗口上方弹出的文字提示对话框
ScrollViewScrollView(垂直滚动)、HorizontalScrollView(横向滚动)滚动视图组件,用来包裹子组件,子组件超过一定高度或者宽度就能滚动显示
ListContainerListView/RecyclerView列表视图组件,用来显示列表数据
PageSliderViewPager页面滑动切换视图组件,广告切换功能一般会用到
PageSliderIndicatorTabLayout指示器组件,安卓的TabLayout一般配合ViewPager使用
WebViewWebView访问web页面的组件

3、其他类:

鸿蒙安卓描述
HiLogLog日志打印类

4、资源

鸿蒙安卓描述
ResourceTableR资源引用类,studio会自动构建该类。鸿蒙的需要ResourceTable类来引用,安卓直接使用R类资源引用,鸿蒙的没有安卓方便~
ResourceTable.Id_xxR.id.xxJava代码中Id资源引用
ResourceTable.Layout_xxR.layout.xxJava代码中Layout资源引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值