Android加载中动画AVLoadingIndicatorView的使用封装

     最近在逛Github的时候发现了一个安卓加载中的动画框架AVLoadingIndicatorView,这个框架非常的不错,里面集合了各种各样的加载框架,有很多的样式可以选择。种类虽然比较多,但不是我想要的样式,此篇文章主要讲的是在其基础上封装一个自己想要的样式。

   废话不多说,直接上图:

 本来就是站在巨人的肩膀上的,至于其具体的用法我就不详细阐述了,给上大家github的地址,大家可以自己去看:https://github.com/81813780/AVLoadingIndicatorView

 加载的动画虽然实现了,但是就我个人来说还是有几点需要加上的:

       1 这个加载的动画没得文字配套。

       2 加载的动画出现后背景没变化。

       3 加载的动画出现后,界面上的东西仍然能进行点击或者触摸的操作。

 当然每个人的需求不一样,这三点只是我个人认为需要加上的,于是自己就动手处理了。

 实现后的效果是这样的:

 

 不知道大家喜欢不喜欢,反正我个人感觉这样看着要好一点。

 下面把代码贴出来:

 1 动画弹出的工具类UIHelper

public class UIHelper {
    /**
     * 显示加载对话框
     *
     * @param context    上下文
     * @param msg        对话框显示内容
     */
    public static void showDialogForLoading(Context context, String msg) {
        View view = LayoutInflater.from(context).inflate(R.layout.layout_loading_dialog, null);
        TextView loadingText = (TextView) view.findViewById(R.id.id_tv_loading_dialog_text);
        AVLoadingIndicatorView avLoadingIndicatorView = (AVLoadingIndicatorView) view.findViewById(R.id.AVLoadingIndicatorView);
        loadingText.setText(msg);
        final Dialog mLoadingDialog = new Dialog(context, R.style.loading_dialog_style);
        mLoadingDialog.setCancelable(false);
        mLoadingDialog.setContentView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT));

            mLoadingDialog.show();
            avLoadingIndicatorView.smoothToShow();
            mLoadingDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        mLoadingDialog.hide();
                        return true;
                    }
                    return false;
                }
            });

    }
}
 2 Dialog的布局文件layout_loading_dialog:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@drawable/bg_loading_dialog_shape"
    android:gravity="center"
    android:minHeight="60dp"
    android:minWidth="180dp"
    android:orientation="vertical"
    android:padding="10dp">

    <com.wang.avi.AVLoadingIndicatorView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:id="@+id/AVLoadingIndicatorView"
        app:indicatorColor="#1390ea"
        app:indicatorName="PacmanIndicator"/>

    <TextView
        android:id="@+id/id_tv_loading_dialog_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="加载中…"
        android:textColor="#555555"
        android:textSize="14sp" />

</LinearLayout>
 3 Dialog的样式loading_dialog_stytle:
    <!-- 自定义Loading Dialog -->
    <style name="loading_dialog_style" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

    以上的几点实现后就可以在你想要的地方加上一句代码 UIHelper.showDialogForLoading(MainActivity.this,"正在加载。。。");即可,当然这边只是单纯的为了展示效果并没有加上主动消失掉加载动画的代码,这个大家如果感兴趣可以自己添加,比如数据请求开始的时候动画开始,数据请求结束的时候动画结束等。

   最后还是想说非常感谢安卓的开源,大神的分享!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值