1. 程式人生 > >等待對話方塊(網路請求等待進度條效果)

等待對話方塊(網路請求等待進度條效果)

一、建立圓角圖片(作為對話方塊的背景)

1.建立drawable檔案(若沒有該檔案),在其下建立Android的xml檔案(名稱progress_bg.xml)

2.直接上程式碼

<?xml version="1.0" encoding="UTF-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <!-- 填充的顏色 --> 
    <solid android:color="#FFFFFF" /> 

    <!-- 設定按鈕的四個角為弧形, 並設定弧形的半徑 --> 
    <corners android:radius="5dp" /> 
      
<!-- padding:Button裡面的文字與Button邊界的間隔 --> 
<padding 
   android:left="10dp" 
   android:top="10dp" 
   android:right="10dp" 
   android:bottom="10dp" 
/> 

<!-- 設定邊框寬度和顏色 -->
 <stroke android:width="10dp"
     android:color="@color/black"/>

</shape>

二、為對話方塊建立樣式

<!-- 《等待進度》對話方塊樣式 -->
    <style name="myDialog" parent="@android:style/Theme.Dialog">
        <!-- 邊框 -->
        <item name="android:windowFrame">@null</item>
         <!-- 是否浮現在activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- 沒有標題 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 模糊 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 對話方塊是否有遮蓋 -->
        <item name="android:windowContentOverlay">@null</item>
    </style>


三、建立自定義等待對話方塊

1.dialog的佈局檔案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="20dp"
    android:paddingRight="20dp" >

    <LinearLayout
        android:id="@+id/body"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/progress_bg"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingBottom="20dp"
        android:paddingTop="20dp" >

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:contentDescription="@string/app_name"
            android:src="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/message"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            android:minWidth="180dip"
            android:paddingLeft="10dp"
            android:textColor="@color/black" />
    </LinearLayout>

</LinearLayout>


2.java程式碼

<pre class="java" name="code">private Dialog createProgressDialog(String message){
		//建立對話方塊(為對話方塊設定樣式)
		Dialog mDialog = new Dialog(this, R.style.myDialog);
		//指定對話方塊的佈局
		View view = LayoutInflater.from(this).inflate(R.layout.progress_dialog, null, false);
		//為對話方塊中的控制元件填充內容(如文字)
		TextView tvMessage = (TextView) view.findViewById(R.id.message); 
		tvMessage.setText(message);
		//為對話方塊設定佈局
		mDialog.setContentView(view);
		//設定觸屏不會取消
		mDialog.setCanceledOnTouchOutside(false);
		return mDialog;
	}

四、顯示、關閉等待對話方塊

//顯示自定義等待對話方塊
	private void showDialog(String message){
		//若不存在,則建立
		if (mDialog == null) {
			mDialog = createProgressDialog(message);
		}
		//若沒有正在顯示,則顯示
		if (!mDialog.isShowing()) {
			mDialog.show();			
		}
	}
	//關閉自定義等待對話方塊
	private void closeDialog(){
		//若存在,且正在顯示中,則關閉
		if (mDialog!=null && mDialog.isShowing()) {
			mDialog.dismiss();
		}
		//釋放記憶體
		mDialog = null;
	}