Rotation de l'arrière-plan dans ImageView (Android Studio - Java)

Sep 26 2020

J'essaye de développer une application Android. Cependant, j'ai rencontré un problème et je veux faire pivoter le fond carré coloré de 360 degrés. Ce sera un effet d'animation. Rotation continue. C'est possible?

J'ai essayé view.animate (). Je veux juste faire pivoter l'arrière-plan dessinable dans imageview.

Mon but

Disposition des activités

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@drawable/border"
    android:contentDescription="@string/todo"
    android:cropToPadding="true"
    android:padding="10dp"
    android:scaleType="centerCrop"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent />
</androidx.constraintlayout.widget.ConstraintLayout>

Arrière-plan (@ drawable / border)

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:angle="270"
    android:endColor="@color/colorYellowGreen"
    android:type="linear"
    android:centerColor="@color/colorBlue"
    android:startColor="@color/colorPink" />

<corners android:radius="5dp" />

Réponses

SnefruClone Oct 10 2020 at 08:10

J'ai utilisé la balise de rotation dans la liste d'animation.

<?xml version="1.0" encoding="utf-8"?>
<animation-list 
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:duration="3000">
    <rotate
        android:fromDegrees="90"
        android:toDegrees="180"
        android:drawable="@drawable/border"
        android:pivotY="50%"
        android:pivotX="50%"/>
</item>
<item
    android:duration="3000">
    <rotate
        android:fromDegrees="180"
        android:toDegrees="270"
        android:drawable="@drawable/border"
        android:pivotY="50%"
        android:pivotX="50%"/>
</item>
<item
    android:duration="3000">
    <rotate
        android:fromDegrees="270"
        android:toDegrees="360"
        android:drawable="@drawable/border"
        android:pivotY="50%"
        android:pivotX="50%"/>
</item>
<item
    android:duration="3000">
    <rotate
        android:fromDegrees="0"
        android:toDegrees="90"
        android:drawable="@drawable/border"
        android:pivotY="50%"
        android:pivotX="50%"/>
</item>

</animation-list>

Le code ci-dessus peut être optionnel mais c'est la partie la plus importante pour une rotation continue

AnimationDrawable animationDrawable =
(AnimationDrawable) mQRImage.getBackground();
animationDrawable.setExitFadeDuration(3000);
animationDrawable.start();