0
這兩個表達式可以同時爲真嗎? holder.getSurface()。isValid()== true; 和 canvas = holder.lockCanvas() canvas == null;Android Canvas爲空
這兩個表達式可以同時爲真嗎? holder.getSurface()。isValid()== true; 和 canvas = holder.lockCanvas() canvas == null;Android Canvas爲空
從引用:
的isValid() - 這是否對象持有有效的表面?如果 包含物理曲面,則返回true,因此lockCanvas()將成功。
因此,如果lockCanvas()成功,它將返回一個非空畫布。
但是,您不應直接訪問Surface(您需要同步),在surfaceChanged
中,您只需調用canvas = holder.lockCanvas()
並僅在canvas不爲null時繪製。
是否需要在surfaceCreated方法中實現SurfaceHolder.Callback並檢查繪圖可能性? –
SurfaceHolder被初始化爲異步,所以,如果你想繪製它,你應該有一個SurfaceHolder.Callback(知道它何時準備好),並且最好的地方是繪製在'surfaceChanged'中(這是在after 'surfaceCreated'),並在其中提供'width','height'和'holder'。 – ALiGOTec