IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Rotation autour d'un point en gardant la même orientation


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Par défaut Rotation autour d'un point en gardant la même orientation
    Bonjour,

    Je veux faire une rotation (animation) d'un objet (un bouton) autour d'un point jusqu'à la j'ai réussi.
    Le problème c'est lorsque l'objet tourne autour du point il tourne également sur lui-même et moi je voudrais qu'il garde la même orientation pendant qu'il tourne autour du point(pivotX, pivotY).
    Comme dans l'exemple: http://dabblet.com/gist/4389712 mais sous Android.
    Comment je peut réaliser ce genre de rotation?

    Mon code Java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    public class MainActivity extends AppCompatActivity {
     
        Button button;
        float radius = 195.0f;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            button = (Button) findViewById(R.id.t);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
     
     
                     rotation();
     
                }
            });
     
            button.setX(button.getX() + radius);
     
        }
    }
    Mon layout:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/activity_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin">
     
            <CircularView
                  android:layout_width="match_parent"
                   android:layout_height="match_parent" />
     
           <Button
                    android:id="@+id/t"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:text="R"
                    android:layout_centerVertical="true"
                    android:layout_centerHorizontal="true" />
     
        </RelativeLayout>

    Merci pour toute aide
    Cordialement

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Par défaut
    Solution: ce genre de rotation n'est qu'une simple "translation".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    private void rotate(){
     
                 final ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 360.0f);
                 animator.setDuration(5000);
                 animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                       @Override
                       public void onAnimationUpdate(ValueAnimator valueAnimator) {
                       float value = (Float) animator.getAnimatedValue();
     
                       DisplayMetrics metrics = new DisplayMetrics();
                       getWindowManager().getDefaultDisplay().getMetrics(metrics);
     
                       float cx = metrics.widthPixels / 2;
                       float cy = metrics.heightPixels / 2;
     
                       float x = (float) (cx + radius * Math.cos((float) Math.toRadians(value))); // center x in arc
                       float y = (float) (cy + radius * Math.sin((float) Math.toRadians(value))); // center y in arc
     
                       x -= (button.getWidth() / 2);
                       y -= (button.getHeight() / 2);
     
                       button.setX(x);
                      button.setY(y);
                    }
                });
     
                animator.start();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire une rotation des bits vers la droite ?
    Par Jean-Marc.Bourguet dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h12
  2. Comment faire une rotation d'un div
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/06/2009, 18h04
  3. Comment faire une rotation 3D des objets
    Par dimainfo dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 19/05/2009, 19h56
  4. Comment tourner une image autour d'un point
    Par abdeleln dans le forum Images
    Réponses: 5
    Dernier message: 29/01/2007, 20h58
  5. Comment faire une rotation de metafile (l'angle de 90° me suffit) ?
    Par Tardiff Jean-François dans le forum Langage
    Réponses: 4
    Dernier message: 28/01/2005, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo