1. 程式人生 > >android開發之美化版的ProgressDialog進度框

android開發之美化版的ProgressDialog進度框

大夥也都知道,android版本太多了!哎,據統計截止今年1月初,安卓5.0佔有率不到0.1%。使用者大多仍使用Android Jelly Bean(果凍豆)系統,市場份額為46%,其中4.1佔19.2%,4.2佔20.3%,4.3佔6.5%。排在第二的是安卓4.4系統(39.1%),另外,2.3為7.8%,4.0為6.7%,2.2/2.2.1為0.4%。當然,2.1和2.2兩版本咱們就不糾結了,但2.3以上版本的還有這麼多,而現在的需求就是想在低版本當中,開發出美化的ProgressDialog,如圖1-1


好吧,那咱們就開始動手吧!

第一步:建立一個類

public class ProgressDialog {
    private Dialog progressDialog;
    public ProgressDialog(Context context) {
        progressDialog = new Dialog(context,R.style.progress_dialog);
        progressDialog.setContentView(R.layout.dialog);
        progressDialog.setCancelable(true);
        progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        TextView msg = (TextView) progressDialog.findViewById(R.id.id_tv_loadingmsg);
        msg.setText("正在載入中");
    }

    public void showDialog(){
        progressDialog.show();
    }

    public void cancelDialog(){
        progressDialog.dismiss();
    }
}

第二步:在/res/values/style.xml當中
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="progress_dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@null</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>
</resources>

第三步:在/res/layout/dialog.xml當中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:background="@drawable/ic_loading_bg"
              android:gravity="center"
              android:orientation="vertical"
              android:padding="16.0dip" >

    <ProgressBar
            android:layout_width="30.0dip"
            android:layout_height="30.0dip"
            android:indeterminateDrawable="@drawable/progress_drawable_white" />

    <TextView
            android:id="@+id/id_tv_loadingmsg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginTop="8.0dip"
            android:textColor="#fff"
            android:textSize="16.0dip" />

</LinearLayout>

第四步:在/res/drawable/progress_drawable_white.xml當中
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false"
                xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_01" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_02" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_03" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_04" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_05" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_06" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_07" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_08" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_09" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_10" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_11" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_12" />
</animation-list>

第五步:手動呼叫showDialog()或者cancelDialog();