我想创建一个" loader"在我的ContentView加载时显示。
在YouTube应用中使用此功能:
如您所见,当我点击标签按钮时,会出现一个加载程序。
但是在Xamarin.Forms中,我不知道该怎么做,因为ContentView没有OnAppearing隐藏我的加载器。 (因为我的加载器将在我的ContentView的同时显示)。 当我点击我的按钮时,我的应用程序"冻结了#34;在200ms左右...不利于用户体验...
这就是为什么我来这里,显示我的内容的最佳做法是什么?
由于
答案 0 :(得分:1)
您可以在XAML的绝对布局中添加加载图像和网格(或任何您需要的),如下所示:
<AbsoluteLayout>
<Grid ... IsVisible="{Binding IsBusy, Converter={StaticResource InvertBooleanConverter}}"> ... </Grid>
<Image ... IsVisible="{Binding IsBusy}" />
</AbsoluteLayout>
在ViewModel中创建一个名为IsBusy的属性,如下所示:
bool _isBusy = true;
public bool IsBusy
{
get
{
return _isBusy;
}
set
{
_isBusy = value;
OnPropertyChanged(nameof(IsBusy));
}
}
当数据完全加载时,在ViewModel中将IsBusy设置为false。这会导致图像一直显示,直到数据加载,当它被满满的数据替换时。
您需要像这样创建InvertBooleanConverter转换器:
public class InvertBooleanConverter : IValueConverter
{
public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !(bool)value;
}
public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !(bool)value;
}
}
答案 1 :(得分:0)
我使用此插件来实现加载屏幕,请查看https://github.com/rotorgames/Rg.Plugins.Popup