鸿蒙开发初体验(Android开发必看),2024年最新阿里大牛教你自己写HarmonyOS鸿蒙第三方库

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

gradle安装成功,但在编译过程中可能出现build失败,错误如下:

ERROR: Cause: mirrors.huaweicloud.com:443 failed to respond

解决方式就是把所有的代理先关掉,然后你就会发现如丝般顺滑。

安装完DevEco Studio后,打开后可以看到界面和Android Studio非常相似

1.布局开发

一切看起来非常的熟悉,可以使用Java或JS等语言进行开发,布局可以通过XML创建,size单位是vp

<?xml version="1.0" encoding="utf-8"?>




也可以通过Java代码直接创建,点击事件都是如此的亲切

@Override
public void onStart(Intent intent) {
super.onStart(intent);
// 步骤1 声明布局
DirectionalLayout directionalLayout = new DirectionalLayout(context);
// 步骤2 设置布局大小
directionalLayout.setWidth(ComponentContainer.LayoutConfig.MATCH_PARENT);
directionalLayout.setHeight(ComponentContainer.LayoutConfig.MATCH_PARENT);
// 步骤3 设置布局属性及ID(ID视需要设置即可)
directionalLayout.setOrientation(Component.VERTICAL);
directionalLayout.setPadding(32, 32, 32, 32);

Text text = new Text(context);
text.setText(“My name is Text.”);
text.setTextSize(50);
text.setId(100);
// 步骤4.1 为组件添加对应布局的布局属性
DirectionalLayout.LayoutConfig layoutConfig = new DirectionalLayout.LayoutConfig(LayoutConfig.MATCH_CONTENT,
LayoutConfig.MATCH_CONTENT);
layoutConfig.alignment = LayoutAlignment.HORIZONTAL_CENTER;
text.setLayoutConfig(layoutConfig);

// 步骤4.2 将Text添加到布局中
directionalLayout.addComponent(text);

// 类似的添加一个Button
Button button = new Button(context);
layoutConfig.setMargins(0, 50, 0, 0);
button.setLayoutConfig(layoutConfig);
button.setText(“My name is Jackie.”);
button.setTextSize(50);
button.setId(100);
ShapeElement background = new ShapeElement();
background.setRgbColor(new RgbColor(0, 125, 255));
background.setCornerRadius(25);
button.setBackground(background);
button.setPadding(10, 10, 10, 10);
button.setClickedListener(new Component.ClickedListener() {
@Override
// 在组件中增加对点击事件的检测
public void onClick(Component Component) {
// 此处添加按钮被点击需要执行的操作
}
});
directionalLayout.addComponent(button);

// 步骤5 将布局作为根布局添加到视图树中
super.setUIContent(directionalLayout);
}

首页的布局如下,通过Java代码创建

@Override
public void onStart(Intent intent) {
super.onStart(intent);
System.out.println(“onStart”);
LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
myLayout.setLayoutConfig(config);
ShapeElement element = new ShapeElement();
element.setRgbColor(new RgbColor(255, 255, 255));
myLayout.setBackground(element);

Text text = new Text(this);
text.setLayoutConfig(config);
text.setText(“CT Jackie”);
text.setTextColor(new Color(0xFF000000));
text.setTextSize(50);
text.setTextAlignment(TextAlignment.CENTER);
myLayout.addComponent(text);
super.setUIContent(myLayout);
}

效果如下:

2.生命周期

下面再来看看主界面的生命周期,实现了ILifecycle接口,生命周期状态一共有七种

public static enum Event {
UNDEFINED,
ON_START,
ON_INACTIVE,
ON_ACTIVE,
ON_BACKGROUND,
ON_FOREGROUND,
ON_STOP;
private Event() {
}
}

界面启动时调用onStart()和onActive()

2020-09-13 21:42:10.266 25547-25547[表情] I/System.out: onStart
2020-09-13 21:42:10.284 25547-25547[表情] I/System.out: onActive

点击返回键时调用

2020-09-13 21:42:35.847 25547-25547/com.example.helloworld I/System.out: onInactive
2020-09-13 21:42:35.917 25547-25547/com.example.helloworld I/System.out: onBackground
2020-09-13 21:42:35.920 25547-25547/com.example.helloworld I/System.out: onStop

至于UNDEFINED和ON_FOREGROUND暂时还不了解。

3.Gradle任务(Task)

甚至连gradle的Task都非常类似,打包命令是assembleDebug/Release

Task :entry:preBuild
Task :entry:compileDebugNativeWithCmake
Task :entry:collectDebugDependencies
Task :entry:mergeDebugResources
Task :entry:mergeDebugProfile
Task :entry:compileDebugResources
Task :entry:compileDebugIdl
Task :entry:compileDebugRFile
Task :entry:processDebugJavaResource
Task :entry:compileDebugJavaWithJavac
Task :entry:mergeDebugJavaResource
Task :entry:generateDebugClassesJar
Task :entry:mergeDebugProjectDex
Task :entry:generateDebugShell
Task :entry:processDebugShellManifest
Task :entry:compileDebugShellResources
Task :entry:linkDebugShellResources
Task :entry:compileDebugShellJavaWithJavac
Task :entry:mergeDebugShellDex
Task :entry:packageDebugShell
Task :entry:packageDebugSimplifyShell
Task :entry:validateDebugSigning
Task :entry:signDebugShell
Task :entry:packageDebugHap
Task :entry:signDebugHap
Task :entry:assembleDebug

4.配置文件

配置文件是一个命名为config.json的文件,配置应用的一些信息

{
“app”: {
“bundleName”: “com.example.helloworld”,
“vendor”: “example”,
“version”: {
“code”: 1,
“name”: “1.0”
},
“apiVersion”: {
“compatible”: 3,
“target”: 3
}
},
“deviceConfig”: {
“default”: {

}
},
“module”: {
“package”: “com.example.helloworld”,
“name”: “.HelloWorld”,
“reqCapabilities”: [
“video_support”
],
“deviceType”: [

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-BifkHZhP-1713465915576)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值