Viedo
组件
在手机、平板或是智慧屏这些终端设备 上,媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集,还是视频的播放、切换、循环,亦或是相机的预览、拍照等功能,媒体组件都是必不可少的。以视频功能为例,在应用开发过程中,我们需要通过ArkUI提供的Video组件为应用增加基础的视频播放功能。借助Video组件,我们可以实现视频的播放功能并控制其播放状态。常见的视频播放场景包括观看网络上的较为流行的短视频,也包括查看我们存储在本地的视频内容。
构造函数
Video ( value: { src? : string | Resource, currentProgressRate? : number | string | PlaybackSpeed, previewUri? : string | PixelMap | Resource, controller? : VideoController} )
参数名 参数类型 是否必填 说明 src string | Resource 否 视频播放源的路径,可以是本地视频路径或网络路径,也可使用媒体库管理模块查询公共媒体库中的视频文件。 currentProgressRate number 否 视频播放倍速,支持0.75、1.0、1.25、1.75、2.0,默认值为1.0倍速。 previewUri string | PixelMap8+ | Resource 否 视频未播放时的预览图片路径或资源。 controller VideoController 否 视频控制器,用于控制视频播放等相关功能。
@ Component
export default struct VideoPlayer {
private source: string | Resource;
private controller: VideoController;
build ( ) {
Column ( ) {
Video ( {
src: this . source,
controller: this . controller
} )
}
}
}
组件属性
参数名 参数类型 是否必填 默认值 说明 muted boolean 否 false 是否静音。 autoPlay boolean 否 false 是否自动播放。 controls boolean 否 true 控制视频播放的控制栏是否显示。 objectFit ImageFit 否 Cover 设置视频显示模式(可选值:Contain、Cover、Auto、Fill、ScaleDown、None)。 loop boolean 否 false 是否单个视频循环播放。
@ Component
export default struct VideoPlayer {
private source: string | Resource;
private controller: VideoController;
build ( ) {
Column ( ) {
Video ( {
src: this . source,
controller: this . controller
} )
. controls ( false )
. autoPlay ( false )
. loop ( false )
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
事件
事件处理函数 参数类型 说明 onStart(event: () => void) 无参数 播放时触发该事件,执行指定的回调函数。 onPause(event: () => void) 无参数 暂停时触发该事件,执行指定的回调函数。 onFinish(event: () => void) 无参数 播放结束时触发该事件,执行指定的回调函数。 onError(event: () => void) 无参数 播放失败时触发该事件,执行指定的回调函数。 onPrepared(callback: (event?: { duration: number }) => void) event 可选参数:{ duration: number } 视频准备完成时触发该事件,通过duration
参数获取视频时长。 onSeeking(callback: (event?: { time: number }) => void) event 可选参数:{ time: number } 操作进度条过程中上报时间信息,单位为秒。 onSeeked(callback: (event?: { time: number }) => void) event 可选参数:{ time: number } 操作进度条完成后,上报播放时间信息,单位为秒。 onUpdate(callback: (event?: { time: number }) => void) event 可选参数:{ time: number } 播放进度变化时触发该事件,单位为秒,更新时间间隔为250毫秒。 onFullscreenChange(callback: (event?: { fullscreen: boolean }) => void) event 可选参数:{ fullscreen: boolean } 在全屏播放与非全屏播放状态之间切换时触发该事件。
Dialog组件
弹窗类型 简要说明 确认类弹窗 (AlertDialog) 用于向用户显示警告或要求用户确认操作。用户必须做出选择或取消对话框,然后才能继续操作。 选择类弹窗 (TextPickerDialog, DatePickerDialog, TimePickerDialog) 用于在用户需要选择文本、日期或时间时提供方便的选择界面。用户可以从预定义的选项中进行选择。 自定义弹窗 (CustomDialog) 如果内置的弹窗类型不能满足您的需求,您可以创建自定义弹窗,以满足特定的业务需求。这允许您完全控制弹窗的布局和样式。
警告弹窗
Button ( '点击显示弹窗' )
. onClick ( ( ) => {
AlertDialog. show (
{
title: '删除联系人' ,
message: '是否需要删除所选联系人?' ,
autoCancel: false ,
alignment: DialogAlignment. Bottom,
offset: { dx: 0 , dy: - 20 } ,
primaryButton: {
value: '取消' ,
action : ( ) => {
console . info ( 'Callback when the first button is clicked' ) ;
}
} ,
secondaryButton: {
value: '删除' ,
fontColor: '#D94838' ,
action : ( ) => {
console . info ( 'Callback when the second button is clicked' ) ;
}
} ,
cancel : ( ) => {
console . info ( 'Closed callbacks' ) ;
}
}
)
} )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
以下是 AlertDialog
弹窗示例代码中的属性和它们的作用的表格说明:
属性 作用 title 弹窗标题,通常用于简洁地描述弹窗的目的或内容。 message 弹窗消息内容,通常用于提供更详细的信息或指导用户操作。 autoCancel 指定点击遮障层时,是否关闭弹窗,如果设置为 true
,点击遮障层会关闭弹窗,否则不会。 alignment 弹窗在竖直方向的对齐方式,此处设置为 DialogAlignment.Bottom
表示弹窗出现在底部。 offset 弹窗相对于 alignment
位置的偏移量,这里的 { dx: 0, dy: -20 }
表示垂直偏移 -20 像素。 primaryButton 主要按钮配置,包括按钮文本和点击按钮时的回调函数。 secondaryButton 次要按钮配置,包括按钮文本、按钮字体颜色和点击按钮时的回调函数。 cancel 点击遮障层关闭弹窗时的回调函数,通常用于执行额外的关闭操作。
这个表格提供了示例代码中用到的属性和它们的作用。这些属性允许您自定义弹窗的外观和行为,以适应您的应用需求。如果需要更多信息或有其他问题,请随时提问。
文本选择弹窗
TextPickerDialog. show ( {
range: this . fruits,
selected: this . select,
onAccept : ( value: TextPickerResult) => {
this . select = value. index;
console . info ( "TextPickerDialog:onAccept()" + JSON . stringify ( value) ) ;
} ,
onCancel : ( ) => {
console . info ( "TextPickerDialog:onCancel()" ) ;
} ,
onChange : ( value: TextPickerResult) => {
console . info ( "TextPickerDialog:onChange()" + JSON . stringify ( value) ) ;
}
} )
} )
配置选项 作用 range
设置文本选择器的选择范围,即用户可以从中选择的选项列表。 selected
设置初始选中项的索引值。这样可以确保弹窗显示时选中的是上一次确定的选项。 onAccept
回调函数,当用户点击弹窗中的“确定”按钮时触发,允许执行相关操作。 onCancel
回调函数,当用户点击弹窗中的“取消”按钮时触发,允许执行相关操作。 onChange
回调函数,当用户在弹窗中的选择器上滑动以更改当前选中项时触发,允许执行相关操作。
日期选择框
DatePickerDialog. show ( {
start: new Date ( "1900-1-1" ) ,
end: new Date ( "2023-12-31" ) ,
selected: this . selectedDate,
lunar: false ,
onAccept : ( value: DatePickerResult) => {
this . selectedDate. setFullYear ( value. year, value. month, value. day)
console . info ( "DatePickerDialog:onAccept()" + JSON . stringify ( value) )
} ,
onCancel : ( ) => {
console . info ( "DatePickerDialog:onCancel()" )
} ,
onChange : ( value: DatePickerResult) => {
console . info ( "DatePickerDialog:onChange()" + JSON . stringify ( value) )
}
} )
} )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
配置选项 作用 start
设置选择器的起始日期,用户可以从中选择。 end
设置选择器的结束日期,用户可以从中选择。 selected
设置当前选中的日期,以确保弹窗再次弹出时选中的是上一次确定的日期。 lunar
布尔值,指示是否使用农历日期。 onAccept
回调函数,当用户点击弹窗中的“确定”按钮时触发,允许执行相关操作。 onCancel
回调函数,当用户点击弹窗中的“取消”按钮时触发,允许执行相关操作。 onChange
回调函数,当用户在弹窗中的滑动选择器上滑动以更改当前选中日期时触发,允许执行相关操作。
自定义弹框
@ CustomDialog
export default struct CustomDialogWidget {
@ State hobbyBeans: HobbyBean[ ] = [ ] ;
@ Link hobbies: string ;
private controller: CustomDialogController;
aboutToAppear ( ) { ... }
setHobbiesValue ( hobbyBeans: HobbyBean[ ] ) {
let hobbiesText: string = '' ;
hobbiesText = hobbyBeans. filter ( ( isCheckItem: HobbyBean) =>
isCheckItem?. isChecked)
. map ( ( checkedItem: HobbyBean) => {
return checkedItem. label;
} ) . join ( ',' ) ;
this . hobbies = hobbiesText;
}
build ( ) {
Column ( ) {
Text ( $r ( 'app.string.text_title_hobbies' ) ) ...
List ( ) {
ForEach ( this . hobbyBeans, ( itemHobby: HobbyBean) => {
ListItem ( ) {
Row ( ) {
Text ( itemHobby. label) ...
Toggle ( { type: ToggleType. Checkbox, isOn: false } ) ...
. onChange ( ( isCheck) => {
itemHobby. isChecked = isCheck;
} )
}
}
} , itemHobby => itemHobby. label)
}
Row ( ) {
Button ( $r ( "app.string.cancel_button" ) ) ...
. onClick ( ( ) => {
this . controller. close ( ) ;
} )
Button ( $r ( "app.string.definite_button" ) ) ...
. onClick ( ( ) => {
this . setHobbiesValue ( this . hobbyBeans) ;
this . controller. close ( ) ;
} )
}
}
}
}
customDialogController: CustomDialogController = new CustomDialogController ( {
builder: CustomDialogWidget ( {
onConfirm: this . setHobbiesValue . bind ( this ) ,
} ) ,
alignment: DialogAlignment. Bottom,
customStyle: true ,
offset: { dx: 0 , dy: - 20 }
} ) ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
步骤 说明 1. 创建自定义弹窗组件 创建一个新的组件,标识为自定义弹窗组件。 2. 定义组件外观和行为 在弹窗组件中定义弹窗的外观、布局和行为,包括按钮、回调。 3. 创建弹窗控制器 创建一个弹窗控制器,用于管理弹窗的显示和关闭。 4. 配置弹窗控制器 在弹窗控制器中配置弹窗的外观和样式,如位置、大小等。 5. 显示弹窗 使用控制器的方法显示自定义弹窗,通常通过 show
方法触发。 6. 处理用户操作 在弹窗组件中定义回调函数,用于处理用户的操作,例如按钮点击。 7. 关闭弹窗 在弹窗组件中使用控制器的方法关闭弹窗,通常通过 close
方法。 8. 完成和测试 确保自定义弹窗按预期工作,进行测试,确保一切正常。