2013-03-11 3 views
6

У меня есть LinearLayout с несколькими Buttons и TextViews. Я хочу, чтобы мой фон вспыхивал с интервалом времени, от красного до белого до красного и так далее. Прямо сейчас, я пытаюсь использовать этот код, но он дает мне исключение с нулевым указателем.мигающий фон

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 

Пожалуйста, помогите мне, где я буду не так?

+0

Приложить LogCat. –

ответ

15

Вы указали неправильный View здесь findViewById(R.layout.activity_main). Это должно быть что-то вроде:

findViewById(R.id.your_view_id); 

Кроме того, убедитесь, что называть setContentView(R.layout.activity_main) сразу после super.onCreate

EDIT:

Вот код, который позволяет изменить только цвет фона с любым цвета, которые вы хотите. Это выглядит как AnimationDrawable.start() doesn't work if called from Activity.onCreate, поэтому мы должны использовать здесь 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

спасибо :) работает сейчас ... может помочь мне с настройкой цветов для анимации? Кроме того, возможно ли, что мои кнопки n textviews не мигают, и только часть фона делает? – newbee

+0

@newtoandroid, проверьте мой обновленный ответ –

+0

, когда я использую это, он просто устанавливает цвет фона в красный цвет. нет анимации. также, 'layout.setBackground' не определено для линейного макета типа. eclipse дает 3 исправления: 'setBackgroundColor()', 'setBackgroundDrawable()' и 'setBackgroundResource()' – newbee

4

Попробуйте

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

и если activity_main ваше имя файла XML, то

setContentView(R.layout.activity_main); 

и использовать ваш макет идентификатор здесь

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