AVLoadingIndicatorView的使用

2017-06-28  本文已影响0人  嘘_187d

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>
上一篇下一篇

猜你喜欢

热点阅读