我已將子視圖SurfaceView並在Activity的onCreate中實例化它。生成預覽,但控件永遠不會進入在SurfaceView的子類中重寫的onDraw()。這是爲什麼?子類化SurfaceView並重寫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框架說'你不畫視圖。自從我實施以來,我將繪製它「。我對嗎?
爲什麼然後,控件無法進入onDraw()?請幫忙。
我無法進行建議的更改,因爲我的程序如上所述。請指教 – Namratha 2010-07-27 08:56:13
我做了建議的更改 - 我擴展視圖,而不是SurfaceView,但在Activity中的onCreate()中,我無法使用foll語句: this.addView(rect,new LinearLayout.LayoutParams(LayoutParams。 FILL_PARENT,LayoutParams.FILL_PARENT)); 錯誤:未定義類型爲myActivity的方法addView(View,LinearLayout.LayoutParams)。 請幫忙。 – Namratha 2010-07-28 04:58:08