gpt4 book ai didi

android - 子类化 SurfaceView 并覆盖 onDraw() 以更改 SurfaceView 参数以生成所需大小的预览

转载 作者:太空狗 更新时间:2023-10-29 12:58:30 27 4
gpt4 key购买 nike

我已经将 SurfaceView 子类化并在 Activity 的 onCreate 中实例化它。生成了预览,但控件永远不会进入 onDraw(),它在 SurfaceView 的子类中被重写。这是为什么?

class ActivityClass extends Activity{

onCreate(){

mPreview = new Preview(this);
setContentView(mPreview);
}
public void startPreview(){

rec = new MediaRecorder();
rec.setVideoSource();.......
rec.setPreviewDisplay(mPreview.getSurfaceHolder.getSurface());
}
}

class Preview extends SurfaceView implements SurfaceHolder.Callback{

SurfaceHolder mHolder;

public Preview(Context context){
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
bringToFront();//this is not
invalidate();//making a difference
}

SurfaceHolder getSurfaceHolder(){

return mHolder;
}
//Surface callback methods implemented here
}

在Surface上绘制预览之前,实现的话是不是应该把控制权交给onDraw回调?

因为 onDraw 回调告诉 Android 框架‘你不绘制 View 。我已经实现了,我会画出来的。我对吗?

那为什么控件没有进入onDraw()呢?请帮忙。

最佳答案

你只需添加

setWillNotDraw(false)

给构造函数。

完成了..:)

关于android - 子类化 SurfaceView 并覆盖 onDraw() 以更改 SurfaceView 参数以生成所需大小的预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340847/

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