最近在使用Xamarin.Android进行开发,在加载数据时,需要一个正在加载界面。在网上查找了下,Xamarin.Android关于这方面的资料非常少。
但是想到Xamarin.Android和Android原生开发相似,在脑海中搜索那已经被遗忘的Android相关知识,最后终于解决。写下这篇文章,给大家分享,
希望对使用Xamarin开发的人有些帮助。
下面是最终实现的效果:
首先是样式布局:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:id="@+id/dialog_loading_view" 7 android:gravity="center"> 8 <LinearLayout 9 android:layout_width="150dp" 10 android:layout_height="110dp" 11 android:background="@drawable/corners_bg" 12 android:gravity="center" 13 android:orientation="vertical" 14 android:paddingBottom="10dp" 15 android:paddingLeft="21dp" 16 android:paddingRight="21dp" 17 android:paddingTop="10dp"> 18 19 <ProgressBar 20 android:id="@+id/progressBar1" 21 android:layout_width="35dp" 22 android:layout_height="35dp" 23 android:layout_gravity="center_horizontal" 24 android:indeterminateBehavior="repeat" 25 android:indeterminateDrawable="@drawable/dialog_loading" 26 android:indeterminateOnly="true" /> 27 28 <TextView 29 android:id="@+id/tipTextView" 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:layout_marginTop="15dp" 33 android:text="加载中..." 34 android:textColor="#f0f0f0" 35 android:textSize="15sp" /> 36 </LinearLayout> 37 </LinearLayout>
中间部分,由于文字我没做更改,所以就使用了圆角的样式,当然可以使用9png作为背景
corners_bg.xml:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <shape xmlns:android="http://schemas.android.com/apk/res/android"> 3 <solid android:color="#000" /> 4 <corners android:topLeftRadius="10dp" 5 android:topRightRadius="10dp" 6 android:bottomRightRadius="10dp" 7 android:bottomLeftRadius="10dp"/> 8 </shape>
转圈的动画效果是使用progressbar 具体的可以参考 ProcessBar深入研究
旋转动画的文件dialog_loading.xml
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@mipmap/dialog_loading_img" android:pivotX="50%" android:pivotY="50%" />
在使用自定义Dialog时,黑色背景并没有全部覆盖整个LinearLayout布局,解决方式:使用自定义样式
在Styles.xml添加
<style name="Theme_Transparent" parent="@android:Theme.DeviceDefault.Light.Dialog"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> </style>
在调用时,添加对应的样式
LoadingDialog loadingDialog = new LoadingDialog(this,Resource.Style.Theme_Transparent);
以上就是页面的部分代码,如果写的有问题,请在下方留言,若转载,请注明出处。