2013-03-11 10 views
6

Ho un LinearLayout con alcuni Buttons e TextViews. Voglio che il mio sfondo lampeggi a intervalli regolari, diciamo da rosso a bianco a rosso e così via. In questo momento sto provando questo codice, ma mi dà un'eccezione di puntatore nullo.sfondo lampeggiante

LinearLayout ll = (LinearLayout) findViewById(R.layout.activity_main); 
Animation anim = new AlphaAnimation(0.0f, 1.0f); 
anim.setDuration(50); 
anim.setStartOffset(20); 
anim.setRepeatMode(Animation.REVERSE); 
anim.setRepeatCount(Animation.INFINITE); 
ll.startAnimation(anim); // shows null pointer exception at this line 

Per favore aiutami dove sto andando male?

+0

Si prega di allegare il logcat. –

risposta

15

Hai specificato l'ID errato qui findViewById(R.layout.activity_main). Dovrebbe essere qualcosa di simile:

findViewById(R.id.your_view_id); 

Inoltre, assicurarsi di chiamare setContentView(R.layout.activity_main) subito dopo super.onCreate

EDIT:

Qui è il codice che ti permette di cambiare solo il colore di sfondo con qualsiasi colori che vuoi Sembra AnimationDrawable.start() doesn't work if called from Activity.onCreate, quindi dobbiamo usare Handler.postDelayed qui.

final LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 
final AnimationDrawable drawable = new AnimationDrawable(); 
final Handler handler = new Handler(); 

drawable.addFrame(new ColorDrawable(Color.RED), 400); 
drawable.addFrame(new ColorDrawable(Color.GREEN), 400); 
drawable.setOneShot(false); 

layout.setBackgroundDrawable(drawable); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     drawable.start(); 
    } 
}, 100); 
+0

grazie :) funziona ora ... puoi aiutarmi con l'impostazione dei colori per l'animazione? inoltre, è possibile che i miei pulsanti e le visioni di testo non lampeggino e solo la parte di sfondo lo fa? – newbee

+0

@newtoandroid, controlla la mia risposta aggiornata –

+0

quando lo uso, imposta semplicemente il colore di sfondo sul rosso. nessuna animazione. inoltre, 'layout.setBackground' non è definito per il tipo di layout lineare. eclipse fornisce 3 correzioni - 'setBackgroundColor()', 'setBackgroundDrawable()' e 'setBackgroundResource()' – newbee

4

Prova questa

LinearLayout ll = (LinearLayout) findViewById(R.id.activity_main); 
Animation anim = new AlphaAnimation(0.0f, 1.0f); 
anim.setDuration(50); 
anim.setStartOffset(20); 
anim.setRepeatMode(Animation.REVERSE); 
anim.setRepeatCount(Animation.INFINITE); 
ll.startAnimation(anim); 

e Se activity_main è il nome del file XML allora

setContentView(R.layout.activity_main); 

e utilizzare il layout id qui

LinearLayout ll = (LinearLayout) findViewById(R.id.linear_layout_id); 
Problemi correlati