HarmonyOS鸿蒙Next中实现机器人图片悬浮在app上面并且可随意拖动
HarmonyOS鸿蒙Next中实现机器人图片悬浮在app上面并且可随意拖动 需求是实现机器人图片悬浮在app上面,并且可随意拖动
实现悬浮窗功能
悬浮窗拖动 Demo
import window from '@ohos.window';
// 悬浮窗加载页面代码
interface Position {
x: number,
y: number
}
@Entry
@Component
struct FloatContent {
@State message: string = '悬浮窗';
private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.All });
@State @Watch("moveWindow") windowPosition: Position = { x: 0, y: 0 };
floatWindow: window.Window = window.findWindow("floatWindow");
build() {
Row() {
Text(this.message)
}
.width('100%')
.height('100%')
.gesture(PanGesture(this.panOption)
.onActionStart((event: GestureEvent) => {
console.info('Pan start');
})
.onActionUpdate((event: GestureEvent) => {
this.windowPosition.x += event.offsetX;
this.windowPosition.y += event.offsetY;
})
.onActionEnd(() => {
console.info('Pan end');
})
)
.border({ style: BorderStyle.Dotted })
.backgroundColor(Color.Yellow);
}
moveWindow() {
this.floatWindow.moveWindowTo(this.windowPosition.x, this.windowPosition.y);
}
aboutToAppear() {
this.floatWindow = window.findWindow("floatWindow");
}
}
参考链接
- 可以参考 悬浮窗拖动和吸附动画 Demo
更多关于HarmonyOS鸿蒙Next中实现机器人图片悬浮在app上面并且可随意拖动的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中实现机器人图片悬浮在App上并且可随意拖动,可以通过使用WindowManager
和Component
来实现。首先,创建一个Image
组件用于显示机器人图片。然后,使用WindowManager
将该图片添加到系统窗口中,使其能够悬浮在其他App之上。通过监听触摸事件,更新图片的位置以实现拖动效果。
具体步骤如下:
-
创建Image组件:在布局文件中定义一个
Image
组件,设置机器人图片资源。 -
使用WindowManager:通过
WindowManager
的addWindow
方法,将Image
组件添加到系统窗口中。需要设置窗口的LayoutParams
,包括窗口类型为TYPE_APPLICATION_OVERLAY
,使其能够悬浮在其他App之上。 -
处理触摸事件:为
Image
组件设置OnTouchListener
,监听触摸事件。在onTouch
方法中,根据触摸点的位置更新Image
组件的坐标,实现拖动效果。 -
更新窗口位置:在拖动过程中,通过
WindowManager
的updateViewLayout
方法,实时更新Image
组件的位置。
示例代码片段如下:
import window from '@ohos.window';
import image from '@ohos.image';
let windowManager = window.getWindowManager();
let imageComponent = image.createImageComponent();
let layoutParams = new window.WindowManager.LayoutParams();
layoutParams.type = window.WindowType.TYPE_APPLICATION_OVERLAY;
windowManager.addWindow(imageComponent, layoutParams);
imageComponent.setOnTouchListener((event) => {
let x = event.getX();
let y = event.getY();
layoutParams.x = x;
layoutParams.y = y;
windowManager.updateViewLayout(imageComponent, layoutParams);
return true;
});
通过以上步骤,可以在HarmonyOS鸿蒙Next中实现机器人图片悬浮在App上并且可随意拖动。
在HarmonyOS鸿蒙Next中,可以通过以下步骤实现机器人图片悬浮在App上并随意拖动:
- 创建悬浮窗:使用
WindowManager
创建悬浮窗,并设置TYPE_APPLICATION_OVERLAY
类型,使其悬浮在其他应用之上。 - 添加图片:在悬浮窗中加载机器人图片,使用
ImageView
控件显示图片。 - 实现拖动:通过监听触摸事件(
OnTouchListener
),计算手指移动的偏移量,动态更新悬浮窗的位置,实现拖动效果。 - 权限配置:在
AndroidManifest.xml
中声明SYSTEM_ALERT_WINDOW
权限,并在运行时动态请求该权限。
通过这些步骤,即可实现机器人图片悬浮且可随意拖动的功能。