gpt4 book ai didi

android - 如何为 SurfaceHolder 创建 Surface?

转载 作者:行者123 更新时间:2023-11-30 02:23:28 29 4
gpt4 key购买 nike

我试图让应用程序每半秒在 Canvas 上绘制一些东西,但是 SurfaceHolder.getSurface().isValid() 返回 false,当我调用 SurfaceHolder.lockCanvas() 这将返回 null

根据 this SO question ,我应该使用 SurfaceHolder.Callback.surfaceCreated 但从未创建表面。

我的主要 Activity 中的 onCreate 方法

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
ChartPainter p = new ChartPainter(this);

}

还有我的 ChartPainter.java 的一部分

public ChartPainter(Context context) {
super(context);
holder = getHolder();
final boolean a[] = new boolean[1];
a[0] = false;
holder.addCallback(new Callback() {



@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
a[0] = true;
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub

}

});

} [...]//more omitted code here

如何为 SurfaceHolder 创建表面?

最佳答案

ChartPainter 是否扩展了 SurfaceView?

注意:SurfaceHolder 通常与 SurfaceView 一起使用。当 Activity 进入前台并且其 SurfaceView 即将被渲染时,WindowManager 将要求 SurfaceFlinger 创建一个新的表面。然后调用SurfaceHolder的surfaceCreated()。

关于android - 如何为 SurfaceHolder 创建 Surface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140401/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com