0
我试图执行一个异步动画,它不阻塞主线程。 我试图做的情景:非阻塞UI线程动画
用户点击一个按钮,并在一段时间后视图模型属性 改变其状态。
在MvxFragment视图我订阅
OnPropertyChanged
事件,如果所需的属性已更改,我执行动画(显示通知 用户几秒钟)。
我坚持在动画过程中的应用程序没有响应:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignore = base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.MyView, null);
ViewModel.WeakSubscribe(PropertyChanged);
return view;
}
private void PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "IsSaved")
{
if (ViewModel.IsSaved)
{
ShowSavedPopup();
}
}
}
private void ShowSavedPopup()
{
var dispatcher = Mvx.Resolve<IMvxMainThreadDispatcher>();
dispatcher.RequestMainThreadAction(() =>
{
var popupView = View.FindViewById(Resource.Id.popup);
popupView.Alpha = 0.0f;
popupView.Animate()
.SetDuration(4000)
.Alpha(1f)));
});
}
我也尝试了不同的方式来运行动画异步,但他们没有工作(等待Task.Run, Activity.RunOnUiThread ..)。
我如何运行我的动画异步?