鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RemoteWindow)

news/2024/5/30 1:10:10/文章来源:https://blog.csdn.net/m0_64420071/article/details/136662202

远程控制窗口组件,可以通过此组件控制应用窗口,提供启动退出过程中控件动画和应用窗口联动动画的能力。

说明:

该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

该组件为系统接口。

子组件

不可以包含子组件。

接口

RemoteWindow(target: WindowAnimationTarget)

通过窗口动画对象创建组件。

参数:

参数名参数类型必填参数描述
targetWindowAnimationTarget需要控制的动画窗口的描述。

WindowAnimationTarget

目标窗口,用来远程控制实现动画。

参数类型描述
bundleNamestring动画窗口所对应的进程。
abilityNamestring动画窗口所对应的Ability。
windowBoundsRRect动画窗口实际大小。
missionIdnumber任务ID。

RRect

圆角矩形。

参数类型描述
leftnumber动画窗口左上角相对于屏幕横坐标。
topnumber动画窗口左上角相对于屏幕纵坐标。
widthnumber动画窗口宽度大小。
heightnumber动画窗口高度大小。
radiusnumber动画窗口圆角大小。

属性

支持通用属性。

事件

支持通用事件。

示例

RemoteWindow需要接收由windowAnimationManager设置的WindowAnimationController对象传入对应窗口WindowAnimationTarget对象,可以创建一个RemoteWindowExample.ets作为示例组件将RemoteWindow组件和传入的WindowAnimationTarget对象关联封装起来。 由于RemoteWindow只能用于系统应用程序Launcher中,可以将RemoteWindowExample组件放置于Launcher的EntryView.ets页面的build函数中,编译Launcher, 然后推送Launcher安装包到设备系统中运行。

// WindowAnimationControllerImpl.ets 文件
import windowAnimationManager from '@ohos.animation.windowAnimationManager';export default class WindowAnimationControllerImpl implements windowAnimationManager.WindowAnimationController {onStartAppFromLauncher(startingWindowTarget: windowAnimationManager.WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void{console.log(`remote window animaion onStartAppFromLauncher`);finishedCallback.onAnimationFinish();}onStartAppFromRecent(startingWindowTarget: windowAnimationManager.WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {console.log(`remote window animaion onStartAppFromRecent`);finishedCallback.onAnimationFinish();}onStartAppFromOther(startingWindowTarget: windowAnimationManager.WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {console.log(`remote window animaion onStartAppFromOther`);finishedCallback.onAnimationFinish();}onAppTransition(fromWindowTarget: windowAnimationManager.WindowAnimationTarget,toWindowTarget: windowAnimationManager.WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void{console.log(`remote window animaion onAppTransition`);finishedCallback.onAnimationFinish();}onMinimizeWindow(minimizingWindowTarget: windowAnimationManager.WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {console.log(`remote window animaion onMinimizeWindow`);finishedCallback.onAnimationFinish();}onCloseWindow(closingWindowTarget: windowAnimationManager.WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {console.log(`remote window animaion onCloseWindow`);finishedCallback.onAnimationFinish();}onScreenUnlock(finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {console.log(`remote window animaion onScreenUnlock`);finishedCallback.onAnimationFinish();}onWindowAnimationTargetsUpdate(fullScreenWindowTarget: windowAnimationManager.WindowAnimationTarget, floatingWindowTargets: Array<windowAnimationManager.WindowAnimationTarget>): void {console.log('onWindowAnimationTargetsUpdate, the fullScreenWindowTarget is: ' + fullScreenWindowTarget);console.log('onWindowAnimationTargetsUpdate, the floatingWindowTargets are: ' + floatingWindowTargets);}
}
// RemoteWindowExample.ets 文件
import windowAnimationManager from '@ohos.animation.windowAnimationManager';
import WindowAnimationControllerImpl from './WindowAnimationControllerImpl';@Entry
@Component
export default struct RemoteWindowExample {@State target:WindowAnimationTarget | undefined = undefined // 通过windowAnimationManager获取aboutToAppear(): void {let controller: WindowAnimationControllerImpl = new WindowAnimationControllerImpl();windowAnimationManager.setController(controller);controller.onStartAppFromLauncher = (startingWindowTarget: WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback) => {console.log(`RemoteWindowExample: remote window animaion onStartAppFromLauncher`);this.target = startingWindowTarget;finishedCallback.onAnimationFinish();}controller.onStartAppFromRecent = (startingWindowTarget: WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback) => {console.log(`RemoteWindowExample: remote window animaion onStartAppFromRecent`);this.target = startingWindowTarget;finishedCallback.onAnimationFinish();}controller.onStartAppFromOther = (startingWindowTarget: WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback) => {console.log(`RemoteWindowExample: remote window animaion onStartAppFromOther`);this.target = startingWindowTarget;finishedCallback.onAnimationFinish();}controller.onAppTransition = (fromWindowTarget: WindowAnimationTarget, toWindowTarget: WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback) => {console.log(`RemoteWindowExample: remote window animaion onAppTransition`);this.target = toWindowTarget;finishedCallback.onAnimationFinish();}controller.onMinimizeWindow = (minimizingWindowTarget: WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback) => {console.log(`RemoteWindowExample: remote window animaion onMinimizeWindow`);this.target = minimizingWindowTarget;finishedCallback.onAnimationFinish();}controller.onCloseWindow = (closingWindowTarget: WindowAnimationTarget,finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback) => {console.log(`RemoteWindowExample: remote window animaion onCloseWindow`);this.target = closingWindowTarget;finishedCallback.onAnimationFinish();}}build() {Column() {if(this.target){RemoteWindow(this.target).scale({ x: 0.5, y: 0.5 }) // 仅用于可见效果的演示目的,正常使用须 .scale({ x: 1, y: 1 }).position({ x: px2vp(this.target?.windowBounds.left), y: px2vp(this.target?.windowBounds.top) }).width(px2vp(this.target?.windowBounds.width)).height(px2vp(this.target?.windowBounds.height))}}}
}

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了:鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

腾讯T10级高工技术,安卓全套VIP内容 →Android全套学习资料

腾讯T10级高工技术,安卓全套VIP课程

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1005870.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Axure高保真原型】下拉列表切换图表

今天和大家分享通过下拉列表动态切换统计图表的原型模板&#xff0c;我们可以通过下拉列表选择要显示的图表&#xff0c;包括柱状图、条形图、饼图、环形图、折线图、曲线图、面积图、阶梯图、雷达图&#xff1b;而且图表数据可以在左侧表格中动态维护&#xff0c;包括增加修改…

基于php的用户登录实现(v2版)(持续迭代)

目录 版本说明 数据库连接 登录页面&#xff1a;login.html 登录处理实现&#xff1a;login.php 用户欢迎页面&#xff1a;welcome.php 密码修改页面&#xff1a;change_password.html 修改执行&#xff1a;change_password.php 用户注册页面&#xff1a;register.html …

lvs+keepalive

虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP) VRRP能够在不改变组网的情况下&#xff0c;将多台路由器虚拟成一个虚拟路由器&#xff0c;通过配置虚拟路由器的IP地址为默认网关&#xff0c;实现网关的备份。 协议版本: VRRPv2&#xff08;常用&…

网络通信另个角度的认识(进程间通信),端口号(为什么要有,和pid的关系,分类,如何封装,和进程的定位原理+对应关系),客户端如何拿到服务端的port

目录 另一个角度认识网络通信 端口号 引入 -- 为什么要有端口号 问题 解决 端口号和pid 举例 介绍 分类 知名端口 注册端口 动态端口 客户端如何知道服务端的端口号 封装端口号 定位原理 进程和端口号的对应关系 数据如何被上层进程读到 另一个角度认识网络…

深入理解Vue3中利用mitt:实现轻量级事件监听与触发

在 Vue3 中&#xff0c;父组件和子组件之间可以通过一些方式进行通信。其中&#xff0c;父组件向子组件通信主要有两种方式&#xff1a;传值和调用子组件的方法。 一、父组件向子组件传值 当父组件需要向子组件传递数据时&#xff0c;可以通过属性绑定的方式来实现。父组件可…

【Redis】redis持久化

redis 持久化 Redis是内存数据库&#xff0c;数据都是存储在内存中&#xff0c;为了避免进程退出导致数据的永久丢失&#xff0c;需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘&#xff1b;当下次Redis重启时&#xff0c;利用持久化文件实现数据恢复。除此之…

leetcode 热题 100_删除链表的倒数第 N 个结点

题解一&#xff1a; 递归&#xff1a;利用递归栈逆向遍历链表&#xff0c;并用全局变量记录当前遍历的是倒数第几位节点&#xff0c;当遍历到待删节点的上一位节点时&#xff0c;node.nextnode.next.next删除待删节点。需要注意当删除的是头节点时&#xff0c;直接return head.…

Codeforces Round 933 (Div. 3) A~D

比赛链接 : codeforces.com/contest/1941 A . Rudolf and the Ticket 直接暴力即可 ; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \n #define lowbit(x) (x&(-x)) #define sz(a) (int)a.size() #define p…

Docker进阶:深入了解容器数据卷

Docker进阶&#xff1a;深入了解容器数据卷 一、前言二、容器数据卷的作用三、容器数据卷的使用方法四、实战--使用docker部署前端项目&#xff08;数据卷挂载&#xff09;4.1 重要&#xff1a;准备工作&#xff0c;先在本地创建挂载目录4.2 启动一个临时的nginx容器&#xff0…

“光谱视界革新:ChatGPT在成像光谱遥感中的智能革命“

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

前端去除网页水印

按F12&#xff0c;打开开发者工具面板&#xff0c;然后直接在样式搜索backgroud 然后直接取消backgroud 的复选框即可。

多数问题求解之蒙特卡洛与分治法

多数问题&#xff08;Majority Problem&#xff09;是一个有多种求解方法的经典问题&#xff0c;其问题定义如下&#xff1a; 给定一个大小为 n n n的数组&#xff0c;找出其中出现次数超过 n / 2 n/2 n/2的元素 例如&#xff1a;当输入数组为 [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] […

SkyEye:助力飞行器状态控制系统仿真

飞行器与常见的航天器一样&#xff0c;属于安全关键领域的大型复杂设备&#xff0c;对安全性、可靠性有着极高的要求。为保证稳定飞行&#xff0c;需要对目标对象进行实时跟踪&#xff0c;通过发出正确的修正偏差指令来操纵飞行器改变飞行姿态&#xff0c;因此对飞行器状态控制…

leetcode刷题(javaScript)——分治思想(二分查找、快速排序)相关场景题总结

分治思想是一种将问题分解成更小的子问题&#xff0c;然后解决子问题并将结果合并的算法设计策略。二分查找、快速排序和折半查找都属于分治思想的经典算法。在leetcode里&#xff0c;分治思想一般结合其他场景出现&#xff0c;构成复合型题目。但是在看题时一定要了解能否用分…

考研数学|武忠祥「高数」+李永乐「线代」刷题指南

如果你全程都决定跟着武忠祥老师和李永乐老师&#xff0c;一张表格教会你如何买资料&#xff0c;听课以及使用这些资料&#xff1a; 上面的方法很详细了&#xff0c;大家照着做就行了&#xff0c;关键是大家实际操作的过程中可能会遇到各种问题&#xff0c;这也是我在考研备考中…

隧道技术和代理技术(三)

隧道技术 知识点 -隧道技术&#xff1a;解决不出网协议上线的问题&#xff08;利用出网协议进行封装出网&#xff09; -代理技术&#xff1a;解决网络通讯不通的问题&#xff08;利用跳板机建立节点后续操作&#xff09; 内环境示意图&#xff0c;方便理解 思路&#xff1a;…

【LeetCode每日一题】2864. 最大二进制奇数

文章目录 [2864. 最大二进制奇数](https://leetcode.cn/problems/maximum-odd-binary-number/)思路&#xff1a;代码1&#xff1a; 2864. 最大二进制奇数 思路&#xff1a; 1.拼贴字符串。 2.遍历字符串s,统计1的个数。 3.如果只有一个1&#xff0c;将1放在末尾&#xff0c;…

java多线程(主要是如何创建线程,多线程,以及多线程的同步机制,同步机制主要是通过锁实现,就是synchronized关键字)

多线程 1、线程相关概念 &#xff08;1&#xff09;程序&#xff08;program&#xff09; 程序视为了完成特定的任务&#xff0c;用某种语言编写的一组指令的集合。也就是我们平时日常生活中写的代码。 &#xff08;2&#xff09;进程 进程&#xff1a; 是具有一定独立功能…

日常开发笔记20240338

文章目录 1.mybatis的Param注解2.mybatis的#{}和${}的使用与区别3. mybatis中where语句有可选条件有必选条件&#xff0c;怎么写4.mybatis的domain对象5.mapper接口返回Integer的问题6.bigdecimal的小数点位数7.vue的前端panel组件换图标 1.mybatis的Param注解 在写java的myba…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Rating)

提供在给定范围内选择评分的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Rating(options?: { rating: number, indicator?: boolean }) 从API version 9开始&#…