微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – Canvas不会更新(invalidate)直到整个while循环结束

我正试图在画布上移动一个球. a和b类似于x,y坐标位置.从我的代码中试图动态获取不同值的任何方式. a,b是全局变量.但似乎“invalidate()”或屏幕刷新仅在整个循环结束时发生.你知道为什么吗?.如果我必须在另一个线程上构建它,请建议我一些简单的代码.

private void shootBall(){
    while (a>b){
        a = getPositionX();
        b = getPositionY();
        invalidate();
        }
    }
}

解决方法:

这样做,并使用postInvalidate()代替:

private void shootBall(){

    new Thread(new Runnable() {
        public void run() {

            while (a>b){
                a = getPositionX();
                b = getPositionY();
                postInvalidate();
            }

        }
    }).start();
}

编辑:但如前所述,不要假设无效重绘屏幕,它标记为要重绘,UI线程将绕过它.

原文地址:https://www.jb51.cc/android/1071083.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐