首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为SurfaceHolder创建曲面?

如何为SurfaceHolder创建曲面?
EN

Stack Overflow用户
提问于 2015-01-26 03:16:38
回答 1查看 1.8K关注 0票数 1

我试图让应用程序每隔半秒在画布上绘制一些内容,但SurfaceHolder.getSurface().isValid()返回false,当我调用SurfaceHolder.lockCanvas()时,它返回null

根据this SO question,我应该使用SurfaceHolder.Callback.surfaceCreated,但是从来没有创建过曲面。

我的主Activity中的onCreate方法

代码语言:javascript
复制
    @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的一部分

代码语言:javascript
复制
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创建曲面

EN

回答 1

Stack Overflow用户

发布于 2017-09-05 14:43:12

ChartPainter是否扩展了SurfaceView?

注意: SurfaceHolder通常与SurfaceView一起使用。当活动转到前台并且其SurfaceView即将呈现时,WindowManager将请求SurfaceFlinger创建一个新的图面。然后调用SurfaceHolder的surfaceCreated()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28140401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档