2013-03-11 16 views
6

Ich habe eine LinearLayout mit ein paar Buttons und TextViews. Ich möchte, dass mein Hintergrund in bestimmten Intervallen blinkt, von Rot über Weiß zu Rot und so weiter. Im Moment versuche ich diesen Code, aber es gibt mir eine Nullzeiger-Ausnahme.blinkender Hintergrund

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 

Bitte helfen Sie mir, wo ich falsch liege?

+0

Bitte fügen Sie den logcat verwenden. –

Antwort

15

Sie haben die falsche View ID hier findViewById(R.layout.activity_main) angegeben. Es sollte etwas sein wie:

findViewById(R.id.your_view_id); 

Stellen Sie außerdem sicher setContentView(R.layout.activity_main) direkt nach super.onCreate

EDIT rufen:

Hier ist der Code, den Sie nur die Hintergrundfarbe mit jeder ändern können Farben, die Sie wollen. Es sieht aus wie AnimationDrawable.start() doesn't work if called from Activity.onCreate, also müssen wir Handler.postDelayed hier verwenden.

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

danke :) funktioniert jetzt ... kannst du mir helfen mit der Einstellung der Farben auf die Animation? auch, ist es möglich, dass meine buttons n textviews nicht blinken und nur der hintergrundteil tut? – newbee

+0

@newtoandroid, überprüfen Sie meine aktualisierte Antwort –

+0

, wenn ich dies verwende, setzt es nur die Hintergrundfarbe auf rot. keine Animation Außerdem ist 'layout.setBackground' für das lineare Layout nicht definiert. Eclipse gibt 3 Fixes - 'setBackgroundColor()', 'setBackgroundDrawable()' und 'setBackgroundResource()' – newbee

4

Versuchen Sie, diese

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); 

und Wenn activity_main Namen der XML-Datei ist dann

setContentView(R.layout.activity_main); 

und Ihr Layout-ID hier

LinearLayout ll = (LinearLayout) findViewById(R.id.linear_layout_id); 
Verwandte Themen