Autore Topic: mostrare immagini con fade effect  (Letto 792 volte)

Offline prezzemolo86

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
mostrare immagini con fade effect
« il: 04 Luglio 2013, 19:45:05 CEST »
0
Salve,
come da oggetto ho bisogno di mostrare una sere di immagini con un effetto di dissolvenza tra un'immagine e l'altra.
Con due sole immagini è ok, ma con più immagini è un casino.
Vi posto il codice e se avete consigli o tutorial (semplici  :-( ) sulle animazioni vi ringrazio :-)

layout activity

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="horizontal" >

    <LinearLayout
       android:id="@+id/menu_layout"
       android:layout_width="0dip"
       android:layout_height="fill_parent"
       android:layout_weight="20"
       android:orientation="vertical"
       android:visibility="gone" />

    <RelativeLayout
       android:id="@+id/image_container"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
       android:layout_weight="80" >

        <ImageView
           android:id="@+id/immagine"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"
           android:src="@drawable/immagine_1" />

        <ImageView
           android:id="@+id/immagine2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"
           android:src="@drawable/immagine_2"
           android:visibility="gone" />

     
    </RelativeLayout>

</LinearLayout>



fade_in.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false" >

    <alpha
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="10000"
       android:fromAlpha="1.0"
       android:repeatCount="infinite"
       android:repeatMode="reverse"
       android:toAlpha="0.0" />

</set>


fade_out.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false" >

    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromAlpha="0.0"
   android:toAlpha="1.0"
   android:duration="10000"    
   android:repeatCount="infinite"
   android:repeatMode="reverse"
   />

</set>


il metodo onCreate dove effettuo l'animazione è questo:
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);
                requestWindowFeature(Window.FEATURE_NO_TITLE); //Elimino titolo
                setContentView(R.layout.activity_home_layout);
               
                image_container = (RelativeLayout)findViewById(R.id.image_container);
                inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                MCMenu menuHelper = new MCMenu(this, inflater);
                menu = menuHelper.createMenu();

                 myImage = (ImageView) findViewById(R.id.immagine);
                ImageView myImage2 = (ImageView) findViewById(R.id.immagine2);
               
                 fade_in = AnimationUtils.loadAnimation(this, R.anim.fade_in);
                 fade_out = AnimationUtils.loadAnimation(this, R.anim.fade_out);
                myImage.startAnimation(fade_in);
       
                myImage2.setVisibility(View.VISIBLE);
                myImage2.startAnimation(fade_in);
                myImage2.startAnimation(fade_out);
               
               
               

        }
Così è ok, ma se aggiungo immagini mi si accavallano e non capisco quando animare con in o con out o con entrambi (ho provato tutte le combinazioni... quindi mi sa che mi manca qualcosa)...non capisco la logica del fade :-(

grazie in anticipo

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:mostrare immagini con fade effect
« Risposta #1 il: 04 Luglio 2013, 22:03:02 CEST »
0
Non capisco la logica di partenza delle animazioni, setti 2 volte la partenza dell'animazione.

Codice (Java): [Seleziona]
...
myImage2.startAnimation(fade_in);
myImage2.startAnimation(fade_out);

la seconda invalida la prima se è partita, ignoro se è solo questo il problema.

Per la transizione di due immagini c'è la classe già pronta la " TransitionDrawable":

Drawable Resources | Android Developers
adb logcat | tee /tmp/logcat | grep TAG

Offline prezzemolo86

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
Re:mostrare immagini con fade effect
« Risposta #2 il: 05 Luglio 2013, 17:02:23 CEST »
0
mettendo le due animazioni, dissolvo la prima immagine nella seconda... sinceramente non so spiegartelo perché è la prima volta che provo a fare le animazioni e come dicevo nel post non ho capito la logica, quindi ho provato prendendo un po' d cose qua e là e così ha funzionato. Se non le metto entrambe le due immagini sono si alternano ma si vedono contemporaneamente in trasparenza.
Possibilmente la mia è una strada che ah funzionato casualmente e che non porterà da nessuna parte e proprio per questo ho scritto. Per quanto riguarda la "TransitionDrawabre" in effetti l'avevo provata ma non riuscivo a riprodurre l'effetto dissolvenza... è stata una mia mancanza o non si può fare?

grazie mille per la risposta :)

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:mostrare immagini con fade effect
« Risposta #3 il: 05 Luglio 2013, 19:39:36 CEST »
0
la "TransitionDrawabre" in effetti l'avevo provata ma non riuscivo a riprodurre l'effetto dissolvenza... è stata una mia mancanza o non si può fare?

Dal codice che hai postato io non riesco a capire la logica, quindi non posso dire se è sbagliato o come correggerlo.

La "TransitionDrawabre" funziona perfettamente se usata nel modo corretto, te lo posso assicurare. Se ti studi gli esempi ufficiali viene usata quando serve:

Loading Large Bitmaps Efficiently | Android Developers
adb logcat | tee /tmp/logcat | grep TAG

Offline prezzemolo86

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
Re:mostrare immagini con fade effect
« Risposta #4 il: 05 Luglio 2013, 22:54:05 CEST »
0
ok ci provo :) grazie mille!

Post unito: 06 Luglio 2013, 22:23:31 CEST
Ciao, va  molto meglio :)

Però non ci siamo del tutto, infatti con TransitionDrawable ottengo facilmente l'effetto fade, ma un'unica volta, da quel che ho capito non posso mettere in loop.
Posso però usare AnimaitonDrawable dove posso settare a false android:oneshot="false" , ma in questo caso le immagini si succedono una dopo l'altra senza l'effetto fade... come dovrei fare?

grazie sempre
« Ultima modifica: 06 Luglio 2013, 22:23:31 CEST da prezzemolo86, Reason: Merged DoublePost »

Offline prezzemolo86

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
Re:mostrare immagini con fade effect
« Risposta #5 il: 23 Luglio 2013, 10:44:43 CEST »
0
nessuno saprebbe come fare?