java - Android 改变颜色有延迟?

标签 java android ondraw

好吧,到目前为止,我一直在寻找某种方法来解决这个问题,我已经这样做了 5 天了,所以我会尽力解释它,我有这个应用程序,它运行良好我唯一困扰的是球的颜色变化。问题是我希望它每 5 秒改变一次,而不是不断随机改变而无需等待。例如,当应用程序打开时,应用程序中球的颜色为红色,持续约 5 秒,然后变为蓝色,再等待 5 秒,然后变为另一种颜色。我试图在代码中找出 onDraw 不断随机改变颜色而不等待的地方?我真的很感激任何帮助或建议,因为我已经从事这行有一段时间了。

          @protected void onDraw(Canvas canvas) {
         // TODO Auto-generated method stub
          ballBounds.set(ballX-ballRadius, ballY-ballRadius, ballX+ballRadius,ballY+ballRadius);
          Handler handler = new Handler();        
           int rnd = (int)(Math.random() * 4);
              switch(rnd){
    case 0:handler.postDelayed(new Runnable(){
        public void run(){
        paint.setColor(Color.BLUE);
        }
    }, 3000);
        break;
    case 1: handler.postDelayed(new Runnable(){
        public void run(){
        paint.setColor(Color.RED);
        }
    }, 3000);
        break;
    case 2: handler.postDelayed(new Runnable(){
        public void run(){
        paint.setColor(Color.GREEN);
        }
    }, 3000);
        break;
    case 3:handler.postDelayed(new Runnable(){
            public void run(){
            paint.setColor(Color.YELLOW);
            }
        }, 3000);
        break;
        }
    canvas.drawOval(ballBounds, paint);

update();

try{
    Thread.sleep(20);
}catch(InterruptedException e){}

invalidate();
}

最佳答案

您无法控制 onDraw 被调用多少次,由 Android 决定。

相反,您可以运行一个单独的线程,该线程将每 5 秒更改一次颜色值,并让您的 onDraw 使用该值。

关于java - Android 改变颜色有延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536289/

相关文章:

java - RX java 在添加项目时发出延迟的列表项目

java - 在 Java 中测试构建器模式

android - 错误 :String types not allowed

android - 配置 'compile' 已过时,已替换为 'implementation' 和 'api'

Android Canvas 绘图不可见

java - JavaFx Gui 与 Swing 的性能对比

java - Inno Setup - 如何自动允许 Java 通过防火墙

android - 将模块(不带 Gradle)导入我的 Android Gradle 项目

android - 无法在 View 上动态绘制的可绘制对象上添加涟漪效果

java - 在android上开发游戏: rotation of text in a canvas