У меня есть следующий загрузчик xml -
custom_progress_dialog.xml (layout)
<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progres"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="#000000" >
<ProgressBar
android:indeterminate="true"
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:layout_centerInParent="true"
android:indeterminateDrawable="@drawable/custom_progress_bar" />
</RelativeLayout>
custom_progress_bar.xml (drawable)
<?xml version="1.0" encoding="utf-8" ?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360">
<shape android:shape="ring" android:innerRadiusRatio="3"
android:thicknessRatio="8" android:useLevel="false">
<size
android:width="76dip"
android:height="76dip" />
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="@android:color/transparent"
android:endColor="#00FF00"
android:angle="0" />
</shape>
</rotate>
Затем есть метод ShowLoading
-
public static Dialog ShowLoading(Context context)
{
Dialog dialog = new Dialog(context, Android.Resource.Style.ThemeTranslucentNoTitleBar);
dialog.SetContentView(Resource.Layout.custom_progress_dialog);
dialog.Window.SetGravity(GravityFlags.Center);
dialog.SetCancelable(true);
dialog.CancelEvent += delegate { dialog.Dismiss(); };
dialog.Show();
return dialog;
}
Я пытаюсь показать индикатор выполнения при звонке на веб-API, например, -
public void testCall()
{
var progressDialog = ShowLoading(_instance);
string _apiUrl = "https://www.my-web-api-url.com";
var request = (HttpWebRequest)WebRequest.Create(_apiUrl);
request.Method = "GET";
using (var response = _request.HttpWebResponse(request))
{
var objectResponse = _request.HttpWebResponseBody(response);
}
progressDialog.Dismiss();
}
Проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю веб-службу, она не показывает индикатор выполнения, и приложение по существу останавливается до завершения вызова веб-API.
Я даже удалилвызов веб-API из метода для проверки правильности отображения индикатора выполнения при вызове.
Как получить индикатор выполнения, отображающий , пока вызов API выполняется?