にテキストを描画しようとしていますSurfaceView
が、何も表示されません。
親要素を埋める必要がありますが、幅と高さを取得しようとするとView
0 が返されます。
camerapreview.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView
android:id="@+id/svCamera"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
<FrameLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<View
android:id="@+id/vOverlays"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
</FrameLayout>
</FrameLayout>
CameraActivity.java
public class CameraActivity extends Activity {
private Camera camera;
private CameraPreview cameraPreview;
private View vOverlays;
private SurfaceHolder svHolder;
private SurfaceView svCamera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camerapreview);
svCamera = (SurfaceView) findViewById(R.id.svCamera);
vOverlays = findViewById(R.id.vOverlays);
}
@Override
protected void onResume() {
super.onResume();
camera = Camera.open();
svHolder = svCamera.getHolder();
cameraPreview = new CameraPreview(svHolder, camera);
svHolder.addCallback(cameraPreview);
svHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Canvas canvas = new Canvas();
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(10);
canvas.drawText("Testext", vOverlays.getWidth() / 2, vOverlays.getHeight() / 2, paint);
vOverlays.draw(canvas);
}
}