Android - Image Switcher

Às vezes, você não deseja que uma imagem apareça abruptamente na tela; em vez disso, deseja aplicar algum tipo de animação à imagem quando ela faz a transição de uma imagem para outra. Isso é suportado pelo Android na forma de ImageSwitcher.

Um alternador de imagens permite adicionar algumas transições nas imagens pela maneira como aparecem na tela. Para usar o Image Switcher, você precisa primeiro definir seu componente XML. Sua sintaxe é fornecida abaixo -

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

Agora criamos uma instância de ImageSwithcer no arquivo java e obtemos uma referência desse componente XML. Sua sintaxe é fornecida abaixo -

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

A próxima coisa que precisamos fazer é implementar a interface ViewFactory e implementar o método não implementado que retorna um imageView. Sua sintaxe está abaixo -

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

A última coisa que você precisa fazer é adicionar Animation ao ImageSwitcher. Você precisa definir um objeto da classe Animation por meio da classe AnimationUtilities chamando um método estático loadAnimation. Sua sintaxe é fornecida abaixo -

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

O método setInAnimaton define a animação da aparência do objeto na tela, enquanto setOutAnimation faz o oposto. O método loadAnimation () cria um objeto de animação.

Além desses métodos, existem outros métodos definidos na classe ImageSwitcher. Eles são definidos abaixo -

Sr. Não Método e descrição
1

setImageDrawable(Drawable drawable)

Define uma imagem com alternador de imagem. A imagem é passada na forma de bitmap

2

setImageResource(int resid)

Define uma imagem com alternador de imagem. A imagem é passada na forma de um id inteiro

3

setImageURI(Uri uri)

Define uma imagem com alternador de imagem. A imagem é passada na forma de URI

4

ImageSwitcher(Context context, AttributeSet attrs)

Retorna um objeto de alternador de imagem já com a configuração de alguns atributos passados ​​no método

5

onInitializeAccessibilityEvent (AccessibilityEvent event)

Inicializa um AccessibilityEvent com informações sobre esta View, que é a fonte do evento

6

onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info)

Inicializa um AccessibilityNodeInfo com informações sobre esta visualização

Exemplo

O exemplo a seguir demonstra alguns dos efeitos do alternador de imagem no bitmap. Ele cria um aplicativo básico que permite visualizar os efeitos de animação nas imagens.

Para experimentar este exemplo, você precisa executá-lo em um dispositivo real.

Passos Descrição
1 Você usará o Android Studio IDE para criar um aplicativo Android em um pacote com.example.sairamkrishna.myapplication.
2 Modifique o arquivo src / MainActivity.java para adicionar o código necessário.
3 Modifique res / layout / activity_main para adicionar os respectivos componentes XML
4 Execute o aplicativo e escolha um dispositivo Android em execução, instale o aplicativo nele e verifique os resultados

A seguir está o conteúdo do arquivo de atividade principal modificado src/MainActivity.java.

No código abaixo tp e abc indica o logotipo 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);
         }
      });
   }
}

A seguir está o conteúdo modificado do 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>

A seguir está o conteúdo de Strings.xml Arquivo.

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

A seguir está o conteúdo de AndroidManifest.xml Arquivo.

<?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>

Vamos tentar executar seu aplicativo que acabamos de modificar. Suponho que você tenha criado o seuAVDao fazer a configuração do ambiente. Para executar o aplicativo do Android Studio, abra um dos arquivos de atividade do seu projeto e clique no ícone Executar na barra de ferramentas. O Android Studio instala o aplicativo em seu AVD e o inicia e se tudo estiver bem com sua configuração e aplicativo, ele será exibido a seguir a janela do emulador -

Agora, se você olhar para a tela do dispositivo, verá os dois botões.

Agora basta selecionar o botão superior dessa seta para a direita. Uma imagem iria aparecer da direita e se mover para a esquerda. É mostrado abaixo -

Agora toque no botão abaixo, que trará de volta a imagem anterior com alguma transição. É mostrado abaixo -