最近在使用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);
以上就是頁面的部分代碼,如果寫的有問題,請在下方留言,若轉載,請注明出處。