69506-移动应用开发技术与实战(ArkTS)(微课版)-习题答案_第1页
69506-移动应用开发技术与实战(ArkTS)(微课版)-习题答案_第2页
69506-移动应用开发技术与实战(ArkTS)(微课版)-习题答案_第3页
69506-移动应用开发技术与实战(ArkTS)(微课版)-习题答案_第4页
69506-移动应用开发技术与实战(ArkTS)(微课版)-习题答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1项目1认识鸿蒙一、单选题题号答案说明(1)C“定制化应用”不属于教材所列三大技术理念。(2)CDevEcoStudio基于IntelliJIDEACommunity开源版本构建。二、填空题题号参考答案说明(1)分布式HarmonyOS面向万物互联场景。(2)DevEcoStudioHarmonyOS应用开发的集成开发环境。(3)AI教材列出的六大领域之一。三、简答题“一次开发,多端部署”是指开发者基于一套工程和主要代码完成应用开发,通过多端开发环境、UI适配、设备能力抽象及按需分发机制,使应用能够适配手机、平板等不同终端。其意义在于提高代码复用率,减少重复开发和维护工作,降低多设备应用的开发成本,并有利于保持不同终端之间功能和体验的一致性。

项目2ArkTS快速入门一、单选题题号答案说明(1)Blet用于声明可重新赋值的变量。(2)Aclass用于定义类。(3)Bexport用于导出模块内容。(4)C@Entry用于标记页面入口组件。(5)BButton是ArkUI系统组件。(6)AArkUI使用if…else进行条件渲染。(7)BForEach用于依据数组动态生成UI。(8)B遍历数组生成多个Text组件是ForEach的典型场景。二、填空题题号参考答案说明(1)function函数声明关键字。(2)extends类继承关键字。(3)void表示函数无返回值。(4)@Component用于定义自定义组件。(5)当前元素在数组中的索引索引通常从0开始。三、简答题(1)泛型函数参考代码如下。functionfirstItem<T>(items:T[]):T|undefined{

returnitems.length>0?items[0]:undefined

}

constfirstNumber:number|undefined=firstItem<number>([10,20,30])

constfirstName:string|undefined=firstItem<string>(['张三','李四'])(2)系统组件由ArkUI框架提供,例如Text、Button、Image等,可直接在build()方法中使用;自定义组件由开发者使用@Component等装饰器定义,通常用于封装特定业务界面或复用多个系统组件。系统组件提供基础显示和交互能力,自定义组件强调业务组合、数据传递和结构复用。

项目3常用UI组件(上)一、单选题题号答案说明(1)AfontSize设置字体大小。(2)ARadio通过checked属性设置选中状态。(3)BToggle构造参数isOn用于设置默认开关状态。二、多选题题号答案说明(1)A、B、C、D所列均为Text常用样式属性。(2)A、BButton可绑定onClick和onFocus等通用事件。三、填空题题号参考答案说明(1)Toggle用于实现开关切换。(2)group同一group中的Radio构成单选组。四、编程题(1)图片与文本组合组件参考实现如下。@Entry

@Component

structImageTextDemo{

build(){

Row({space:10}){

Image($r('app.media.logo'))

.width(50)

.height(50)

Text('欢迎使用HarmonyOS')

.fontSize(18)

.fontColor('#000000')

}

.padding(10)

.backgroundColor('#F5F5F5')

.borderRadius(8)

}

}(2)单选按钮组参考实现如下。@Entry

@Component

structRadioGroupDemo{

@Stateselected:string='A'

build(){

Column({space:16}){

Row({space:20}){

this.OptionItem('A')

this.OptionItem('B')

this.OptionItem('C')

}

Text(`当前选择:选项${this.selected}`)

.fontSize(18)

.fontColor('#333333')

}

.padding(20)

}

@Builder

OptionItem(value:string){

Row({space:6}){

Radio({value:value,group:'answer'})

.checked(this.selected===value)

.onChange((checked:boolean)=>{

if(checked){

this.selected=value

}

})

Text(`选项${value}`)

}

}

}

项目4常用UI组件(下)一、单选题题号答案说明(1)Cplaceholder显示输入框为空时的提示文本。(2)Bvalue表示当前进度值。(3)AmaxLength限制最大输入字符数。二、多选题题号答案说明(1)A、B、C、Dplaceholder、fontSize、borderColor和maxLength均可用于TextInput。(2)A、B、C教材所列Progress包括线性、环形和圆形等样式。三、填空题题号参考答案说明(1)title用于设置弹窗标题。(2)onChange用于监听输入内容变化。四、编程题(1)用户登录表单参考实现如下。@Entry

@Component

structLoginDemo{

@Stateusername:string=''

@Statepassword:string=''

build(){

Column({space:16}){

TextInput({placeholder:'请输入用户名',text:this.username})

.onChange((value:string)=>{this.username=value})

TextInput({placeholder:'请输入密码',text:this.password})

.type(InputType.Password)

.onChange((value:string)=>{this.password=value})

Button('登录')

.onClick(()=>{

AlertDialog.show({

title:'登录信息',

message:`用户名:${this.username}

密码:${this.password}`,

primaryButton:{value:'确定',action:()=>{}}

})

})

}

.padding(20)

}

}(2)文件上传进度条参考实现如下。@Entry

@Component

structUploadDemo{

@Stateprogress:number=0

privatetimer:number=-1

startUpload():void{

if(this.timer!==-1){

clearInterval(this.timer)

}

gress=0

this.timer=setInterval(()=>{

gress+=10

if(gress>=100){

gress=100

clearInterval(this.timer)

this.timer=-1

AlertDialog.show({

title:'提示',

message:'上传成功',

primaryButton:{value:'确定',action:()=>{}}

})

}

},200)

}

build(){

Column({space:20}){

Progress({value:gress,total:100,type:ProgressType.Linear})

.width('90%')

Text(`${gress}%`)

Button('开始上传').onClick(()=>{this.startUpload()})

}

.padding(20)

}

}

项目5样式复用与UI结构复用一、单选题题号答案说明(1)C@Extend装饰器用于实现组件级样式复用,可以为指定组件类型创建扩展样式。(2)DHarmonyOS样式优先级遵循:行内样式>页面级样式>全局级样式>组件级样式(3)D@Styles装饰器可以用于定义样式属性集合。根据使用场景不同,可以形成:全局级样式:在global.ets文件中定义,可被整个应用调用;页面级样式:定义在页面或组件文件内部,仅当前文件使用;组件内样式:用于当前组件内部样式复用。二、多选题题号答案说明(1)A、B、CA正确:@Extend支持参数传递,可以根据传入参数设置样式。B正确:@Extend必须绑定具体组件类型。C正确:@Extend支持链式组合。D错误:@Extend不支持跨组件类型复用。(2)A、B@BuilderParam主要用于实现动态UI内容注入,其典型设计模式包括:①高阶组件设计模式通过父组件向子组件传入Builder,实现组件内容动态扩展。②模板方法设计模式在基础组件中定义整体结构,将具体内容通过@BuilderParam交由子组件实现。三、填空题题号参考答案说明(1)页面级样式HarmonyOS样式复用体系包含三级:组件级样式:使用@Extend、面向特定组件;页面级样式:使用@Styles、当前页面或组件内部使用;全局级样式:使用global.ets、整个应用范围使用。(2)后声明HarmonyOS样式合并遵循:后声明的样式覆盖先声明的样式。四、编程题代码请参考附录资源提供的源代码文件。

项目6常用UI布局一、单选题题号答案说明(1)CColumn不会默认让子组件平分剩余空间。(2)BSpaceBetween可使两个子组件分别位于两端。(3)AzIndex控制层叠顺序。(4)BGridRow适合九宫格等栅格菜单。(5)B@State变量变化会触发其绑定UI更新。二、填空题题号参考答案说明(1)dividerList的分割线属性。(2)justifyContent(FlexAlign.SpaceBetween)首尾不留空白,组件间均匀分布。(3)ForEach依据数组动态生成相同结构的组件。(4)idRelativeContainer中作为锚点标识。(5)Blank自动占用主轴剩余空间。三、编程题(1)商品卡片列表参考实现如下。interfaceProduct{

id:number

name:string

price:number

image:Resource

}

@Entry

@Component

structProductListPage{

@Stateproducts:Product[]=[

{id:1,name:'商品A',price:99,image:$r('duct_a')},

{id:2,name:'商品B',price:129,image:$r('duct_b')}

]

loadMore():void{

constid=ducts.length+1

ducts.push({

id:id,

name:`商品${id}`,

price:59+id*10,

image:$r('duct_default')

})

}

build(){

List({space:10}){

ForEach(ducts,(item:Product)=>{

ListItem(){

Row({space:12}){

Image(item.image).width(80).height(80).objectFit(ImageFit.Cover)

Column({space:8}){

Text().fontSize(17)

Text(`¥${item.price}`).fontColor('#E84026')

}.alignItems(HorizontalAlign.Start)

}

.padding(12)

.backgroundColor(Color.White)

.borderRadius(8)

}

},(item:Product)=>item.id.toString())

ListItem(){

Button('加载更多').width('100%').onClick(()=>{this.loadMore()})

}

}

.padding(10)

.width('100%')

.height('100%')

}

}(2)社交媒体个人资料页属于综合布局题,参考实现要点如下:使用Navigation或Stack构建顶部导航区域,并根据滚动位置切换背景色、标题或透明度。页面主体使用Scroll包裹Column;个人信息区由头像、用户名和简介组成。动态、关注、粉丝可使用Tabs或Row构建选项卡,通过@State记录当前选中项。使用GridRow、GridCol或断点信息调整不同设备下的列数、边距和字号,避免固定像素造成界面溢出。滚动事件只更新必要的状态,图片设置合理尺寸,并对较长文本设置maxLines与textOverflow。

项目7状态管理一、单选题题号答案说明(1)B@State声明组件内部状态变量。(2)B双向同步不是@State自身的特点,需要与@Link等配合。(3)B父组件@State与子组件@Link形成双向同步。(4)D@Consume修改会同步影响对应的@Provide状态。(5)CPersistentStorage可使状态在应用重启后保留。二、填空题题号参考答案说明(1)组件级状态、应用级状态教材划分的两种核心模式。(2)单向、双向@Prop单向同步,@Link双向同步。(3)@Observed与@ObjectLink配合观察嵌套对象属性。(4)应用、页面AppStorage面向应用,LocalStorage面向页面范围。三、编程题(1)补全代码如下。Button('-')

.onClick(()=>{

this.count--

})

Button('+')

.onClick(()=>{

this.count++

})(2)主题切换参考实现如下。PersistentStorage.persistProp<boolean>('isDark',false)

@Entry

@Component

structThemePage{

@StorageLink('isDark')isDark:boolean=false

build(){

Column({space:20}){

Text(this.isDark?'深色主题':'浅色主题')

.fontColor(this.isDark?Color.White:Color.Black)

Toggle({type:ToggleType.Switch,isOn:this.isDark})

.onChange((value:boolean)=>{

this.isDark=value

})

}

.width('100%')

.height('100%')

.justifyContent(FlexAlign.Center)

.backgroundColor(this.isDark?'#1F1F1F':'#FFFFFF')

}

}PersistentStorage负责把指定属性持久化到设备存储,@StorageLink与AppStorage中的同名属性保持双向同步,因此应用重新启动后仍可恢复用户上次选择的主题。

项目8导航组件与页面路由一、单选题题号答案说明(1)C在鸿蒙应用开发中,Navigation组件支持多种样式设置,包括背景颜色、标题样式、按钮、自定义标题等。其中,可以通过opacity属性设置导航栏透明度,透明度范围为0~1。A错误,导航栏样式可以通过多种方式进行设置,并非只能使用纯色。B错误,Navigation组件支持自定义按钮,可以通过buttons属性添加自定义功能按钮。D错误,开发者可以通过自定义标题构建器实现标题区域样式调整。(2)B在鸿蒙应用开发中,页面路由配置通常在应用配置文件中完成,用于定义页面之间的关系和页面路径。(3)B嵌套模式:允许页面之间形成层级关系,一个页面可以包含多个子页面。(4)Arouter.pushUrl()传参后,目标页面应通过router.getParams()获取(5)D页面栈管理会影响页面的显示、隐藏和销毁过程,因此会触发相关生命周期函数。二、填空题题号参考答案说明(1)linearGradient设置线性渐变背景的通用属性。(2)router.back()返回上一页面。三、编程题代码请参考附录资源提供的源代码文件。

项目9网络请求与数据持久化一、单选题题号答案说明(1)DURL用于标识和定位网络资源。(2)C教材列出的本地持久化方案为用户首选项、键值数据库和关系数据库。(3)AHTTP状态码200表示请求成功。(4)CHTTP/HTTPS是应用与远程服务器交换数据的常用技术。(5)D开发者个人喜好不能作为存储方案选型依据。二、填空题题号参考答案说明(1)HypertextTransferProtocol标准英文全称,中文为超文本传输协议。(2)http通常从@kit.NetworkKit中导入。(3)设备存储介质(持久化存储)使数据在程序重启后仍可读取。(4)二维表(行和列)关系数据库的基本组织形式。(5)module.json5在requestPermissions中声明网络权限。三、简答题(1)HTTP采用请求—响应方式工作。客户端根据URL向服务器建立连接并发送请求,请求中包含方法、请求头和可选的请求体;服务器接收并处理请求,返回状态码、响应头和响应体;客户端根据状态码判断结果,并对JSON、文本或二进制数据进行解析和展示。使用HTTPS时,还会在传输前建立加密连接。(2)数据持久化的核心作用是将运行时数据保存到设备存储介质,使用户配置、业务数据和登录状态等在应用退出、重新启动或设备重启后仍能恢复,从而保证数据连续性、应用可用性和用户体验。(3)示例一:用户首选项(Preferences)适合保存主题、语言、开关状态等少量、简单的键值数据;示例二:关系数据库适合保存结构化、数据量较大且需要条件查询、排序、关联的数据,如订单、课程或联系人。也可使用键值数据库保存关系较少、按键快速访问或需要分布式同步的数据。

项目10鸿蒙应用模型一、单选题题号答案说明(1)C教材表述Stage模型从HarmonyOS3.1开始新增并成为主推模型。(2)CUIAbility负责界面展示和用户交互。(3)DbundleName是应用唯一包名。(4)DDestroy表示UIAbility实例即将销毁。(5)AWant用于描述要启动的目标组件及携带参数。二、填空题题号参考答案说明(1)灵活布局Stage模型特点之一。(2)Background四个主要状态之一。(3)开发厂商(vendor)app.json5中的基本信息。(4)WindowStage应用界面的顶层窗口容器。(5)UIAbility实例创建onCreate()用于完成初始化。三、简答题(1)Stage模型的核心构成包括:AbilityStage,负责模块级生命周期管理并提供上下文;UIAbility,负责界面展示和用户交互;ExtensionAbility,提供卡片、输入法等非UI扩展能力;WindowStage,管理窗口及页面内容的加载;Context,为组件访问资源、系统服务和应用数据提供上下文环境。各组件协同完成应用启动、界面显示、后台运行和系统能力调用。(2)app.json5是应用级全局配置文件,主要配置bundleName、vendor、versionCode、versionName、应用图标和名称等;module.json5是模块级配置文件,主要配置模块名称、类型、支持设备、页面清单、UIAbility/ExtensionAbility、权限和启动方式等。前者描述整个应用,后者描述具体模块和组件。(3)UIAbility的主要生命周期包括:Create,创建实例并完成初始化;Foreground,进入前台并与用户交互;Background,进入后台,通常暂停界面交互并保存必要状态;Destroy,实例销毁并释放资源。常用回调包括onCreate()、onForeground()、onBackground()和onDestroy(),窗口创建与销毁还会触发onWindowStageCreate()、onWindowStageDestroy()等回调。

项目11鸿蒙应用发布一、单选题题号答案说明(1)B发布前需在华为开发者联盟官网完成实名认证。(2)C应用市场详情页展示名称在创建发布、填写应用基本信息和本地化信息时设置。二、填空题题号参考答案说明(1)CSRCertificateSigningRequest,证书签名请求。(2)10教材正文规定最多添加10张图片。三、简答题鸿蒙应用发布的主要流程为:完成开发者实名认证;在AppGalleryConnect中创建HarmonyOS应用和AppID;使用DevEcoStudio生成密钥库和CSR文件;在AGC申请并下载发布数字证书和Profile文件;在工程中配置包名、release构建模式和签名材料;编译构建带发布签名的.app文件;上传应用包,填写应用介绍、截图、分类、隐私声明、版权及备案等信息;完成测试并提交审核;审核通过后按计划发布到应用市场。

项目12考研通App开发编程题(1)新闻详情功能可按“列表项单击传参—详情页接收参数—展示内容—返回列表”的流程实现。参考代码如下。//HomePage.ets中的列表项

ListItem(){

NewsItemComp({item:item})

}

.onClick(()=>{

router.pushUrl({

url:'pages/NewsDetailPage',

params:{item:item}

})

})//NewsDetailPage.ets

import{router}from'@kit.ArkUI'

import{NewsItem}from'../models/Index'

interfaceNewsDetailParams{

item:NewsItem

}

@Entry

@Component

structNewsDetailPage{

@Stateitem:NewsItem={}asNewsItem

aboutToAppear():void{

constparams=router.getParams()asNewsDetailParams

this.item=params.item

}

build(){

Column({space:16}){

Row(){

Button('返回').onClick(()=>{router.back()})

Text('新闻详情').fontSize(20)

}.width('100%')

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论