Android - Sélecteur d'image

Parfois, vous ne voulez pas qu'une image apparaisse brusquement à l'écran, vous voulez plutôt appliquer une sorte d'animation à l'image lorsqu'elle passe d'une image à une autre. Ceci est pris en charge par Android sous la forme d'ImageSwitcher.

Un sélecteur d'image vous permet d'ajouter des transitions sur les images par la façon dont elles apparaissent à l'écran. Pour utiliser Image Switcher, vous devez d'abord définir son composant XML. Sa syntaxe est donnée ci-dessous -

<ImageSwitcher
   android:id="@+id/imageSwitcher1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true"
   android:layout_centerVertical="true" >
</ImageSwitcher>

Maintenant, nous créons une intance de ImageSwithcer dans un fichier java et obtenons une référence de ce composant XML. Sa syntaxe est donnée ci-dessous -

private ImageSwitcher imageSwitcher;
imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);

La prochaine chose que nous devons faire implémenter l'interface ViewFactory et implémenter une méthode non implémentée qui renvoie un imageView. Sa syntaxe est ci-dessous -

imageSwitcher.setImageResource(R.drawable.ic_launcher);
imageSwitcher.setFactory(new ViewFactory() {
   public View makeView() {
      ImageView myView = new ImageView(getApplicationContext());
      return myView;
   }
}

La dernière chose à faire est d'ajouter une animation à ImageSwitcher. Vous devez définir un objet de la classe Animation via la classe AnimationUtilities en appelant une méthode statique loadAnimation. Sa syntaxe est donnée ci-dessous -

Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);

La méthode setInAnimaton définit l'animation de l'apparence de l'objet à l'écran tandis que setOutAnimation fait l'inverse. La méthode loadAnimation () crée un objet d'animation.

En dehors de ces méthodes, il existe d'autres méthodes définies dans la classe ImageSwitcher. Ils sont définis ci-dessous -

Sr. Non Méthode et description
1

setImageDrawable(Drawable drawable)

Définit une image avec le sélecteur d'image. L'image est passée sous forme de bitmap

2

setImageResource(int resid)

Définit une image avec le sélecteur d'image. L'image est passée sous forme d'identifiant entier

3

setImageURI(Uri uri)

Définit une image avec le sélecteur d'image. L'image est passée sous forme d'URI

4

ImageSwitcher(Context context, AttributeSet attrs)

Renvoie un objet de commutation d'image avec déjà la définition de certains attributs passés dans la méthode

5

onInitializeAccessibilityEvent (AccessibilityEvent event)

Initialise un AccessibilityEvent avec des informations sur cette vue qui est la source de l'événement

6

onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info)

Initialise un AccessibilityNodeInfo avec des informations sur cette vue

Exemple

L'exemple ci-dessous illustre certains des effets de changement d'image sur le bitmap. Il crée une application de base qui vous permet de visualiser les effets d'animation sur les images.

Pour expérimenter cet exemple, vous devez l'exécuter sur un appareil réel.

Pas La description
1 Vous utiliserez l'IDE de studio Android pour créer une application Android sous un package com.example.sairamkrishna.myapplication.
2 Modifiez le fichier src / MainActivity.java pour ajouter le code nécessaire.
3 Modifiez le res / layout / activity_main pour ajouter les composants XML respectifs
4 Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats

Voici le contenu du fichier d'activité principal modifié src/MainActivity.java.

Dans le code ci-dessous tp et abc indique le logo de tutorialspoint.com
package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.app.ActionBar.LayoutParams;
import android.os.Bundle;
import android.view.View;

import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity {
   private ImageSwitcher sw;
   private Button b1,b2;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1 = (Button) findViewById(R.id.button);
      b2 = (Button) findViewById(R.id.button2);

      sw = (ImageSwitcher) findViewById(R.id.imageSwitcher);
      sw.setFactory(new ViewFactory() {
         @Override
         public View makeView() {
            ImageView myView = new ImageView(getApplicationContext());
            myView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            myView.setLayoutParams(new 
               ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
                  LayoutParams.WRAP_CONTENT));
            return myView;
         }
      });

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "previous Image",
               Toast.LENGTH_LONG).show();
            sw.setImageResource(R.drawable.abc);
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Next Image",
               Toast.LENGTH_LONG).show();
            sw.setImageResource(R.drawable.tp);
         }
      });
   }
}

Voici le contenu modifié du xml res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
      
   <TextView android:text="Gestures  Example" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageSwitcher
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageSwitcher"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="168dp" />
      
   <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/left"
        android:id="@+id/button"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true" />

   <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/right"
        android:id="@+id/button2"
        android:layout_alignParentBottom="true"
        android:layout_alignLeft="@+id/button"
        android:layout_alignStart="@+id/button" />
      
</RelativeLayout>

Voici le contenu de Strings.xml fichier.

<resources>
    <string name="app_name">My Application</string>
    <string name="left"><![CDATA[<]]></string>
    <string name="right"><![CDATA[>]]></string>
</resources>

Voici le contenu de AndroidManifest.xml fichier.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication"

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Essayons d'exécuter votre application que nous venons de modifier. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Le studio Android installe l'application sur votre AVD et le démarre et si tout va bien avec votre configuration et votre application, il affichera la fenêtre Emulator suivante -

Maintenant, si vous regardez l'écran de votre appareil, vous verrez les deux boutons.

Maintenant, sélectionnez simplement le bouton supérieur de la flèche droite. Une image apparaît de la droite et se déplace vers la gauche. Il est montré ci-dessous -

Maintenant, appuyez sur le bouton ci-dessous, cela ramènera l'image précédente avec une transition. Il est montré ci-dessous -