瀏覽代碼

修改测试问题,添加H5加载页面loading效果

Pq 6 月之前
父節點
當前提交
9961a58472
共有 28 個文件被更改,包括 423 次插入46 次删除
  1. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  2. 161 0
      accompanySDK/src/main/java/com/daya/accompanysdk/widget/AccompanyLoadingView.java
  3. 12 12
      accompanySDK/src/main/java/com/daya/accompanysdk/widget/CustomDelayCheckView.java
  4. 二進制
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_fail.png
  5. 二進制
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_ing.png
  6. 二進制
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_success.png
  7. 二進制
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_fail.png
  8. 二進制
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_ing.png
  9. 二進制
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_success.png
  10. 4 0
      musicMerge/src/main/java/com/cooleshow/musicmerge/ui/MusicHandleActivity_.java
  11. 9 0
      musicMerge/src/main/java/com/cooleshow/musicmerge/widget/MergeLoadingTipDialog.java
  12. 4 4
      musicMerge/src/main/res/drawable/shape_loading_progress_bar_bg.xml
  13. 18 14
      musicMerge/src/main/res/layout/dialog_merge_custom_loading_layout.xml
  14. 1 1
      musicMerge/src/main/res/layout/item_my_draft_work_layout.xml
  15. 1 1
      musicMerge/src/main/res/layout/item_my_work_layout.xml
  16. 0 0
      musicMerge/src/main/res/raw/mh_merge_loading_anim.json
  17. 5 0
      student/src/main/java/com/cooleshow/student/ui/main/MallFragment.java
  18. 27 0
      student/src/main/java/com/cooleshow/student/ui/mine/SettingActivity.java
  19. 43 0
      student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java
  20. 6 0
      student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java
  21. 12 0
      student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java
  22. 7 1
      student/src/main/res/layout/activity_html1.xml
  23. 5 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MallFragment.java
  24. 27 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/SettingActivity.java
  25. 57 12
      teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java
  26. 5 0
      teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java
  27. 11 0
      teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java
  28. 7 1
      teacher/src/main/res/layout/activity_html1.xml

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -15,6 +15,7 @@ public abstract class WebConstants {
     public static final String WEB_JS_INTERFACE = "COLEXIU";
     public static final String WEB_URL = "web_url";//
     public static final String WEB_TITLE = "title";//
+    public static final String WEB_SHOW_LOADINGANIM = "showLoadingAnim";//
     //临时测试
 //    public static final String WEB_SOCKET_URL_TEST = "wss://dev.colexiu.com/audioAnalysis";
     public static final String WEB_SOCKET_URL_TEST = "wss://test.kt.colexiu.com/audioAnalysis_kt";

+ 161 - 0
accompanySDK/src/main/java/com/daya/accompanysdk/widget/AccompanyLoadingView.java

@@ -0,0 +1,161 @@
+package com.daya.accompanysdk.widget;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.airbnb.lottie.LottieAnimationView;
+import com.cooleshow.base.utils.SizeUtils;
+import com.daya.accompanysdk.R;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+/**
+ * Author by pq, Date on 2024/12/5.
+ */
+public class AccompanyLoadingView extends FrameLayout {
+    public static final int MESSAGE_TYPE_UPDATE_LOADING_START = 5010;//开始更新加载loading
+    public static final int MESSAGE_TYPE_UPDATE_LOADING = 5011;//更新加载loading
+    public static final int MESSAGE_TYPE_UPDATE_LOADING_COMPLETE = 5012;//完成加载loading
+    public static final int MESSAGE_TYPE_HIDE_LOADING = 5013;//隐藏加载loading
+    private int currentProgressCount = 0;
+
+    private LottieAnimationView mLottieAnimationView;
+    private TextView mTvLoadingTip;
+    private ProgressBar mProgress;
+    private ImageView mLoadingBack;
+    private Handler mLoadHandler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(@NonNull Message msg) {
+            if (msg.what == MESSAGE_TYPE_UPDATE_LOADING) {
+                currentProgressCount++;
+                if (currentProgressCount <= 10) {
+                    updateProgress(4);
+                } else if (currentProgressCount <= 30) {
+                    updateProgress(2);
+                } else {
+                    updateProgress(1);
+                }
+                sendProgressMessage(MESSAGE_TYPE_UPDATE_LOADING, 1000);
+                return;
+            }
+
+            if (msg.what == MESSAGE_TYPE_UPDATE_LOADING_START) {
+                showLoadingAnim();
+                sendProgressMessage(MESSAGE_TYPE_UPDATE_LOADING, 1000);
+                return;
+            }
+
+            if (msg.what == MESSAGE_TYPE_UPDATE_LOADING_COMPLETE) {
+                if (mProgress == null) {
+                    return;
+                }
+                mProgress.setProgress(100);
+                sendProgressMessage(MESSAGE_TYPE_HIDE_LOADING, 300);
+                return;
+            }
+
+            if (msg.what == MESSAGE_TYPE_HIDE_LOADING) {
+                hideLoadingAnim();
+                return;
+            }
+        }
+    };
+
+    public AccompanyLoadingView(@NonNull Context context) {
+        this(context, null);
+    }
+
+    public AccompanyLoadingView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, -1);
+    }
+
+    public AccompanyLoadingView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    private void init() {
+        LayoutInflater.from(getContext()).inflate(R.layout.accompany_loading_layout, this);
+        mLottieAnimationView = findViewById(R.id.view_loading_anim);
+        mTvLoadingTip = findViewById(R.id.tv_loading_tip);
+        mProgress = findViewById(R.id.progress);
+        mLoadingBack = findViewById(R.id.loading_back);
+    }
+
+    private void showLoadingAnim() {
+        if (getVisibility() == View.VISIBLE) {
+            if (mLottieAnimationView != null) {
+                currentProgressCount = 0;
+                mLottieAnimationView.setAnimation(R.raw.accompany_loading);
+                mProgress.setProgress(0);
+                mLoadingBack.setVisibility(View.VISIBLE);
+                mLottieAnimationView.playAnimation();
+            }
+        }
+    }
+
+    private void updateProgress(int progress) {
+        if (mProgress == null) {
+            return;
+        }
+        int currentProgress = mProgress.getProgress();
+        int totalProgress = currentProgress + progress;
+        if (totalProgress > 99) {
+            totalProgress = 99;
+        }
+        mProgress.setProgress(totalProgress);
+    }
+
+    private void sendProgressMessage(int type, int delayedTime) {
+        Message message = Message.obtain();
+        message.what = type;
+        mLoadHandler.sendMessageDelayed(message, delayedTime);
+    }
+
+    private void hideLoadingAnim() {
+        currentProgressCount = 0;
+        mLottieAnimationView.cancelAnimation();
+        mLottieAnimationView.clearAnimation();
+        if (mLoadHandler != null) {
+            mLoadHandler.removeCallbacksAndMessages(null);
+        }
+    }
+
+    public void startShow() {
+        if(getVisibility()!=View.VISIBLE){
+            setVisibility(View.VISIBLE);
+            sendProgressMessage(MESSAGE_TYPE_UPDATE_LOADING_START, 0);
+        }
+    }
+
+    public void stopAndHide() {
+        sendProgressMessage(MESSAGE_TYPE_UPDATE_LOADING_COMPLETE, 0);
+        setVisibility(View.GONE);
+    }
+
+    public void setBackClickListener(View.OnClickListener listener) {
+        if (mLoadingBack != null) {
+            mLoadingBack.setOnClickListener(listener);
+        }
+    }
+
+    public void release() {
+        if (mLoadHandler != null) {
+            mLoadHandler.removeCallbacksAndMessages(null);
+        }
+        if (mLottieAnimationView != null) {
+            mLottieAnimationView.cancelAnimation();
+        }
+    }
+}

+ 12 - 12
accompanySDK/src/main/java/com/daya/accompanysdk/widget/CustomDelayCheckView.java

@@ -133,18 +133,18 @@ public class CustomDelayCheckView extends BaseDelayCheckView {
     }
 
     private int getMainAnimRes(int step) {
-//        if (step == CHECK_PREPARE) {
-//            return R.drawable.ac_check_prepare;
-//        }
-//        if (step == CHECK_ING) {
-//            return R.drawable.ac_check_ing;
-//        }
-//        if (step == CHECK_SUCCESS) {
-//            return R.drawable.ac_check_success;
-//        }
-//        if (step == CHECK_FAIL) {
-//            return R.drawable.ac_check_fail;
-//        }
+        if (step == CHECK_PREPARE) {
+            return R.drawable.ac_check_prepare;
+        }
+        if (step == CHECK_ING) {
+            return R.drawable.ac_check_ing;
+        }
+        if (step == CHECK_SUCCESS) {
+            return R.drawable.ac_check_success;
+        }
+        if (step == CHECK_FAIL) {
+            return R.drawable.ac_check_fail;
+        }
         return R.drawable.ac_check_prepare;
     }
 

二進制
accompanySDK/src/main/res/drawable-xhdpi/ac_check_fail.png


二進制
accompanySDK/src/main/res/drawable-xhdpi/ac_check_ing.png


二進制
accompanySDK/src/main/res/drawable-xhdpi/ac_check_success.png


二進制
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_fail.png


二進制
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_ing.png


二進制
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_success.png


+ 4 - 0
musicMerge/src/main/java/com/cooleshow/musicmerge/ui/MusicHandleActivity_.java

@@ -1890,6 +1890,10 @@ public class MusicHandleActivity_ extends BaseMVPActivity<AcMusicHandleLayoutBin
     }
 
     private void releaseAnim() {
+        if (mLoadingTipDialog != null) {
+            mLoadingTipDialog.release();
+        }
+
         if (viewBinding != null && viewBinding.musicFrequencyView != null) {
             viewBinding.musicFrequencyView.release();
         }

+ 9 - 0
musicMerge/src/main/java/com/cooleshow/musicmerge/widget/MergeLoadingTipDialog.java

@@ -6,6 +6,7 @@ import android.view.View;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import com.airbnb.lottie.LottieAnimationView;
 import com.cooleshow.base.widgets.dialog.BaseFullDialog;
 import com.cooleshow.musicmerge.R;
 
@@ -20,6 +21,7 @@ public class MergeLoadingTipDialog extends BaseFullDialog {
     private View mViewLine;
     private ProgressBar mProgress;
     private TextView mTvText;
+    private LottieAnimationView mViewLoadingAnim;
 
     public MergeLoadingTipDialog(@NonNull Context context) {
         super(context);
@@ -32,6 +34,7 @@ public class MergeLoadingTipDialog extends BaseFullDialog {
         mViewLine = findViewById(R.id.view_line);
         mProgress = findViewById(R.id.progress);
         mTvText = findViewById(R.id.tv_text);
+        mViewLoadingAnim = findViewById(R.id.view_loading_anim);
 
         initListener();
     }
@@ -74,4 +77,10 @@ public class MergeLoadingTipDialog extends BaseFullDialog {
             mViewLine.setLayoutParams(layoutParams);
         }
     }
+
+    public void release() {
+        if (mViewLoadingAnim != null) {
+            mViewLoadingAnim.cancelAnimation();
+        }
+    }
 }

+ 4 - 4
musicMerge/src/main/res/drawable/shape_loading_progress_bar_bg.xml

@@ -4,10 +4,10 @@
     <item android:id="@android:id/background">
         <shape>
             <!-- 圆角 -->
-            <corners android:radius="8dp" />
+            <corners android:radius="6dp" />
             <!--            背景色-->
             <solid android:color="#DADADA"/>
-            <size android:height="8dp"/>
+            <size android:height="6dp"/>
         </shape>
     </item>
     <!--    滑动条-->
@@ -15,10 +15,10 @@
         <clip>
             <shape>
                 <!-- 圆角 -->
-                <corners android:radius="8dp" />
+                <corners android:radius="6dp" />
                 <gradient android:startColor="@color/main_style_color"
                     android:endColor="@color/main_style_color2"/>
-                <size android:height="8dp"/>
+                <size android:height="6dp"/>
                 <stroke android:color="#7Dfff5f5" android:width="1dp"/>
             </shape>
         </clip>

+ 18 - 14
musicMerge/src/main/res/layout/dialog_merge_custom_loading_layout.xml

@@ -6,21 +6,25 @@
     android:layout_height="wrap_content">
 
     <View
-        android:background="@drawable/shape_b8878787_26dp"
         android:layout_marginTop="38dp"
         android:id="@+id/view_bg"
-        android:layout_width="316dp"
+        android:layout_width="273dp"
         android:layout_height="52dp"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
-    <ImageView
-        android:src="@drawable/icon_merge_loading_top"
-        android:layout_width="232dp"
-        android:layout_height="52dp"
+
+    <com.airbnb.lottie.LottieAnimationView
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintLeft_toLeftOf="@+id/view_bg"
-        app:layout_constraintRight_toRightOf="@+id/view_bg" />
+        app:layout_constraintRight_toRightOf="@+id/view_bg"
+        android:id="@+id/view_loading_anim"
+        android:layout_width="110dp"
+        android:layout_height="66dp"
+        app:lottie_rawRes="@raw/mh_merge_loading_anim"
+        app:lottie_autoPlay="true"
+        app:lottie_loop="true" />
+
 
     <View
         android:id="@+id/view_line"
@@ -37,19 +41,18 @@
         android:id="@+id/progress"
         style="@style/Widget.AppCompat.ProgressBar.Horizontal"
         android:layout_width="0dp"
-        android:layout_height="8dp"
-        android:layout_marginStart="18dp"
-        android:layout_marginEnd="18dp"
+        android:layout_height="6dp"
         android:max="100"
         android:progressDrawable="@drawable/shape_loading_progress_bar_bg"
         app:layout_constraintBottom_toBottomOf="@+id/view_bg"
         app:layout_constraintLeft_toLeftOf="@+id/view_bg"
         app:layout_constraintRight_toRightOf="@+id/view_bg"
-        app:layout_constraintTop_toTopOf="@+id/view_bg"
+        app:layout_constraintTop_toBottomOf="@+id/view_loading_anim"
         tools:progress="50" />
 
 
     <ImageView
+        android:visibility="gone"
         app:layout_constraintTop_toTopOf="@+id/view_bg"
         app:layout_constraintRight_toRightOf="@+id/view_line"
         app:layout_constraintLeft_toLeftOf="@+id/view_line"
@@ -59,13 +62,14 @@
 
     <TextView
         android:id="@+id/tv_text"
+        android:textStyle="bold"
         android:includeFontPadding="false"
-        android:layout_marginTop="15dp"
+        android:layout_marginTop="13dp"
         app:layout_constraintRight_toRightOf="@+id/view_bg"
         app:layout_constraintLeft_toLeftOf="@+id/view_bg"
-        app:layout_constraintTop_toBottomOf="@+id/view_bg"
+        app:layout_constraintTop_toBottomOf="@+id/progress"
         tools:text="音频合成中"
-        android:textSize="@dimen/sp_14"
+        android:textSize="@dimen/sp_15"
         android:textColor="@color/white"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>

+ 1 - 1
musicMerge/src/main/res/layout/item_my_draft_work_layout.xml

@@ -37,7 +37,7 @@
         android:layout_marginStart="11dp"
         app:layout_goneMarginStart="0dp"
         android:layout_width="56dp"
-        app:qmui_corner_radius="5dp"
+        app:qmui_corner_radius="8dp"
         android:id="@+id/iv_icon"
         android:src="@drawable/icon_default_music_song_cover"
         app:layout_constraintLeft_toRightOf="@+id/view_select"

+ 1 - 1
musicMerge/src/main/res/layout/item_my_work_layout.xml

@@ -26,7 +26,7 @@
 
     <com.cooleshow.base.widgets.QMUIRadiusImageView
         android:layout_width="56dp"
-        app:qmui_corner_radius="5dp"
+        app:qmui_corner_radius="8dp"
         android:id="@+id/iv_icon"
         android:src="@drawable/icon_default_music_song_cover"
         app:layout_constraintLeft_toLeftOf="parent"

File diff suppressed because it is too large
+ 0 - 0
musicMerge/src/main/res/raw/mh_merge_loading_anim.json


+ 5 - 0
student/src/main/java/com/cooleshow/student/ui/main/MallFragment.java

@@ -593,6 +593,11 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
 
     }
 
+    @Override
+    public void cloudLoading(JSONObject jsonObject) {
+
+    }
+
     private boolean goPay = false;
 
     @Subscribe(threadMode = ThreadMode.MAIN)

+ 27 - 0
student/src/main/java/com/cooleshow/student/ui/mine/SettingActivity.java

@@ -3,6 +3,8 @@ package com.cooleshow.student.ui.mine;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
+import android.webkit.WebStorage;
+import android.webkit.WebView;
 
 import androidx.annotation.Nullable;
 
@@ -15,6 +17,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.SPUtils;
+import com.cooleshow.base.utils.ThreadUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.WebLoadFileHelper;
@@ -87,6 +90,7 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
                 boolean b = WebLoadFileHelper.getInstance().clearCache();
                 boolean b1 = FileUtils.clearMusicMergeCache();
                 clearGuideCache();
+                clearWebViewCache();
                 ToastUtil.getInstance().showShort("清理完成");
                 break;
         }
@@ -126,6 +130,29 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
         UserHelper.resetGuide();
     }
 
+    private void clearWebViewCache() {
+        try {
+            WebView webView = new WebView(SettingActivity.this);
+            webView.clearCache(true);
+            this.deleteDatabase("webview.db");
+            this.deleteDatabase("webviewCache.db");
+            webView.destroy();
+            webView = null;
+            WebStorage.getInstance().deleteAllData();
+            ThreadUtils.getMainHandler().postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    //暂时不清楚为啥需要延迟再调用一次这个,但是这样弄确实有效清掉了webview的storage缓存
+                    WebStorage.getInstance().deleteAllData();
+                }
+            },200);
+            ToastUtil.getInstance().showShort("清除成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        }
+    }
+
     @Override
     protected ActivitySettingBinding getLayoutView() {
         return ActivitySettingBinding.inflate(getLayoutInflater());

+ 43 - 0
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -266,6 +266,13 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         isNeedResetScreenOrientation = c_orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
         LOG.i("c_orientation:" + c_orientation + "--isNeedResetScreenOrientation:" + isNeedResetScreenOrientation);
 
+        boolean isShowLoadingAnim = intent.getBooleanExtra(WebConstants.WEB_SHOW_LOADINGANIM, false);
+        if (isShowLoadingAnim) {
+            //显示loading的时候隐藏顶部状态栏
+            QMUIStatusBarHelper.hideStatusBar(this);
+            viewBinding.loadingLayout.startShow();
+        }
+
         setStatusBarTextColor(intent.getBooleanExtra("statusBarTextColor", false));
         if (isHideTitle) {
             headerBbarView.setVisibility(View.GONE);
@@ -287,6 +294,14 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             finish();
         });
 
+        viewBinding.loadingLayout.setBackClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+
 
         try {
             if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 23) {
@@ -1698,6 +1713,9 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     protected void onDestroy() {
+        if (viewBinding != null) {
+            viewBinding.loadingLayout.release();
+        }
         super.onDestroy();
         if (null != webView) {
             webView.destroy();
@@ -1809,6 +1827,31 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                 });
     }
 
+    @Override
+    public void cloudLoading(JSONObject jsonObject) {
+        try {
+            JSONObject content = jsonObject.getJSONObject("content");
+            boolean show = content.optBoolean("show", false);
+            if (webView != null) {
+                webView.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (viewBinding != null) {
+                            if (show) {
+                                viewBinding.loadingLayout.startShow();
+                            } else {
+                                viewBinding.loadingLayout.stopAndHide();
+                            }
+                        }
+                    }
+                });
+            }
+            onSendMessage(jsonObject.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     private void showWifiTipDialog(String data) {
         CommonConfirmDialog2 commonDialog2 = new CommonConfirmDialog2(this);
         commonDialog2.show();

+ 6 - 0
student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java

@@ -132,6 +132,7 @@ import okhttp3.ResponseBody;
  * @author Ryan
  * 类说明:
  */
+@Deprecated
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
 public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Binding> implements JsInterfaceUtils.onGetMethodsListener {
     private static final int REQUEST_CODE_FILE_CHOOSER = 500;
@@ -724,6 +725,11 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
 
     }
 
+    @Override
+    public void cloudLoading(JSONObject jsonObject) {
+
+    }
+
     private boolean goPay = false;
 
     @Subscribe(threadMode = ThreadMode.MAIN)

+ 12 - 0
student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java

@@ -372,6 +372,15 @@ public class JsInterfaceUtils extends Object {
                     }
                     return;
                 }
+
+
+                if (TextUtils.equals(WebApi.API_CLOUD_LOADING, api)) {
+                    //loading加载动画
+                    if (onListener != null) {
+                        onListener.cloudLoading(jsonObject);
+                    }
+                    return;
+                }
             } catch (Exception e) {
             }
         });
@@ -485,6 +494,9 @@ public class JsInterfaceUtils extends Object {
         void checkCoursewareCache(JSONObject jsonObject);
 
         void downloadCourseware(String toString);
+
+        void cloudLoading(JSONObject jsonObject);
+
     }
 
 }

+ 7 - 1
student/src/main/res/layout/activity_html1.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/rl_activity_html"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -141,5 +142,10 @@
     </LinearLayout>
 
 
-
+    <com.daya.accompanysdk.widget.AccompanyLoadingView
+        android:id="@+id/loading_layout"
+        android:visibility="gone"
+        tools:visibility="visible"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
 </RelativeLayout>

+ 5 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/MallFragment.java

@@ -598,6 +598,11 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
 
     }
 
+    @Override
+    public void cloudLoading(JSONObject jsonObject) {
+
+    }
+
     private boolean goPay = false;
 
     @Subscribe(threadMode = ThreadMode.MAIN)

+ 27 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/mine/SettingActivity.java

@@ -4,6 +4,8 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
+import android.webkit.WebStorage;
+import android.webkit.WebView;
 
 import androidx.annotation.Nullable;
 
@@ -16,6 +18,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.SPUtils;
+import com.cooleshow.base.utils.ThreadUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.utils.helper.WebLoadFileHelper;
@@ -81,6 +84,7 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
             boolean b = WebLoadFileHelper.getInstance().clearCache();
             boolean b1 = FileUtils.clearMusicMergeCache();
             clearGuideCache();
+            clearWebViewCache();
             ToastUtil.getInstance().showShort("清理完成");
         }
     }
@@ -136,6 +140,29 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
         UserHelper.resetGuide();
     }
 
+    private void clearWebViewCache() {
+        try {
+            WebView webView = new WebView(SettingActivity.this);
+            webView.clearCache(true);
+            this.deleteDatabase("webview.db");
+            this.deleteDatabase("webviewCache.db");
+            webView.destroy();
+            webView = null;
+            WebStorage.getInstance().deleteAllData();
+            ThreadUtils.getMainHandler().postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    //暂时不清楚为啥需要延迟再调用一次这个,但是这样弄确实有效清掉了webview的storage缓存
+                    WebStorage.getInstance().deleteAllData();
+                }
+            },200);
+            ToastUtil.getInstance().showShort("清除成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        }
+    }
+
 
     @Override
     protected ActivitySettingBinding getLayoutView() {

+ 57 - 12
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -73,9 +73,11 @@ import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.NetworkUtil;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ScreenUtils;
+import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.UriUtils;
+import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.WebParamsUtils;
 import com.cooleshow.base.utils.helper.CommonShareHelper;
 import com.cooleshow.base.utils.helper.DialogHelper;
@@ -269,6 +271,14 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         isNeedResetScreenOrientation = c_orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
         LOG.i("c_orientation:" + c_orientation + "--isNeedResetScreenOrientation:" + isNeedResetScreenOrientation);
 
+
+        boolean isShowLoadingAnim = intent.getBooleanExtra(WebConstants.WEB_SHOW_LOADINGANIM, false);
+        if (isShowLoadingAnim) {
+            //显示loading的时候隐藏顶部状态栏
+            QMUIStatusBarHelper.hideStatusBar(this);
+            viewBinding.loadingLayout.startShow();
+        }
+
         setStatusBarTextColor(intent.getBooleanExtra("statusBarTextColor", false));
         if (isHideTitle) {
             headerBbarView.setVisibility(View.GONE);
@@ -290,6 +300,13 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             finish();
         });
 
+        viewBinding.loadingLayout.setBackClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
 
         try {
             if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 23) {
@@ -584,7 +601,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                                     String publicDirectoryMusic = FileUtils.getPublicDirectoryMusic();
                                     String fileLastPath = publicDirectoryMusic + "/yyszkt/" + fileName;
                                     String tip = "音频已保存到以下地址: 手机存储/Music/yyszkt/" + fileName;
-                                    UiUtils.showSaveCopyDialog(getSupportFragmentManager(),HtmlActivity.this,"保存成功", tip,fileLastPath);
+                                    UiUtils.showSaveCopyDialog(getSupportFragmentManager(), HtmlActivity.this, "保存成功", tip, fileLastPath);
                                 }
                             }
                         });
@@ -600,12 +617,12 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     }
 
     @Override
-    public void downloadFile(String url,String fileName) {
+    public void downloadFile(String url, String fileName) {
         if (TextUtils.isEmpty(url)) {
             ToastUtil.getInstance().showShort("文件异常");
             return;
         }
-        String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};
+        String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
         PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
                 .request(permissions)
@@ -1155,7 +1172,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         }
         DownloadFileTipDialog dialog = new DownloadFileTipDialog(this);
         dialog.show();
-        dialog.setData(title,content);
+        dialog.setData(title, content);
         dialog.handleTitleBg(false);
         dialog.setOnEventListener(new DownloadFileTipDialog.OnEventListener() {
             @Override
@@ -1207,7 +1224,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         public void onPageFinished(WebView view, String url) {
             super.onPageFinished(view, url);
             if (!isLoadError) {
-                isLoadCompleted =true;
+                isLoadCompleted = true;
                 showWebView();
             }
             if (!TextUtils.isEmpty(authorization)) {
@@ -1272,14 +1289,14 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                     LOG.i("onReceivedError:" + error.getErrorCode());
                     LOG.i("onReceivedError:" + error.getDescription());
                     int errorCode = error.getErrorCode();
-                    if (errorCode== WebViewClient.ERROR_HOST_LOOKUP || errorCode == WebViewClient.ERROR_CONNECT || errorCode == WebViewClient.ERROR_PROXY_AUTHENTICATION) {
+                    if (errorCode == WebViewClient.ERROR_HOST_LOOKUP || errorCode == WebViewClient.ERROR_CONNECT || errorCode == WebViewClient.ERROR_PROXY_AUTHENTICATION) {
                         if (isLoadCompleted) {
                             //20240827同步加载完后的error不需要显示 错误页
                             return;
                         }
                         showLoadErrorView();
-                    }else {
-                        if(error.getErrorCode() == WebViewClient.ERROR_UNKNOWN){
+                    } else {
+                        if (error.getErrorCode() == WebViewClient.ERROR_UNKNOWN) {
                             return;
                         }
                         String errorMsg = "url:" + request.getUrl().toString() + " " + error.getDescription();
@@ -1702,6 +1719,9 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     protected void onDestroy() {
+        if (viewBinding != null) {
+            viewBinding.loadingLayout.release();
+        }
         super.onDestroy();
         if (null != webView) {
             webView.destroy();
@@ -1768,8 +1788,8 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     public void checkCoursewareCache(JSONObject jsonObject) {
-        String [] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
-        PermissionTipHelper.getInstance().showTipDialog(this,permissions);
+        String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
                 .request(permissions)
                 .subscribe(permission -> {
@@ -1800,8 +1820,8 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         if (!checkActivityExist()) {
             return;
         }
-        String [] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
-        PermissionTipHelper.getInstance().showTipDialog(this,permissions);
+        String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
+        PermissionTipHelper.getInstance().showTipDialog(this, permissions);
         new RxPermissions(this)
                 .request(permissions)
                 .subscribe(permission -> {
@@ -1819,6 +1839,31 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                 });
     }
 
+    @Override
+    public void cloudLoading(JSONObject jsonObject) {
+        try {
+            JSONObject content = jsonObject.getJSONObject("content");
+            boolean show = content.optBoolean("show", false);
+            if (webView != null) {
+                webView.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (viewBinding != null) {
+                            if (show) {
+                                viewBinding.loadingLayout.startShow();
+                            } else {
+                                viewBinding.loadingLayout.stopAndHide();
+                            }
+                        }
+                    }
+                });
+            }
+            onSendMessage(jsonObject.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     private void showWifiTipDialog(String data) {
         CommonConfirmDialog2 commonDialog2 = new CommonConfirmDialog2(this);
         commonDialog2.show();

+ 5 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java

@@ -722,6 +722,11 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
 
     }
 
+    @Override
+    public void cloudLoading(JSONObject jsonObject) {
+
+    }
+
     private boolean goPay = false;
 
     @Subscribe(threadMode = ThreadMode.MAIN)

+ 11 - 0
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java

@@ -419,6 +419,15 @@ public class JsInterfaceUtils extends Object {
                     }
                     return;
                 }
+
+                if (TextUtils.equals(WebApi.API_CLOUD_LOADING, api)) {
+                    //loading加载动画
+                    if (onListener != null) {
+                        onListener.cloudLoading(jsonObject);
+                    }
+                    return;
+                }
+
             } catch (Exception e) {
             }
         });
@@ -533,6 +542,8 @@ public class JsInterfaceUtils extends Object {
 
         void downloadCourseware(String toString);
 
+        void cloudLoading(JSONObject jsonObject);
+
     }
 
 }

+ 7 - 1
teacher/src/main/res/layout/activity_html1.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/rl_activity_html"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -141,5 +142,10 @@
     </LinearLayout>
 
 
-
+    <com.daya.accompanysdk.widget.AccompanyLoadingView
+        android:id="@+id/loading_layout"
+        android:visibility="gone"
+        tools:visibility="visible"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
 </RelativeLayout>

Some files were not shown because too many files changed in this diff