目录

如何在 Maui 中使用 EasyFloat 显示浮窗

EasyFloat Android Sdk

EasyFloat 是一个开源的 Android 浮窗框架,支持可拖拽悬浮窗口,支持页面过滤、自定义动画,可设置单页面浮窗、前台浮窗、全局浮窗,浮窗权限按需自动申请等多种功能 。 EasyFloat 项目在 github 上开源,地址:https://github.com/princekin-f/EasyFloat.

EasyFloat 绑定库

MauiBinding 项目中已为 EasyFloat 创建好了绑定类库,并可在 Nuget 上下载。通过 Nuget 包管理器或 CLI 安装 Chi.MauiBinding.EasyFloat.Android 即可使用 EasyFloat。

如何使用

根据 EasyFloat 文档描述,定义了以下方法用于显示浮窗:

Com.Lzf.Easyfloat.EasyFloat
    .With(your_android_app_activity)
    .SetLayout(your_float_view)
    .Show();

其中 With 方法接收类型为 Android.Content.Context 的安卓平台 Activity,可通过安装 Nuget 包 Microsoft.Maui.Essentials 并调用 Microsoft.Maui.ApplicationModel.Platform.CurrentActivity 获取当前 Activity。

SetLayout 方法接收安卓平台的 Android.Views.View,此参数即为要显示的浮窗。在 Maui 中,可以创建 Maui 的 ContentView,并调用其扩展方法 ToPlatform 将 Maui 的 ContentView 转换为安卓平台的 Android.Views.View

项目实践

初始化项目

创建一个新的 Maui 项目,并添加对Nuget包 Chi.MauiBinding.EasyFloat.AndroidMicrosoft.Maui.Essentials 引用。

创建浮窗

在项目中新建一个 ContentView 命名为 FloatView,修改 XAML 代码调整样式:

<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YOUR_NAMESPACE_TO_FLOAT_VIEW_CLASS.FloatView">

    <Border
        HeightRequest="50"
        WidthRequest="200"
        BackgroundColor="{StaticResource Cyan300Accent}">
        <Border.StrokeShape>
            <RoundRectangle CornerRadius="25"
                            StrokeThickness="0"/>
        </Border.StrokeShape>

        <VerticalStackLayout
            VerticalOptions="Center">
            <Label 
            Text="Welcome to .NET MAUI!"
            VerticalOptions="Center" 
            HorizontalOptions="Center" />
        </VerticalStackLayout>
    </Border>
</ContentView>
替换代码
替换上述代码中的 YOUR_NAMESPACE_TO_FLOAT_VIEW_CLASS 为你创建的 FloatView 所在名称空间。

显示浮窗

更改 MainPage.xaml.cs 中的代码,加入显示浮窗的代码:

private bool _isFloatViewShow = false;
private const string FloatViewTag = "FloatView";
private void OnCounterClicked(object sender, EventArgs e) {
#if ANDROID
    if (!_isFloatViewShow &&
        Microsoft.Maui.ApplicationModel.Platform.CurrentActivity != null &&
        Application.Current?.Handler?.MauiContext != null) {
        EasyFloat
            .With(Microsoft.Maui.ApplicationModel.Platform.CurrentActivity)
            .SetTag(FloatViewTag)
            .SetLayout(new FloatView().ToPlatform(Application.Current.Handler.MauiContext))
            .SetLocation(250, 1000)
            .SetDragEnable(true)
            .Show();
        _isFloatViewShow = true;
    }
    else {
        EasyFloat.Dismiss(FloatViewTag);
        _isFloatViewShow = false;
    }
#endif
}

运行项目并点击按钮,即可弹出浮窗。

./easyfloat.gif
EasyFloat in maui

推荐内容

关于 EasyFloat 的更多用法,请参考 EasyFloat 文档

源码获取

扫描下方二维码,关注公众号捕获异常,回复 maui 获取源码。

关注微信公众号“捕获异常”,获取最新文章推送,提升你的技能。

捕获异常微信公众号二维码