美文网首页
AVLoadingIndicatorView的使用

AVLoadingIndicatorView的使用

作者: 嘘_187d | 来源:发表于2017-06-28 18:41 被阅读0次

    github上比较酷炫的loading动画https://github.com/81813780/AVLoadingIndicatorView/blob/master/screenshots/avi.gif
    ,对此此简单的封装一下.

    public class LoadingDialog extends Dialog {
    
       private  AVLoadingIndicatorView avi;
       private  TextView messagetv;
       private  RelativeLayout loadingbg;
    
       /**
        * 自定义主题及布局的构造方法
        * @param context
        * @param theme// 去除顶部蓝色线条
        */
       public LoadingDialog(Context context, int theme){
           super(context, theme);
           /**设置对话框背景透明*/
           getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
           setContentView(R.layout.loading_layout);
           loadingbg = (RelativeLayout) findViewById(R.id.loadingbg);
           avi = (AVLoadingIndicatorView) findViewById(R.id.avi);
           messagetv = (TextView) findViewById(R.id.message);
       }
    
       /**
        * 为加载进度个对话框设置不同的提示消息
        *
        * @param message 给用户展示的提示信息
        * @return build模式设计,可以链式调用
        */
       public LoadingDialog setMessage(String message) {
           messagetv.setText(message);
           return this;
       }
    
       @Override
       public void show() {
           super.show();
           avi.smoothToShow();
       }
    
       /***
        * 设置loading背景色
        * @param Colorbg
        * @return
        */
       public LoadingDialog setLoadingBg(int Colorbg){
           loadingbg.setBackgroundColor(Colorbg);
           return this;
       }
    
       @Override
       public void dismiss() {
           super.dismiss();
           avi.smoothToHide();
       }
    

    布局

       <?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"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">>
    
        <RelativeLayout
            android:id="@+id/loadingbg"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:background="@drawable/loadingbg"
            android:gravity="center"
            android:orientation="vertical">
    
            <com.wang.avi.AVLoadingIndicatorView
                android:id="@+id/avi"
                style="@style/AVLoadingIndicatorView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="visible"
                android:layout_centerHorizontal="true"
                app:indicatorColor="@color/statuscolor"
                app:indicatorName="LineScalePartyIndicator" />
    
            <TextView
                android:id="@+id/message"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                android:layout_below="@+id/avi"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="10dp"
                android:text="加载中..." />
        </RelativeLayout>
    </RelativeLayout>
    
    

    其中关注的主要属性就是
    indicatorColor 控制loading的着色
    indicatorName 各种不同的样式的loading
    如下就是LineScalePartyIndicator

    image.png

    对于不同样式的选择 如下:(可以对照上图 gif 图找到对应动画,通过indicatorName进行设置)或者java 代码中avi.setIndicator(indicatorName);进行设置

    IndicatorsName 列表

    Row 1
    • BallPulseIndicator
    • BallGridPulseIndicator
    • BallClipRotateIndicator
    • BallClipRotatePulseIndicator

    Row 2
    • SquareSpinIndicator
    • BallClipRotateMultipleIndicator
    • BallPulseRiseIndicator
    • BallRotateIndicator

    Row 3
    • CubeTransitionIndicator
    • BallZigZagIndicator
    • BallZigZagDeflectIndicator
    • BallTrianglePathIndicator

    Row 4
    • BallScaleIndicator
    • LineScaleIndicator
    • LineScalePartyIndicator
    • BallScaleMultipleIndicator

    Row 5
    • BallPulseSyncIndicator
    • BallBeatIndicator
    • LineScalePulseOutIndicator
    • LineScalePulseOutRapidIndicator

    Row 6
    • BallScaleRippleIndicator
    • BallScaleRippleMultipleIndicator
    • BallSpinFadeLoaderIndicator
    • LineSpinFadeLoaderIndicator

    Row 7
    • TriangleSkewSpinIndicator
    • PacmanIndicator
    • BallGridBeatIndicator
    • SemiCircleSpinIndicator

    Row 8
    • com.wang.avi.sample.MyCustomIndicator

    去除顶部蓝色横条样式

      <style name="MyDialogStyle">
            <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
            <item name="android:windowFrame">@null</item><!--边框-->
            <item name="android:windowNoTitle">true</item><!--无标题-->
            <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
            <item name="android:windowIsTranslucent">true</item><!--半透明-->
            <item name="android:windowContentOverlay">@null</item><!--内容覆盖 -->
            <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item><!-- 窗口样式Dialog -->
            <item name="android:backgroundDimEnabled">true</item><!--模糊-->
        </style>
    

    相关文章

      网友评论

          本文标题:AVLoadingIndicatorView的使用

          本文链接:https://www.haomeiwen.com/subject/bvzucxtx.html