0

设置:

Activity 的布局有一个 SurfaceView 对象 (obj),其中定义了 SurfacHolder 回调。obj 定义了以下线程(这是通过 Xamarin 用 C# 编写的):

    void DrawThread() {
        Canvas c;
        while (drawingThreadActive) {
            c=null;
            try {
                c = this.Holder.LockCanvas(null);
                lock(Holder) {
                    //force redraw
                    PostInvalidate();
                } 
            } finally {
                if (c!=null) {
                    this.Holder.UnlockCanvasAndPost(c);
                }
            }
            //sleep for 50 ms or so (20Hz refresh)
        }
    }

SurfaceCreated()回调被调用就好了,它启动了这个线程。但是,对 PostInvalidate() 的调用永远不会导致onDraw()函数被调用。

我很确定一切都设置正确-知道我缺少什么吗?

鉴于SurfaceCreated()调用了该方法,我假设它“在 UI 中可见”

知道我错过了什么吗?

4

1 回答 1

1

在这里找到答案 - 这篇文章可以标记为重复。: Android: SurfaceView 忽略 postInvalidate()?

出于某种原因,SurfaceView 默认为“它不会绘制”。调用修复SetWillNotDraw(false)SurfaceCreated()

于 2013-10-08T09:18:21.740 回答