2024年最新郭霖大神分享的鸿蒙初体验(3),拼多多java社招面试

img
img

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

需要这份系统化的资料的朋友,可以戳这里获取

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

ohos:height=“match_parent”
ohos:orientation=“vertical”
ohos:padding=“32”>


也可以通过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);
}

效果如下

[图片上传失败…(image-b04f4e-1600698132343)]

生命周期

下面再来看看主界面的生命周期,实现了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暂时还不了解。

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

配置文件

配置文件是一个命名为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”: [
“wearable”
],
“distro”: {
“deliveryWithInstall”: true,
“moduleName”: “entry”,
“moduleType”: “entry”
},
“abilities”: [
{
“skills”: [
{
“entities”: [
“entity.system.home”
],
“actions”: [
“action.system.home”
]
}
],
“orientation”: “landscape”,
“formEnabled”: false,
“name”: “com.example.helloworld.MainAbility”,
“icon”: “ m e d i a : i c o n " , " d e s c r i p t i o n " : " media:icon", "description": " media:icon","description":"string:mainability_description”,
“label”: “HelloWorld”,
“type”: “page”,
“launchType”: “standard”
}
]
}
}

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


img
img

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

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

需要这份系统化的资料的朋友,可以戳这里获取

[外链图片转存中…(img-5EbASdR8-1715715869470)]

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

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

需要这份系统化的资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值