我已经将 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/