目录
【习题】运行Hello World工程
判断题
单选题
多选题
该小节补充知识:
【习题】ArkTS基础知识
判断题
单选题
多选题
该小节补充知识:
基本概念
状态管理
页面级变量的状态管理
应用级变量的状态管理:
【习题】运行Hello World工程
及格分85/ 满分100
判断题
1. DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。
正确(True) 错误(False)
回答正确
2. main_pages.json存放页面page路径配置信息。
正确(True) 错误(False)
回答正确
单选题
1. 在stage模型中,下列配置文件属于AppScope文件夹的是?
A. main_pages.json (存储在:XX/entry/src/main/resources/base/profile/main_pages.json)
B. module.json5 (是模块级的配置文件,存储在XX/entry/src/main/module.json5)
C. app.json5
D. package.json
回答正确
多选题
1. 如何在DevEco Studio中创建新项目?
A. 在计算机上创建一个新文件,并将其命名为“new harmonyOS项目”
B. 如果已打开项目,从DevEco Studio菜单选择'file>new>Create Project'
C. 如果第一次打开DevEco Studio,在欢迎页点击“Create new Project”
回答正确
2. module.json5配置文件中,包含了以下哪些信息?
A. ability的相关配置信息
B. 模块名
C. 应用的版本号
D. 模块类型
回答正确
该小节补充知识:
module.json5文件格式大致如下。(应用的版本号信息在app.json5文件当中)
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"phone"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
],
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
}
]
}
}
app.json5
{
"app": {
"bundleName": "com.example.simplevideo",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:app_icon",
"label": "$string:app_name"
}
}
【习题】ArkTS基础知识
及格分85/ 满分100
判断题
1. 循环渲染ForEach可以从数据源中迭代获取数据,并为每个数组项创建相应的组件。
正确(True) 错误(False)
回答正确
2. @Link变量不能在组件内部进行初始化。
正确(True) 错误(False)
回答正确
单选题
1. 用哪一种装饰器修饰的struct表示该结构体具有组件化能力?
A. @Component
B. @Entry
C. @Builder
D. @Preview
回答正确
2. 用哪一种装饰器修饰的自定义组件可作为页面入口组件?
A. @Component
B. @Entry
C. @Builder (ArkUI提供的一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。)
D. @Preview
回答正确
多选题
1. 下面哪些函数是自定义组件的生命周期函数?(ABCDE)
A. aboutToAppear
B. aboutToDisappear
C. onPageShow
D. onPageHide
E. onBackPress
回答正确
2. 下面哪些装饰器可以用于管理自定义组件中变量的状态?(CD)
A. @Component
B. @Entry
C. @State (修饰的状态数据被修改时会触发组件的build方法进行UI界面更新。装饰内容为基本数据类型,类,数组)
D. @Link (父子组件之间的双向数据绑定,父组件的内部状态数据作为数据源,任何一方所做的修改都会反映给另一方。装饰内容为基本数据类型)
回答正确
该小节补充知识:
详情参考官网状态管理
基本概念
-
struct:自定义组件可以基于struct实现,不能有继承关系,对于struct的实例化,可以省略new。
-
装饰器:装饰器给被装饰的对象赋予某一种能力,其不仅可以装饰类或结构体,还可以装饰类的属性。多个装饰器可以叠加到目标元素上,定义在同一行中或者分开多行,推荐分开多行定义。
@Entry
@Component
struct MyComponent {
}
-
build函数:自定义组件必须定义build函数,并且禁止自定义构造函数。build函数满足Builder构造器接口定义,用于定义组件的声明式UI描述。
interface Builder {
build: () => void
}
-
@Component:装饰struct,结构体在装饰后具有基于组件的能力,需要实现build方法来创建UI。
-
@Entry: 装饰struct,组件被装饰后作为页面的入口,页面加载时将被渲染显示。
-
@Preview:装饰struct, 用@Preview装饰的自定义组件可以在DevEco Studio的预览器上进行实时预览,加载页面时,将创建并显示@Preview装饰的自定义组件。
TIPS:在单个源文件中,最多可以使用10个@Preview装饰自定义组件,更多说明请参考查看ArkTS组件预览效果。
-
链式调用:以 "." 链式调用的方式配置UI组件的属性方法、事件方法等。
状态管理
鸿蒙应用中的状态管理分成页面级别的状态管理和应用级别的状态管理。
页面级变量的状态管理
装饰器 |
装饰内容 |
说明 |
---|---|---|
@State |
基本数据类型,类,数组 |
修饰的状态数据被修改时会触发组件的build方法进行UI界面更新。 |
@Prop |
基本数据类型 |
修改后的状态数据用于在父组件和子组件之间建立单向数据依赖关系。修改父组件关联数据时,更新当前组件的UI。 |
@Link |
基本数据类型,类,数组 |
父子组件之间的双向数据绑定,父组件的内部状态数据作为数据源,任何一方所做的修改都会反映给另一方。 |
@Observed |
类 |
@Observed应用于类,表示该类中的数据变更被UI页面管理。 |
@ObjectLink |
被@Observed所装饰类的对象 |
装饰的状态数据被修改时,在父组件或者其他兄弟组件内与它关联的状态数据所在的组件都会更新UI。 |
@Consume |
基本数据类型,类,数组 |
@Consume装饰的变量在感知到@Provide装饰的变量更新后,会触发当前自定义组件的重新渲染。 |
@Provide |
基本数据类型,类,数组 |
@Provide作为数据的提供方,可以更新其子孙节点的数据,并触发页面渲染。 |
应用级变量的状态管理:
AppStorage是整个UI应用程序状态的中心“数据库”,UI框架会针对应用程序创建单例AppStorage对象,并提供相应的装饰器和接口供应用程序使用。
- @StorageLink:@StorageLink(name)的原理类似于@Consume(name),不同的是,该给定名称的链接对象是从AppStorage中获得的,在UI组件和AppStorage之间建立双向绑定同步数据。
- @StorageProp:@StorageProp(name)将UI组件属性与AppStorage进行单向同步,AppStorage中值的更改会更新组件中的属性,但UI组件无法更改AppStorage中的属性值。
【习题】应用程序框架
及格分85/ 满分100
判断题
1. 一个应用只能有一个UIAbility。
正确(True) 错误(False)
回答正确
2. 创建的Empty Ability模板工程,初始会生成一个UIAbility文件。
正确(True) 错误(False)
回答正确
3. 每调用一次router.pushUrl()方法,页面路由栈数量均会加1。
正确(True) 错误(False) (不一定会加1,需要看使用的模式是 单实例 还是 多实例)
回答正确
单选题
1. API9及以上,router.pushUrl()方法,默认的跳转页面使用的模式是哪一种?
A. standard
B. Single
C. Specified
回答正确
2. UIAbility启动模式需要在module.json5文件中配置哪个字段?
A. module
B. skills
C. launchType
D. abilities
回答正确
多选题
1. API9及以上,router.pushUrl()方法的mode参数可以配置为以下哪几种跳转页面使用的模式?
A. Standard
B. Single
C. Specified
回答正确
2. UIAbility的生命周期有哪几个状态?
A. Create
B. WindowStageCreate
C. Foreground
D. Background
E. WindowStageDestroy
F. Destroy
回答正确
3. UIAbility有哪几种的启动模式?
A. multiton
B. singleton
C. specified
该小节补充知识:
UIAbility概述
UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。
router.pushUrl()的mode参数
API9及以上,router.pushUrl()方法新增了mode参数,可以将mode参数配置。router.RouterMode.Single单实例模式和router.RouterMode.Standard多实例模式。
在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存在栈中,页面栈的元素数量不变;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量会加1。
UIAbility的生命周期
为了实现多设备形态上的裁剪和多窗口的可扩展性,系统对组件管理和窗口管理进行了解耦。UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,WindowStageCreate和WindowStageDestroy为窗口管理器(WindowStage)在UIAbility中管理UI界面功能的两个生命周期回调,从而实现UIAbility与窗口之间的弱耦合。
Foreground和Background状态,分别在UIAbility切换至前台或者切换至后台时触发。
分别对应于onForeground回调和onBackground回调。
①:onForeground回调,在UIAbility的UI页面可见之前,即UIAbility切换至前台时触发。可以在onForeground回调中申请系统需要的资源,或者重新申请在onBackground中释放的资源。
②:onBackground回调,在UIAbility的UI页面完全不可见之后,即UIAbility切换至后台时候触发。可以在onBackground回调中释放UI页面不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。
UIAbility的启动模式
(注意此处和上面的pushUrl的模式不同)
对于浏览器或者新闻等应用,用户在打开该应用,并浏览访问相关内容后,回到桌面,再次打开该应用,显示的仍然是用户当前访问的界面。
对于应用的分屏操作,用户希望使用两个不同应用(例如备忘录应用和图库应用)之间进行分屏,也希望能使用同一个应用(例如备忘录应用自身)进行分屏。
对于文档应用,用户从文档应用中打开一个文档内容,回到文档应用,继续打开同一个文档,希望打开的还是同一个文档内容。
基于以上场景的考虑,UIAbility当前支持singleton(单实例模式)、multiton(多实例模式)和specified(指定实例模式)3种启动模式。
【习题】构建漂亮的页面
及格分85/ 满分100
判断题
1. 在Column容器中的子组件默认是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向,在Row容器中的组件默认是按照从左到右的水平方向布局的,其主轴的方向是水平方向。
正确(True) 错误(False)
回答正确
2. List容器可以沿水平方向排列,也可以沿垂直方向排列。
正确(True) 错误(False)
回答正确
3. 当Tabs组件的参数barPosition为BarPosition.End时,页签位于页面底部。
正确(True) 错误(False) (还有vertical属性来控制具体位置)
回答正确
4. Resource是资源引用类型,用于设置组件属性的值,可以定义组件的颜色、文本大小、组件大小等属性。
正确(True) 错误(False)
回答正确
单选题
1. 使用TextInput完成一个密码输入框,推荐设置type属性为下面哪个值?
A. InputType.Normal
B. InputType.Password
C. InputType.Email
D. InputType.Number
回答正确
2. 使用Image加载网络图片,需要以下那种权限?
A. ohos.permission.USE_BLUETOOTH
B. ohos.permission.INTERNET
C. ohos.permission.REQUIRE_FORM
D. ohos.permission.LOCATION
回答正确
3. 下面哪个组件层次结构是错误的?
A. List>ListItem>Column
B. Column>List>ListItem
C. Grid>Row>GridItem
D. Grid>GridItem
回答正确
多选题
1. Row容器的主轴是水平方向,交叉轴是垂直方向,其参数类型为VerticalAlign (垂直对齐),VerticalAlign 定义了以下几种类型?
A. Top
B. Bottom
C. Start
D. End
E. Center
回答正确 (因为相对于垂直方向来说,起始和结束是指Top、Buttom)
2. 下面哪些组件是容器组件?
A. Button
B. Row
C. Column
D. Image
E. TextInput
回答正确
3. 关于Tabs组件页签的位置设置,下面描述正确的是?
A. 当barPosition为Start(默认值),vertical属性为false时(默认值),页签位于容器顶部。
B. 当barPosition为Start(默认值) ,vertical属性为true时,页签位于容器左侧。
C. 当barPosition为End ,vertical属性为false(默认值)时,页签位于容器底部。
D. 当barPosition为End ,vertical属性为true时,页签位于容器右侧。
回答正确
声明式开发范式目前可供选择的组件如下表所示。
组件类型 |
|
---|---|
基础组件 |
Blank、Button、Checkbox、CheckboxGroup、DataPanel、DatePicker、Divider、Gauge、Image、ImageAnimator、LoadingProgress、Marquee、Navigation、Progress、QRCode、Radio、Rating、RichText、ScrollBar、Search、Select、Slider、Span、Stepper、StepperItem、Text、TextArea、TextClock、TextInput、TextPicker、TextTimer、TimePicker、Toggle、Web、XComponent |
容器组件 |
AlphabetIndexer、Badge、Column、ColumnSplit、Counter、Flex、GridContainer、Grid、GridItem、List、ListItem、Navigator、Panel、Refresh、Row、RowSplit、Scroll、SideBarContainer、Stack、Swiper、Tabs、TabContent |
媒体组件 |
Video |
绘制组件 |
Circle、Ellipse、Line、Polyline、Polygon、Path、Rect、Shape |
画布组件文章来源:https://www.toymoban.com/news/detail-860420.html |
Canvas文章来源地址https://www.toymoban.com/news/detail-860420.html |
到了这里,关于鸿蒙开发基础认证 课后习题汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!