Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Rotation d'une image dans un bouton

    26 avril 2012 à 17:38:41

    Bonjour à tous,

    J'ai un projet à réaliser et je suis bloqué sur un détail. Je suis novice en programmation sous Android et j'aimerai avoir quelques renseignements concernant la mise en page XML.

    Je dois piloter un robot à l'aide d'un smartphone sous Android et donc en réaliser l'interface graphique. J'ai donc besoin de trois flèches pour indiquer les directions à prendre au robot (droite, gauche ou tout droit)

    En fait j'ai enregistré dans mes ressources une image (la flèche), je voudrai utiliser cette même flèche pour les trois directions et donc faire une rotation de cette flèche. Ceci optimiserai la mémoire du programme et m'éviterai d'enregistrer les flèches en plusieurs exemplaires juste à cause d'une rotation à effectuer.

    Cette image est censée être dans un bouton.

    Voici un schéma de ce que j'ai pour le moment :

    GUI

    Je désire donc faire une rotation de la flèche dans le bouton du haut et une rotation de la flèche dans le bouton de gauche pour qu'elles indiquent le bon sens.

    Et voici le code XML :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" android:background="@drawable/bg">
        
        
          <ImageView
            android:id="@+id/logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginTop="10dp"
            android:layout_marginRight="10dp"
            android:src="@drawable/log"
          />
        
        <TextView
            android:id="@+id/coucou"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@string/hello"
       		android:textColor="#000000"
       		android:layout_gravity="center_horizontal"
       		android:textStyle="bold" android:typeface="serif"/>
           
          
         <ImageButton
            android:id="@+id/arrow_up"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="50dp"
            android:src="@drawable/arrow"
          />  
          
    	<RelativeLayout
    		android:orientation="vertical"
     		android:layout_width="wrap_content"
     		android:layout_height="wrap_content"
     		android:layout_gravity="center_horizontal">
     
              
    		<ImageButton
           		android:id="@+id/arrow_r"
           		android:layout_width="wrap_content"
            	android:layout_height="wrap_content"
            	android:layout_below="@id/arrow_up"
            	android:layout_alignBottom="@id/arrow_up"
            	android:src="@drawable/arrow"
          	/>  
          
    		<Button
           		android:id="@+id/kick"
           		android:layout_width="wrap_content"
            	android:layout_height="wrap_content"
            	android:layout_toRightOf="@id/arrow_r"
            	android:layout_alignTop="@id/arrow_r"
            	android:layout_marginTop="7dp"
            	android:background="@drawable/kick"/>  
          	
           <ImageButton
            	android:id="@+id/arrow_l"
            	android:layout_width="wrap_content"
            	android:layout_height="wrap_content"
            	android:layout_below="@id/arrow_up"
            	android:layout_alignBottom="@id/arrow_up"
            	android:layout_toRightOf="@id/kick"
           		android:src="@drawable/arrow"
          />
             
    	</RelativeLayout> 
    	
    	<Button
    	    android:id="@+id/stop"
    	    android:layout_width="50dp"
    	    android:layout_height="25dp"
    	    android:layout_gravity="center_horizontal"
    	    android:text="STOP"
    	    android:textColor="#FFFFFF"
    	    android:background="#ED0000"
    	    android:layout_marginTop="20dp" android:textStyle="bold" android:typeface="serif"/>
    
    </LinearLayout>
    


    Merci d'avance pour ceux qui porteront une attention à mon problème.
    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2012 à 18:14:07

      Bonjour,

      Sujet déplacé dans le bon forum et édité pour qu'il soit conforme aux règles de ce même forum.
      Merci de faire attention la prochaine fois !
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        26 avril 2012 à 19:05:06

        Bonsoir,

        Le seul moyen est de le faire par le code.
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        
            ImageView image = (ImageView) findViewById(R.id.arrow_up);
        
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.arrow);
            Matrix mat = new Matrix();
            mat.postRotate(90);
            // La ligne suivante marche très bien si ton image est carrée.
            // En cas d'image rectangulaire, fait attention à la largeur et à la hauteur !!!
            Bitmap bitmapRotate = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), mat, true);
            image.setImageBitmap(bitmapRotate);
        
           // A refaire pour chaque autre image en changeant l'angle de rotation
        }
        
        • Partager sur Facebook
        • Partager sur Twitter

        [Android] Rotation d'une image dans un bouton

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown