Xamarin.Forms中的ActivityIndicator
目前我正在做一个项目,我必须从一个页面(第1页)导航到另一个页面(第2页)。由于加载第2页需要很长时间,所以我想使用Xamarin.Forms中的ActivityIndicator,xamarin,xamarin.forms,Xamarin,Xamarin.forms,目前我正在做一个项目,我必须从一个页面(第1页)导航到另一个页面(第2页)。由于加载第2页需要很长时间,所以我想使用活动指示器,但根本没有效果 请给我完整的代码来解决我的问题 Page(1) //code for tapping a label and to navigate to page2 void onpage1tapped(Object sender,EventArgs args) { label1.Opacity=0.5; Device.StartTimer(
活动指示器
,但根本没有效果
请给我完整的代码来解决我的问题
Page(1)
//code for tapping a label and to navigate to page2
void onpage1tapped(Object sender,EventArgs args)
{ label1.Opacity=0.5;
Device.StartTimer(TimeSpan.FromMilliseconds(100),()=>{label1.Opacity=1;return false; })
This.Navigate.PushAsync(new Page2());
}
Page(2)
//constructor for page2
public page2
{ InitializeComponent();
ActivityIndicator indicator=new ActivityIndicator{HorizontalOptions=LayoutOptions.CenterAndExpand,Color=Color.Black,IsVisible=false};
StackLayout stk=new StackLayout();
stk.Children.Add(indicator);
//Enabling activityindicator
indicator.IsRunning=true;
indicator.IsVisible=true;
//Below long time taking task
Assembly assembly = GetType().GetTypeInfo().Assembly;
string resource = String.Format("ks.texts.BST.txt");
//string resource = "advjava.texts.insertion.txt";
using (Stream s = assembly.GetManifestResourceStream(resource))
{
using (StreamReader sr = new StreamReader(s))
{
string line;
while (null != (line = sr.ReadLine()))
{
Label l = new Label { Text = line, TextColor = Color.FromRgb(110, 139, 69), FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) };
stk.Children.Add(l);
}
}
}
//Disabling Activity indicator as the long task is complete
indicator.IsVisible=false;
indicator.IsRunning=false;
}
这只是一个示例代码,但它的逻辑是正确的,对我来说非常有用。:) 您可以通过ChaseFlorell在Github上明确说明这一点 工作样本:使用。看一看。。希望能有帮助 是关于如何实现Acr.XamForms.UserDialogs的文档。。
希望能有所帮助问题在于如何读取代码。它将完成,然后执行,但是如果您使用Task.Run,您将能够在不同的线程上运行,并保持活动指示器处于运行状态,以显示您的页面正在加载,并且您的计算机正忙
void onpage1tapped(Object sender,EventArgs args) {
activityIndicator.IsVisible= true;
Task.Run( () => {
label1.Opacity=0.5;
Device.StartTimer(TimeSpan.FromMilliseconds(100),()= {
label1.Opacity=1;returnfalse;
})
This.Navigate.PushAsync(new Page2());
});
}
我已经参考了以下内容,但没有帮助。请给我这个问题的完整代码,而不是建议链接,因为我已经观看了所有联机帮助。基本上,这都是关于页面加载的正确指示。只需显示您的代码?:-)不,这是行不通的。这不仅仅是关于显示活动指示器,而是关于显示它来隐藏一些耗时的过程。请先看一下我的代码。先生,只要看一下我的代码,如果可能的话就更正它。
void onpage1tapped(Object sender,EventArgs args) {
activityIndicator.IsVisible= true;
Task.Run( () => {
label1.Opacity=0.5;
Device.StartTimer(TimeSpan.FromMilliseconds(100),()= {
label1.Opacity=1;returnfalse;
})
This.Navigate.PushAsync(new Page2());
});
}