Uella, TransitionDrawable permette di fadeare tra due drawable e io vorrei fare un fade dal primo al secondo e dal secondo ad un terzo.
Tra l'altro il Transition non permette neanche di avere un controllo sull'animazione, anche per sapere se sta ancora andando o meno.
So che c'è il metodo scheduleDrawable, ma non ho capito come funziona... (Cioè non so cosa mettere nel "what" (il parametro runnable). Se c'è qualcuno che mi puo fare un esempio...)
Allora ho provato a fare questo:
Pero non mi fa un effetto fade, perché prima fa il ciclo while e solo alla fine di questo mi fa vedere l'effetto, cioè quando l'alfa dei tre drawable è gia a 0.codice:package com.animazione.it; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; public class Main extends Activity { private RelativeLayout layout; private Button bottone; private TextView testo, debug; private LayerDrawable disegno; private TransitionDrawable prova; private provaDrawable trans; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (RelativeLayout)findViewById(R.id.layout); disegno = new LayerDrawable(new Drawable[]{this.getResources().getDrawable(R.drawable.earthrise), // <- Questo l'ho preso da Lunar Lander getResources().getDrawable(R.drawable.bianco), // <- Questo è un png 2x2 tutto bianco getResources().getDrawable(R.drawable.prova)}); // <- Questo è un png mezzo trasparente e mezzo no layout.setBackgroundDrawable(disegno); testo = (TextView)findViewById(R.id.text); debug = (TextView)findViewById(R.id.DebugText); debug.setScrollContainer(true); bottone = (Button)findViewById(R.id.Button01); bottone.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { splasha(); }}); } private void splasha(){ float tempo = 20000; float incremento = 255/tempo; float alpha; testo.setText(getString(R.string.animazione_progresso)); for (int i = disegno.getNumberOfLayers()-1; i>-1 ; i--){ alpha=255; while(alpha >= 0){ disegno.getDrawable(i).setAlpha(Math.round(alpha)); alpha -= incremento; layout.invalidate(); // <-- Questo so che non cambia le cose e neanche disegno.invalidateItself() :) } } testo.setText(getString(R.string.animazione_finita)); } }
Qualcuno sa come mai non mi fa vedere l'effetto graduale?
(Quello che fa splasha sarebbe/sarà messo in un thread.)

LinkBack URL
About LinkBacks
)
Rispondi quotando
Ultima modifica di Deadly; 23-03-10 alle 