等待對話方塊(網路請求等待進度條效果)
阿新 • • 發佈:2019-01-24
一、建立圓角圖片(作為對話方塊的背景)
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;
}