Android se da cuenta del efecto de la barra de progreso de rotación de crisantemo de ProgressBar (para la pantalla de carga que consume mucho tiempo)

 

1. Cree un cuadro de diálogo personalizado simple

2. Establecer las propiedades y el diseño del cuadro de diálogo

3. Use el progreso combinado con la rotación animada en el diseño

1. Cree un cuadro de diálogo personalizado simple

public class LoadDia extends Dialog {


    public LoadDia(@NonNull Context context, int themeResId) {
        super(context, R.style.LoadDiaStyle);
    }

    protected LoadDia(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.load_view);
        setCancelable(true);//设置点击dialog外部 不可取消
        setCanceledOnTouchOutside(true);//设置点击dialog外部 不可取消
    }

}

2. Establecer las propiedades y el diseño del cuadro de diálogo

archivo de estilo:
 

    <style name="LoadDiaStyle" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowSoftInputMode">adjustNothing</item>

        <item name="android:windowIsTranslucent">false</item>

        <item name="android:windowContentOverlay">@null</item>

    </style>

archivo de diseño:
 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/spe_dia_load"
    android:orientation="vertical">

    <ProgressBar
        android:layout_centerHorizontal="true"
        android:id="@+id/loadpro"
        android:layout_width="@dimen/dp_34"
        android:layout_height="@dimen/dp_34"
        android:indeterminateBehavior="repeat"
        android:indeterminateDrawable="@drawable/spe_dia_load_view"
        android:layout_marginTop="@dimen/dp_15" />

    <TextView
        android:layout_below="@+id/loadpro"
        android:layout_centerHorizontal="true"
        android:id="@+id/loadDes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/dp_9"
        android:layout_marginEnd="@dimen/dp_19"
        android:layout_marginStart="@dimen/dp_19"
        android:layout_marginTop="@dimen/dp_9"
        android:text="@string/http_loading"
        android:textColor="@android:color/white"
        android:textSize="@dimen/sp_13" />
</RelativeLayout>

El punto es este:

 3. Use el progreso combinado con la rotación animada en el diseño

spe_dia_load_view:

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/rot_load"
    android:pivotX="50%"
    android:pivotY="50%" />

Dentro hay un archivo png de imagen ordinaria ~
 

rot_load:

 Cuando la página necesita ser utilizada:

 

Carga de margarita simple completa

-------------------------fin------------------------ ---------

Otra animación de rotación de círculo.

 

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">


    <shape
        android:innerRadius="8dp"
        android:shape="ring"
        android:thickness="3dp"
        android:useLevel="false">
        <gradient
            android:centerY="0.50"
            android:endColor="#cccccc"
            android:startColor="@color/white"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

    <!--  android:pivotX     动画执行的起点x坐标 50%代表相对自身宽度的
    android:innerRadius  内环的半径
    android:thickness  环的厚度
    android:useLevel  只有当我们的shape使用在LevelListDrawable中时,这个值为true,否则为false
    android:centerY 渐变中心Y的相对位置,值为0-1
    android:type  渐变类型,还有linear,radial两种类型,线性渐变和放射渐变-->

</animated-rotate>

Supongo que te gusta

Origin blog.csdn.net/NewActivity/article/details/126190894
Recomendado
Clasificación