Beautiful Android loading animation: AVLoadingIndicatorView

corresponding name animation

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

actual use:

Step 1:

bulid.gradle

dependencies {
   compile 'com.wang.avi:library:2.1.3'
}

Step 2:

dialog_loading.xml

<?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="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center">

    <com.wang.avi.AVLoadingIndicatorView
        android:id="@+id/avi"
        style="@style/AVLoadingIndicatorView.Small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible"
        app:indicatorColor="#FF0000"
        app:indicatorName="LineSpinFadeLoaderIndicator" />
</RelativeLayout>

Step 3:

style.xml

<style name="TransparentDialog" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

Step 4:

LoadingDialog.java

/**
 * 加载中Dialog
 * 
 * @author mdb
 */
public class LoadingDialog extends AlertDialog {

    private static LoadingDialog loadingDialog;
    private AVLoadingIndicatorView avi;

    public static LoadingDialog getInstance(Context context) {
        loadingDialog = new LoadingDialog(context, R.style.TransparentDialog); //设置AlertDialog背景透明
        loadingDialog.setCancelable(false);
        loadingDialog.setCanceledOnTouchOutside(false);
        return loadingDialog;
    }

    public LoadingDialog(Context context, int themeResId) {
        super(context,themeResId);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.dialog_loading);
        avi = (AVLoadingIndicatorView)this.findViewById(R.id.avi);
    }

    @Override
    public void show() {
        super.show();
        avi.show();
    }

    @Override
    public void dismiss() {
        super.dismiss();
        avi.hide();
    }
}

Step 5:

The loading box shows

LoadingDialog.getInstance(this).show();

loading box hidden

LoadingDialog.getInstance(this).dismiss();

Guess you like

Origin blog.csdn.net/as425017946/article/details/124320604