【问题标题】:Display a Shuffle of button text and backgrounds显示按钮文本和背景的随机播放
【发布时间】:2017-04-12 09:45:04
【问题描述】:

我在 xml 中有一个按钮。按下按钮时,我希望快速更改该按钮上的背景和文本。

我通常会使用这样的代码来获得最终结果:

String rndm[]  = {"A","B","C","D"};
{rnd = rndm[(int) (Math.random() * rndm.length)];}

{Button btn = (Button) findViewById(R.id.button1);
btn.setText(String.valueOf(rnd));
btn.setTextColor(Color.parseColor("#000000"));}

在调用之前,虽然我可能想要一两秒钟的“洗牌”效果。

我尝试过像这样使用 java.util.timer:

@Override
            public void onClick(View v) {                           

                    new java.util.Timer().schedule(
                        new java.util.TimerTask() {
                            @Override
                            public void run() {

String rndm[]  = {"A","B","C","D"};
    {rnd = rndm[(int) (Math.random() * rndm.length)];}

{Button btn = (Button) findViewById(R.id.button1);
btn.setText(String.valueOf(rnd));
btn.setTextColor(Color.parseColor("#000000"));}

}}}, 100 );

然后制作一些具有不同背景的照片,一个接一个地开火。我只是似乎无法掌握它。

我可能需要一种全新的方法来做我想做的事,但我不确定完成我需要的最佳方法是什么。

【问题讨论】:

  • EventQueue 是 awt 的一部分,它不是 Android SDK 的一部分...您已将 runOnUiThread 与空的 Runnable 实现一起使用...
  • 这就是为什么当我读到使用它时我如此困惑的原因:)
  • 我已经对其进行了编辑以阻止巨魔。那么,你碰巧知道如何完成我所需要的吗?

标签: java android button random background


【解决方案1】:

您应该使用Handler 并确保您要运行的代码在可运行方法中:-)

从你的活动中尝试这样的事情

Handler handler = new Handler();
....

@Override
public void onClick(View v) {
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
        // set your button color here, no need to use runOnUiThread()
        // as this run() method is executed on Main thread
        }
    }, 100);
}

【讨论】:

  • 谢谢!我现在试试这个。 :)
  • 抱歉花了这么长时间,活动中有大约 1000 行代码大声笑,我添加了这个 sn-p 我抛出了一个错误...导致错误...导致出现错误......然后......它工作了!非常感谢,这实际上解决了我的两个问题,一个在不同的活动中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
相关资源
最近更新 更多