先分享一個常用的轉動形式加載對話框。
這個是很早前一個應用,一哥們寫的控件。
後來發現聯想的應用中基本所用應用加載框都是這個。(開源代碼沒版權一說吧)
控件比較簡單,分享下思路:
1.首先這是一個自定義的dialog,重寫了dialog,系統的progressdialog也是繼承了dialog。
[java]
- /**
- * @author Nono
- *
- */
- public class CustomProgressBarDialog extends Dialog {
- private LayoutInflater inflater;
- private Context mContext;
- private LayoutParams lp;
-
- /**
- * @param context
- */
- public CustomProgressBarDialog(Context context) {
- super(context, R.style.NoTitleDialog);
- this.mContext = context;
- inflater = (LayoutInflater) mContext
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- layout = inflater.inflate(R.layout.custom_progressbar, null);
- setContentView(layout);
- // 設置window屬性
- lp = getWindow().getAttributes();
- lp.gravity = Gravity.CENTER;
- lp.dimAmount = 0; // 去背景遮蓋
- lp.alpha = 1.0f;
- getWindow().setAttributes(lp);
-
- }
-
- }
2.主要是setContentView(view)中的這個view該如何定義。
[java]
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:gravity="center">
- <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content" android:layout_height="wrap_content"
- style="@style/CustomProgessBarStyle" android:padding="10dip"
- android:layout_gravity="center" android:gravity="center"
- />
- <TextView android:id="@+id/load_info_text" android:text="@string/loading" android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:textColor="#FFFFFF"
- android:padding="10dip" />
- </LinearLayout>
3.上面的核心代碼就是那個style,下面我們看下這個style代碼;
[html]
- <style name="CustomProgessBarStyle">
- <item name="android:indeterminateDrawable">@drawable/custom_progress_bar</item>
- <item name="android:minWidth">50dip</item>
- <item name="android:maxWidth">50dip</item>
- <item name="android:minHeight">50dip</item>
- <item name="android:maxHeight">50dip</item>
- </style>
4.我們看第一個item,也就是不穩定的圖片,也是關鍵代碼。自定義的drawable,我們知道res下的drawable文件中可以定義多種樣式的drawable資源文件,