Android項目中使用類似菊花的Dialog

來源:互聯網
上載者:User

標籤:android   自訂dialog   progressbar   dialog動畫   

Android項目中使用類似菊花的Dialog



一:

  


項目中使用的二:



1.首先定義動畫檔案

<?xml version="1.0" encoding="utf-8"?><animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/loading2"    android:fromDegrees="0.0"    android:pivotX="50.0%"    android:pivotY="50.0%"    android:toDegrees="360.0" />


2.在main.xml檔案中直接定義ProgressBar便可顯示

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:gravity="center">    <ProgressBar        android:id="@+id/progress"        style="?android:attr/progressBarStyleSmall"        android:layout_width="25dip"        android:layout_height="30dip"        android:indeterminateDrawable="@anim/progress_bar" /></LinearLayout>


直接運行之後的效果即如一中所示!


但無法達到在項目中使用的便捷性,不可能每一個需要用到此Dialog的地方都需要在相應的xml檔案中定義該ProgressBar的控制項吧,如果開發中介面使用多層次的FrameLayout和多層次的布局,這就是個麻煩問題了。


下文將改 ProgressBar 單獨定義為一個xml,並通過定義單獨方法動態將其加入布局中,使用時直接通過基類的Activity初始化便可以在整個應用程式中調用。


第一步:

  • 定義單獨的 layout_loading_dialog.xml 檔案

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/dialog_view"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@android:color/transparent"    android:gravity="center_vertical|center" >    <ProgressBar        style="?android:attr/progressBarStyleSmall"        android:layout_width="25dip"        android:layout_height="30dip"        android:indeterminateDrawable="@anim/progress_bar" /></LinearLayout>


註:此處為父布局添加 android:background="@android:color/transparent" 屬性,使布局透明。

第二步:

  • 定義方法載入建立 Dialog

/**     * 建立自訂ProgressDialog     *     * @param context     * @return     */    public static Dialog createLoadingDialog(Context context) {        LayoutInflater inflater = LayoutInflater.from(context);        View v = inflater.inflate(R.layout.layout_loading_dialog, null); // 得到載入view        LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view); // 載入布局        Dialog loadingDialog = new Dialog(context, R.style.loading_dialog); // 建立自訂樣式dialog        loadingDialog.setCancelable(false); // 不可以用"返回鍵"取消        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(                LinearLayout.LayoutParams.WRAP_CONTENT,                LinearLayout.LayoutParams.WRAP_CONTENT));        return loadingDialog;    }


第三步:

  • 在調用時先在基類的BaseActiviy中初始化,然後在開始Request資料的回調方法中直接調用mLoading.show()

BaseActivity

package org.gaochun.ui;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;/** * @author gao_chun * 該類為Activity基類 */public class BaseActivity extends Activity {    public static final String TAG = "gao_chun";    //在基類中初始化Dialog    public Dialog mLoading;    /* (non-Javadoc)     * @see android.app.Activity#onCreate(android.os.Bundle)     */    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        /*if (!ValidateUtils.isNetworkAvailable(this)){            DialogUtils.showToast(this,R.string.text_network_unavailable);        }*/        mLoading = DialogUtils.createLoadingDialog(this);    }}

MainActivity

package org.gaochun.ui;import android.os.Bundle;import org.gaochun.R;public class MainActivity extends BaseActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setUpViews();    }    private void setUpViews(){        setContentView(R.layout.main);        /****************************************         * 只需要在此處調用show()方法         * 註:可在訪問網路開始時的回調方法中調用         * 在訪問結束後再 mLoading.dismiss();         **************************************/        mLoading.show();    }}


源碼下載:http://download.csdn.net/download/gao_chun/8631127


轉載請註明出處.

Android項目中使用類似菊花的Dialog

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.