闪烁的背景(flashing background)

2019-08-17 10:48发布

我有一个LinearLayout有几个ButtonsTextViews 。 我想我的背景,以一定的时间间隔闪烁,表示由红,白,红等。 现在,我想这样的代码,但它给了我一个空指针异常。

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

请帮我我该怎么错在何处?

Answer 1:

您已经指定了错误View这里的id findViewById(R.layout.activity_main) 它应该是这样的:

findViewById(R.id.your_view_id);

此外,请确保调用setContentView(R.layout.activity_main)之后super.onCreate

编辑

下面是允许你只改变你想要的任何颜色的背景颜色的代码。 它看起来像AnimationDrawable.start()不工作,如果从名为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);


Answer 2:

试试这个

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

这里用你的布局ID

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


文章来源: flashing background