1. 程式人生 > >【Android】Android開發之常用的loading等待效果實現,仿微博等待動畫。兩種實現方式詳解

【Android】Android開發之常用的loading等待效果實現,仿微博等待動畫。兩種實現方式詳解

長期維護的Android專案,裡面包括常用功能實現,以及知識點詳解, 當然還有Java中的知識點。

具體請看github:https://github.com/QQ986945193/DavidAndroidProjectTools

首先大家都知道,當我們在app開發的時候,一般少不了,比如當請求網路資料時,肯定網速不好的時候,
載入的時候比較慢,所以如果此時已經進入了新的介面,那麼肯定不好看,所以一般都會有一個loading等待提示框,告訴使用者正在載入中,給使用者更好的體驗。因此這就是我教大家實現的效果,先看一下效果圖吧:
這裡寫圖片描述

我這裡使用了一個handler延遲兩秒鐘讓它消失不見。當然專案中大家可以監聽自己所需要的方法,使載入框消失。這只是簡單的兩種實現方式,當然還有更好的其他效果,具體可以自己實現以下,也可以去網上搜索一下。

說主題吧,我這裡只是講一下思路,具體程式碼可以試著寫一下,當然我在最後會給大家放原始碼下載地址。

第一步,先寫一個自定義dialog,程式碼也比較詳細。就是建立一個dialog,如:

  public static Dialog createLoadingDialog(Context context, String msg) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.dialog_loading, null);// 得到載入view
LinearLayout layout = (LinearLayout) v .findViewById(R.id.dialog_loading_view);// 載入佈局 TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字 tipTextView.setText(msg);// 設定載入資訊 Dialog loadingDialog = new Dialog(context, R.style.MyDialogStyle
);// 建立自定義樣式dialog loadingDialog.setCancelable(true); // 是否可以按“返回鍵”消失 loadingDialog.setCanceledOnTouchOutside(false); // 點選載入框以外的區域 loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));// 設定佈局 /** *將顯示Dialog的方法封裝在這裡面 */ Window window = loadingDialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setGravity(Gravity.CENTER); window.setAttributes(lp); window.setWindowAnimations(R.style.PopWindowAnimStyle); loadingDialog.show(); return loadingDialog; }

然後我們就可以看到返回的是dialog物件,我們在我們的類中呼叫即可。當然,有顯示,就有關閉,我們直接將關閉的方法,也封裝在自定義dialog中。

 /**
     * 關閉dialog
     *
     * @param mDialogUtils
     */
    public static void closeDialog(Dialog mDialogUtils) {
        if (mDialogUtils != null && mDialogUtils.isShowing()) {
            mDialogUtils.dismiss();
        }
    }

然後我們進行呼叫即可。我們這裡只是告訴大家實現的思路,因為涉及到了一些圖片素材,所以,我在這裡提供一下這兩種實現方式的原始碼,所以大家可以參考一下。優化一下集中在專案中,