如何在XamarinAndroidMVVM/mono中从API后台获取数据之前向页面添加加载程序

如何在XamarinAndroidMVVM/mono中从API后台获取数据之前向页面添加加载程序,xamarin,xamarin.android,mvvmcross,Xamarin,Xamarin.android,Mvvmcross,我能够从API中获取数据,我正在使用它以不同的方式绑定数据,但是当获取数据的速度变慢时,黑屏会显示一段时间,然后数据会被加载,因此我试图纠正这一点,并使数据进入后台(异步等待)然后,当数据在本地可用时,将其绑定到视图。 如何做到这一点?基本思想是使用ActivityIndicator视图,它基本上是每个平台中的加载控件。在不同的情况下,你如何使用它的想法是不同的。我个人将页面内容包装在如下网格中: <ContentPage xmlns:a=""> <Grid>

我能够从API中获取数据,我正在使用它以不同的方式绑定数据,但是当获取数据的速度变慢时,黑屏会显示一段时间,然后数据会被加载,因此我试图纠正这一点,并使数据进入后台(异步等待)然后,当数据在本地可用时,将其绑定到视图。
如何做到这一点?

基本思想是使用
ActivityIndicator
视图,它基本上是每个平台中的加载控件。在不同的情况下,你如何使用它的想法是不同的。我个人将页面内容包装在如下网格中:

<ContentPage xmlns:a="">
    <Grid>
        <ActivityIndicator IsRunning="True" IsVisible="{Binding IsBusy}"/>
        <[The original page content]>
    </Grid>
</ContentPage>
ProgressDialog mDialog = new ProgressDialog(getApplicationContext());
        mDialog.setMessage("Please wait...");
        mDialog.setCancelable(false);
        mDialog.show();
在另一个线程中启动web调用后,您将使用此代码


可能有更好的方法,因此搜索
ProgressDialog
,您会找到它们。

如果您想将
ProgressDialog
MvvmCross
一起使用(我看到了主题下的标记),您可以阅读Stuart的一篇文章对于需要显示活动指示器的屏幕,请遵循此示例布局框架(加载器):



因此,您需要从包含代码端进度条的id控制
FrameLayout
,无论是在活动中,还是在服务调用期间使用fragment使其可见,并在收到响应后将可见性设置为不可见。

我想它适用于Xamarin表单,但我在Xamarin中需要它droid Native。我试图以任何方式实现它,但未能实现。请您在Native中帮助我实现这一点。对不起,我没有对您的问题给予足够的重视。请查看编辑。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:id="@+id/parent_layout">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">
        <TextView
            android:id="@+id/txt1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Text 1"
            android:textSize="18dp"
            android:textColor="@android:color/black"
            android:paddingTop="20dp" />
        <TextView
            android:id="@+id/txt2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Text 2"
            android:textSize="18dp"
            android:textColor="@android:color/black"
            android:paddingTop="20dp" />
    </LinearLayout>

    <FrameLayout
        android:id="@+id/frame_layout"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/loader"
        android:visibility="invisible">
        <ProgressBar
            android:id="@+id/progress_bar"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:indeterminate="true"/>
    </FrameLayout>

</RelativeLayout>