我已经对surfaceview进行了子类化,并在活动的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
}
在表面上绘制预览之前,如果实现了ondraw回调,难道不应该将该控件赋给它吗?
因为ondraw回调对android框架说“你不能绘制视图。我会画出来的,因为我已经实现了。我说的对吗?
为什么控件无法进入ondraw()?请帮忙。
最佳答案
你只要加上
setWillNotDraw(false)
给构造器。
完成了……)