【问题标题】:Change button background color not working更改按钮背景颜色不起作用
【发布时间】:2021-04-01 21:38:08
【问题描述】:

我制作了某种测验应用程序,我希望每次点击答案按钮时都会有一个动画变为黄色。 0.25秒后会出现下一个问题(我希望它变回旧颜色)

我已经在这里做了:

public void onClick(View v) {

x

for (int i = 0; i < 4; i++) {
            if(v == answerButtons[i]){
                int j = i;
                ValueAnimator valueAnimator = new ValueAnimator();
                valueAnimator.setDuration(250);
                valueAnimator.setEvaluator(new ArgbEvaluator());
                valueAnimator.setIntValues(Color.WHITE,Color.YELLOW);
                valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator valueAnimator) {
                        answerButtons[j].setBackgroundColor((int)valueAnimator.getAnimatedValue());
                    }
                });
                valueAnimator.start();


                ((MainActivity)getActivity()).num++;



            }
        }

它确实改变了颜色,但紧接着下一个答案(和问题)支持出现在相同的按钮上。 我试过这个:

for (int i = 0; i < 4; i++) {
        if(v == answerButtons[i]){
            int j = i;


            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    answerButtons[j].setBackgroundColor(Color.rgb(63, 81, 181));
                    Toast.makeText(getActivity(), "Just changed color to: button "+(j+1), Toast.LENGTH_SHORT).show();
                    //display(questions.get(((MainActivity)getActivity()).num));
                }
            },250);



        }
    }

x

}

但有时它通常不起作用。知道为什么它每次都不起作用吗? (它唯一不做的就是改变颜色)

【问题讨论】:

标签: java android


【解决方案1】:

我有一个解决方案:) 显然 postDelay 函数不是那么精确..

int j = i;
            ValueAnimator valueAnimator = new ValueAnimator();
            valueAnimator.setDuration(250);
            valueAnimator.setEvaluator(new ArgbEvaluator());
            valueAnimator.setIntValues(Color.WHITE,Color.YELLOW);
            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator valueAnimator) {
                    answerButtons[j].setBackgroundColor((int)valueAnimator.getAnimatedValue());
                }
            });
            valueAnimator.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    answerButtons[j].setBackgroundColor(Color.parseColor("#3F51B5"));
                    display(questions.get(((MainActivity)getActivity()).num));
                }
            });
            valueAnimator.start();

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 2022-11-21
    • 2015-06-04
    • 1970-01-01
    • 2014-04-09
    • 2021-06-22
    • 2015-04-03
    相关资源
    最近更新 更多