簡體   English   中英

更改按鈕背景顏色不起作用

[英]Change button background color not working

我制作了某種測驗應用程序,我希望每次單擊答案按鈕時都會有一個 animation 變為黃色。 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

}

但它大多不起作用,有時它確實起作用。 知道為什么它每次都不起作用嗎? (它唯一不做的就是改變顏色)

我得到了一個解決方案:) 顯然 postDelay function 不是那么精確..

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM