• xamarin UWP设置HUD加载功能


    使用xamarin开发的时候经常用到加载HUD功能,就是我们常见的一个加载中的动作,Android 下使用 AndHUD , iOS 下使用 BTProgressHUD, 这两个在在 NuGet 上都有。在UWP中本身提供的方式,并不能完全满足我们的需求,因此我们需要使用Dependencies来重新定义平台的HUD功能,这时可以使用Popup来完成。popup本身是一个弹窗控件,可以在控件中添加各种其他的控件,这为我们自定义弹窗带来了方便。首先我们要把popup设置大小为应用App所见区域的大小。再在Popup的中间加载一个Grid,Grid里面加载所需多文字和图片就可以来。实例代码如下:

    using BS.Dependencies;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Xamarin.Forms;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Media;
    using Windows.UI;
    using Windows.UI.Xaml;
    
    [assembly: Dependency(typeof(BS.UWP.Dependencies.HUDUWP))]
    namespace BS.UWP.Dependencies
    {
        public class HUDUWP : IHUD
        {
            private Windows.UI.Xaml.Controls.Grid Container = new Windows.UI.Xaml.Controls.Grid() {
                Background = new SolidColorBrush(Colors.Black),
                CornerRadius = new CornerRadius(10),
                Padding = new Windows.UI.Xaml.Thickness(10),
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center,
            };
    
            private Popup Popup = null;
    
            public HUDUWP()
            {
                this.Popup = new Popup()
                {
                    Child = new Border()
                    {
                        Width = Window.Current.Bounds.Width,
                        Height = Window.Current.Bounds.Height,
                        Background = new SolidColorBrush(Colors.Gray),
                        Opacity = 0.6,
                        HorizontalAlignment = HorizontalAlignment.Center,
                        VerticalAlignment = VerticalAlignment.Center,
                        Child = this.Container,
                    }
                };
            }
    
    
            public void Show()
            {
                this.Show("Hello World", 60000);
            }
    
            public void Show(string message)
            {
                this.Show(message, 60000);
            }
            public void Show(string message, int delay = 1000)
            {
                this.Popup.IsOpen = true;
                this.Container.Children.Clear();
                
                this.Container.Children.Add(new TextBlock()
                {
                    Text = message,
                    Foreground = new SolidColorBrush(Colors.White),
                    FontSize = 20
                });

                Task.Delay(delay)
                    .ContinueWith(t =>
                      {
                         Device.BeginInvokeOnMainThread(() =>
                          {
                             this.Popup.IsOpen = false;
                          });
                      }
                 );

            }
    
            public void Dismiss()
            {
                this.Popup.IsOpen = false;
            }
        }
    }

    已上代码经本人测试可以使用,希望对你开发有用。同时修改下上面代码在win8.1和winPhone平台下都可以使用。如有更好的方法请留言。

  • 相关阅读:
    3配置
    1开机初始化配置
    shell <<EOF
    Sun SPARC Enterprise M5000 启动步骤
    CISCO MDS – Useful ‘Show’ Commands
    oracle 内存不足处理
    mysql 日志类型
    MySQL 学习
    抓取进程中包括其所有线程的iowait时间
    每天网络半小时(MAC数据包在哪里合并的)
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/5760364.html
Copyright © 2020-2023  润新知