diff --git a/BaseLibrary/src/main/java/com/tfq/library/dialog/LoadingViewAnimation.java b/BaseLibrary/src/main/java/com/tfq/library/dialog/LoadingViewAnimation.java new file mode 100644 index 0000000..93cad00 --- /dev/null +++ b/BaseLibrary/src/main/java/com/tfq/library/dialog/LoadingViewAnimation.java @@ -0,0 +1,194 @@ +package com.tfq.library.dialog; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.drawable.AnimationDrawable; +import android.view.KeyEvent; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatDialog; + +import com.tfq.library.R; + +/** + * 加载进度条弹窗 + * + *

使用示例: + *

+ * // 方式1:显示默认加载动画
+ * MusicLoadingView dialog = new MusicLoadingView(context);
+ * dialog.show();
+ *
+ * // 方式2:显示带消息的加载弹窗
+ * dialog.setMessage("加载中...");
+ * dialog.show();
+ *
+ * // 方式3:一步显示带消息的弹窗
+ * dialog.showMessage("正在处理...");
+ *
+ * // 关闭弹窗
+ * dialog.dismiss();
+ * 
+ * + * @author TinyHung@outlook.com + * @date 2017/3/25 15:16 + */ +public class LoadingViewAnimation extends AppCompatDialog { + + private final ImageView mLoadingIcon; + private final TextView mTextContent; + private final TextView mTextViewUp; + private final TextView mTextViewDown; + private AnimationDrawable mAnimationDrawable; + private OnDialogBackListener mOnDialogBackListener; + + @SuppressLint("MissingInflatedId") + public LoadingViewAnimation(Context context) { + super(context, R.style.CenterDialogAnimationStyle); + setContentView(R.layout.library_dialog_progress_animation_layout); + + // 初始化视图 + mLoadingIcon = findViewById(R.id.music_loading_icon); + mTextContent = findViewById(R.id.music_content); + mTextViewUp = findViewById(R.id.tv_no_content_up); + mTextViewDown = findViewById(R.id.tv_no_content_down); + + // 初始化动画 + if (mLoadingIcon != null) { + mAnimationDrawable = (AnimationDrawable) mLoadingIcon.getDrawable(); + } + + // 设置弹窗默认不可取消 + setCanceledOnTouchOutside(false); + setCancelable(false); + } + + @Override + public void show() { + super.show(); + startAnimation(); + updateContentVisibility(); + } + + /** + * 显示弹窗并设置消息(一步完成显示和设置消息) + * + * @param message 要显示的消息,为空或null时只显示动画 + */ + public void showMessage(String message) { + setMessage(message); + show(); + } + + /** + * 设置加载消息(可单独调用,不自动显示弹窗) + * + * @param message 要显示的消息,为空或null时不显示文字内容 + */ + public void setMessage(String message) { + if (mTextContent != null) { + mTextContent.setText(message != null ? message : ""); + updateContentVisibility(); + } + } + + @Override + public void dismiss() { + stopAnimation(); + super.dismiss(); + } + + /** + * 设置返回键监听器 + * + * @param listener 返回键监听器,返回true允许关闭弹窗,false拦截返回键 + */ + public void setOnDialogBackListener(OnDialogBackListener listener) { + mOnDialogBackListener = listener; + } + + /** + * 启动加载动画 + */ + private void startAnimation() { + if (mLoadingIcon != null) { + mLoadingIcon.setVisibility(View.VISIBLE); + if (mAnimationDrawable != null && !mAnimationDrawable.isRunning()) { + mAnimationDrawable.start(); + } + } + } + + /** + * 停止加载动画 + */ + private void stopAnimation() { + if (mAnimationDrawable != null && mAnimationDrawable.isRunning()) { + mAnimationDrawable.stop(); + } + } + + /** + * 更新内容区域的可见性 + * 当有文字内容时:显示文字,隐藏装饰TextView + * 当无文字内容时:隐藏文字,显示装饰TextView + */ + private void updateContentVisibility() { + boolean hasContent = hasTextContent(); + + // 更新内容文字的可见性 + if (mTextContent != null) { + mTextContent.setVisibility(hasContent ? View.VISIBLE : View.GONE); + } + + // 更新装饰TextView的可见性 + int decorationVisibility = hasContent ? View.GONE : View.VISIBLE; + if (mTextViewUp != null) { + mTextViewUp.setVisibility(decorationVisibility); + } + if (mTextViewDown != null) { + mTextViewDown.setVisibility(decorationVisibility); + } + } + + /** + * 检查是否有文字内容需要显示 + * + * @return true-有内容,false-无内容 + */ + private boolean hasTextContent() { + return mTextContent != null + && mTextContent.getText() != null + && mTextContent.getText().length() > 0; + } + + /** + * 处理返回键事件,将控制权交给监听器 + */ + @SuppressLint("GestureBackNavigation") + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (mOnDialogBackListener != null && !mOnDialogBackListener.isBack()) { + // 监听器返回false,拦截返回键 + return false; + } + return super.onKeyDown(keyCode, event); + } + return super.onKeyDown(keyCode, event); + } + + /** + * 返回键监听器接口 + */ + public interface OnDialogBackListener { + /** + * 是否允许返回并关闭弹窗 + * + * @return true-允许返回并关闭弹窗,false-拦截返回键 + */ + boolean isBack(); + } +} diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_1.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_1.png new file mode 100644 index 0000000..9613dda Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_1.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_10.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_10.png new file mode 100644 index 0000000..caffae9 Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_10.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_11.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_11.png new file mode 100644 index 0000000..221088d Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_11.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_12.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_12.png new file mode 100644 index 0000000..12b9d2a Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_12.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_2.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_2.png new file mode 100644 index 0000000..41da98b Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_2.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_3.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_3.png new file mode 100644 index 0000000..9027a9e Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_3.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_4.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_4.png new file mode 100644 index 0000000..9236147 Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_4.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_5.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_5.png new file mode 100644 index 0000000..9518c5c Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_5.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_6.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_6.png new file mode 100644 index 0000000..76a42c0 Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_6.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_7.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_7.png new file mode 100644 index 0000000..c752853 Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_7.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_8.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_8.png new file mode 100644 index 0000000..ce9a390 Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_8.png differ diff --git a/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_9.png b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_9.png new file mode 100644 index 0000000..c1946eb Binary files /dev/null and b/BaseLibrary/src/main/res/drawable-xhdpi/library_loading_9.png differ diff --git a/BaseLibrary/src/main/res/drawable/library_dialog_loading_bg_animation.xml b/BaseLibrary/src/main/res/drawable/library_dialog_loading_bg_animation.xml new file mode 100644 index 0000000..6cd5f7d --- /dev/null +++ b/BaseLibrary/src/main/res/drawable/library_dialog_loading_bg_animation.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/drawable/library_loading_anim.xml b/BaseLibrary/src/main/res/drawable/library_loading_anim.xml new file mode 100644 index 0000000..292840c --- /dev/null +++ b/BaseLibrary/src/main/res/drawable/library_loading_anim.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/layout/library_dialog_progress_animation_layout.xml b/BaseLibrary/src/main/res/layout/library_dialog_progress_animation_layout.xml new file mode 100644 index 0000000..64558d9 --- /dev/null +++ b/BaseLibrary/src/main/res/layout/library_dialog_progress_animation_layout.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/values/integers.xml b/BaseLibrary/src/main/res/values/integers.xml new file mode 100644 index 0000000..e6212e0 --- /dev/null +++ b/BaseLibrary/src/main/res/values/integers.xml @@ -0,0 +1,4 @@ + + + 60 + \ No newline at end of file diff --git a/BaseLibrary/src/main/res/values/styles.xml b/BaseLibrary/src/main/res/values/styles.xml index 7004d7d..30a9368 100644 --- a/BaseLibrary/src/main/res/values/styles.xml +++ b/BaseLibrary/src/main/res/values/styles.xml @@ -25,4 +25,17 @@ @anim/zoom_out + + + + diff --git a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar index 53925b4..009ceb3 100644 Binary files a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar and b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar differ diff --git a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.md5 b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.md5 index 04c5258..b7bb72e 100644 --- a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.md5 +++ b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.md5 @@ -1 +1 @@ -cf37179c5451ef8f324f85b6b5d5a609 \ No newline at end of file +ad674ab399963d77dbe3b30252397161 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha1 b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha1 index 11ce1dc..65cac69 100644 --- a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha1 +++ b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha1 @@ -1 +1 @@ -0c2d562a65249d77b06a7aaf947961f5514357e2 \ No newline at end of file +02ba57a737b968b4ba275c994b34e3aaaf87e58a \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha256 b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha256 index c770b86..522d199 100644 --- a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha256 +++ b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha256 @@ -1 +1 @@ -cd47b4b04dde3e9b942c69a93c5423e9f1161d72e4359cb1128263ec4ae32cee \ No newline at end of file +24a19294eabb61a9ea38707038b0adc6ca6a84c397d88b1d90803109ff43d0f0 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha512 b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha512 index 937e5e9..98cbddb 100644 --- a/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha512 +++ b/maven/com/chuangketie/jk/lib_base/1.1.0/lib_base-1.1.0.aar.sha512 @@ -1 +1 @@ -e3bb60f0b568365870f244bb79152d5158a2a193af8a9f7d4036a88774ebbb545cf51f243971e84acd2a622f197c5201f39bd95acab27f418f1234800445bd21 \ No newline at end of file +daeb64e99aafa0c63bf4a2e8e01ef5855263e168c20c7f67835113962b592096f890486ce241a88939d8444c82ffccc6021af51453323ec2d54d8c279e4be9fa \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml index a63a93f..715c568 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml @@ -10,6 +10,6 @@ 1.0.1 1.1.0 - 20260106091431 + 20260112010551 diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 index 9ec40d8..cb16007 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 @@ -1 +1 @@ -51c88f0916999049fb5a6fd98af37db6 \ No newline at end of file +890b378841c1dfa446e675ab4959e931 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 index ef33771..6059489 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 @@ -1 +1 @@ -49fdac034b8afac0df55d99d9ecc8b4c84a910ab \ No newline at end of file +a680c4873b7d3b25fb4e1fcd2c3ea8ace4cdcc7c \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 index 8ce6d2d..5089079 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 @@ -1 +1 @@ -87b2089e46a4961bac0afaff94b899de0d19ea92ec09d9735a1decb905feb2bc \ No newline at end of file +33343dcda6d86941c9a6c7345cca1a0c8891be557f59548c799eec028d56f6ff \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 index ea5aff4..14033cf 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 @@ -1 +1 @@ -33b3eb3ce66bbf7f7b2ab4790243fdf44997c1c40f35a18514c5f7df45f71871d34fcb17eeba71c135b1d2b109b0136d4c42396f03eb2e79f18399c8a11d2370 \ No newline at end of file +ded7f88c2eae7902a703eca8a275bc0cc9bf4c8811df1b56bfa4c2e86efb2c4e95bcb26e47e2de54b69437dd6432c056970f10f38b2c0396c561decd170b388c \ No newline at end of file