1
我試圖做一些非常簡單繪製成SurfaceView
但我無法得到它的工作。沒有例外,但我也沒有看到任何結果。在Android中繪製到SurfaceView
更確切地說,我試圖創建一個SurfaceView
並用一種顏色填充它。
這裏去我的代碼:
public class SvetlinSurfaceViewTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SurfaceRenderer renderer = new SurfaceRenderer(this);
setContentView(renderer);
}
}
class SurfaceRenderer extends ViewGroup implements SurfaceHolder.Callback {
private final String TAG = "Svetlin Surface Renderer";
SurfaceView mSurfaceView;
SurfaceHolder mHolder;
public SurfaceRenderer(Context context) {
super(context);
mSurfaceView = new SurfaceView(context);
addView(mSurfaceView);
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = mSurfaceView.getHolder();
mHolder.addCallback(this);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {}
@Override
public void surfaceCreated(SurfaceHolder holder) {
tryDrawing(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
tryDrawing(holder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {}
private void tryDrawing(SurfaceHolder holder) {
Log.i(TAG, "Trying to draw...");
Canvas canvas = holder.lockCanvas();
if (canvas == null) {
Log.e(TAG, "Cannot draw onto the canvas as it's null");
} else {
drawMyStuff(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
private void drawMyStuff(final Canvas canvas) {
Log.i(TAG, "Drawing...");
canvas.drawRGB(255, 128, 128);
}
}
正如預期的那樣,我越來越圖紙...輸出兩次。
任何人都可以提出爲什麼我可能無法畫出SurfaceView
?