【问题标题】:Xamarin forms press and release recognizer for SKCanvasViewXamarin 为 SKCanvasView 形成新闻和发布识别器
【发布时间】:2023-04-04 19:20:02
【问题描述】:

我是 Xamarin 的新手,想在 Xamarin 表单中实现类似动画圆形“SOS 按钮”之类的东西。预期的功能是,如果用户按住按钮超过 3 秒(倒计时),则会启动一些活动。

我希望 SOS 按钮具有视觉吸引力,因此当用户按住按钮时,按钮周围会出现一些进度动画,指示按下按钮并开始 SOS 操作的倒计时。如果按钮很快被释放,一切都会被重置回初始状态。

我们创建了代表倒计时进度的不同按钮位图(动画),并决定在倒计时期间使用 SKCanvasView 来呈现它们。现在问题开始了,因为我们需要从 SKiaSharp.Views.Forms 程序集中识别在 SKCanvasView 上进行的 Press 和 Release 事件。根据我的调查,只有 TapGestureRecognizer 可用。

您能否推荐并指出如何在 Xamarin 表单中捕获 SKCanvasView 上的新闻和发布事件以便我可以实现上述功能的解决方案?

谢谢

【问题讨论】:

  • 请阅读How to ask a good question。您需要显示您尝试过的代码。就特定代码提供有用的建议要容易得多。 (这将有助于未来的读者 - SO 是关于创建一个知识库)。在这种情况下,显示创建 SKCanvasView 的代码,并附加 TapGestureRecognizer - 并得到这么多的工作。我知道这不是您的目标 - 但它会尽可能接近您的目标,所以请尽可能远地发布。

标签: xamarin.forms skiasharp


【解决方案1】:

经过一些研究,我使用了以下初始方法。我在画布上放置了按钮,并使用它的 Pressed 和 Released 事件在背景画布上绘图。我将继续研究可能是理想的微调解决方案的自定义渲染器。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
             x:Class="SkiaSharpFormsDemos.Basics.TapToggleFillPage"
             Title="Tap Toggle Fill">

    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <skia:SKCanvasView x:Name="Canvas" PaintSurface="OnCanvasViewPaintSurface" VerticalOptions="Fill" HorizontalOptions="Fill">
        </skia:SKCanvasView>
        <Button Text="SOS"
                VerticalOptions="Center"
                HorizontalOptions="Center"
                WidthRequest="160"
                HeightRequest="160" 
                BackgroundColor="#B91F67" 
                BorderColor="Red"
                BorderRadius="120" 
                TextColor="White" 
                FontSize="40" 
                FontAttributes="Bold"
                Grid.Row="0"
                Pressed="OnButtonPressed"
                Released="OnButtonReleased"/>
    </Grid>
</ContentPage>

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2011-11-16
    相关资源
    最近更新 更多