1. 程式人生 > >Android基於Dialog實現載入框

Android基於Dialog實現載入框

先給大家看個效果圖!


首先就是新建一個dialog的XML檔案了

[html] view plain copy print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="wrap_content"
  4.     android:layout_height="wrap_content"
  5.     android:background="@drawable/ic_loading_bg"
  6.     android:gravity="center"
  7.     android:orientation="vertical"
  8.     android:padding="16.0dip">
  9.     <ProgressBar
  10.         android:layout_width="24.0dip"
  11.         android:layout_height="24.0dip"
  12.         android:indeterminateDrawable="@drawable/progress_drawable_white"/>
  13.     <TextView
  14.         android:id="@+id/id_tv_loadingmsg"
  15.         android:layout_width="wrap_content"
  16.         android:layout_height="wrap_content"
  17.         android:layout_gravity="center_vertical"
  18.         android:layout_marginTop="8.0dip"
  19.         android:textColor="@color/white"
  20.         android:textSize="16.0dip"/>
  21. </LinearLayout>

ic_loading_bg就是一個背景的圖片。

關於上面的drawable中的progress_drawable_white.xml檔案如下 [html]
view plain copy print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <animation-listandroid:oneshot="false"
  3.   xmlns:android="http://schemas.android.com/apk/res/android">
  4.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_01"/>
  5.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_02"/>
  6.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_03"/>
  7.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_04"/>
  8.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_05"/>
  9.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_06"/>
  10.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_07"/>
  11.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_08"/>
  12.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_09"/>
  13.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_10"/>
  14.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_11"/>
  15.     <itemandroid:duration="83"android:drawable="@drawable/ic_loading_white_12"/>
  16. </animation-list>


這12個都是圖片來的。

核心顯示等待框程式碼如下

[java] view plain copy print?
  1. progressDialog = new Dialog(AboutActivity.this,R.style.progress_dialog);  
  2. progressDialog.setContentView(R.layout.progress);  
  3. progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);  
  4. TextView msg = (TextView) progressDialog.findViewById(R.id.id_tv_loadingmsg);  
  5. msg.setText("賣力載入中");  
  6. progressDialog.show();  

其中的文字可以自己改了,方便直接。

給新手的提示,記得在開頭寫上 private Dialog progressDialog;(老鳥可以忽略這個啦)

裡面有個style,加上下面的程式碼到style.xml檔案裡面就OK了!

[html] view plain copy print?
  1. <stylename="progress_dialog"parent="@android:style/Theme.Dialog">
  2.         <itemname="android:windowFrame">@null</item>
  3.         <itemname="android:windowIsFloating">true</item>
  4.         <itemname="android:windowIsTranslucent">true</item>
  5.         <itemname="android:windowNoTitle">true</item>
  6.         <itemname="android:background">@null</item>
  7.         <itemname="android:windowBackground">@null</item>
  8.         <itemname="android:backgroundDimEnabled">false</item>
  9.     </style>


關於如何讓這個消失,在需要消失的地方加上    [java] view plain copy print?
  1. progressDialog.dismiss();  

開源網址 github:點選開啟連結