2013-03-11 15 views
6

Mam LinearLayout z kilkoma Buttons i TextViews. Chcę, aby moje tło migało w określonych odstępach czasu, np. Z czerwonego na biały, na czerwony i tak dalej. Obecnie próbuję tego kodu, ale daje mi wyjątek wskaźnika pustego.migające tło

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 

Proszę mi pomóc, gdzie się nie mylę?

+0

Proszę załączyć logcat. –

Odpowiedz

15

Podano nieprawidłowy identyfikator View tutaj findViewById(R.layout.activity_main). To powinno być coś takiego:

findViewById(R.id.your_view_id); 

Ponadto, upewnij się, aby zadzwonić setContentView(R.layout.activity_main) zaraz po super.onCreate

EDIT:

Oto kod, który pozwala zmienić tylko kolor tła z dowolnego kolory, które chcesz. Wygląda na to, że jest to AnimationDrawable.start() doesn't work if called from Activity.onCreate, więc musimy użyć tutaj Handler.postDelayed.

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

dzięki :) działa teraz ... czy pomożesz mi ustawić kolory animacji? czy możliwe jest, że moje przyciski n textviews nie migają i tylko część tła działa? – newbee

+0

@newtoandroid, sprawdź moją zaktualizowaną odpowiedź –

+0

kiedy tego używam, po prostu ustawia kolor tła na czerwony. bez animacji. również, 'layout.setBackground' jest niezdefiniowany dla układu liniowego typu. eclipse daje 3 poprawki - 'setBackgroundColor()', 'setBackgroundDrawable()' oraz 'setBackgroundResource()' – newbee

4

Spróbuj

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

i Jeżeli activity_main to nazwa pliku XML następnie

setContentView(R.layout.activity_main); 

i wykorzystywać swój identyfikator układu tutaj

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