我是android编程的新手.. 我有一个问题。
我想制作一个应用程序,在相机的顶部真实视图上绘制叠加层。 我使用表面视图来保存来自相机的图像。
这里是我的主要活动的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView
android:id="@+id/preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<com.openit.razer.overlayPreview
android:id="@+id/overlayprev"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<com.openit.razer.overlayImage
android:id="@+id/overlayimg"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
这是我的主要活动类: P
ublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ar);
overPrev = (overlayPreview)findViewById(R.id.overlayprev);
overImg = (overlayImage)findViewById(R.id.overlayimg);
overImg.setZOrderOnTop(true);
overImg.getHolder().setFormat(PixelFormat.TRANSPARENT);
preview=(SurfaceView)findViewById(R.id.preview);
previewHolder=preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
try {
camera.setPreviewDisplay(previewHolder);
}
catch (Throwable t) {
Log.e("PreviewDemo-surfaceCallback",
"Exception in setPreviewDisplay()", t);
Toast
.makeText(ARrazerNav.this, t.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
public void surfaceChanged(SurfaceHolder holder,
int format, int width,
int height) {
Camera.Parameters parameters=camera.getParameters();
//Camera.Size size=getBestPreviewSize(width, height,
// parameters);
List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
Camera.Size selected = sizes.get(0);
parameters.setPreviewSize(selected.width, selected.height);
camera.setParameters(parameters);
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
camera.setDisplayOrientation(90);
}
else{
camera.setDisplayOrientation(0);
}
//camera.setDisplayOrientation(90);
//camera.setDisplayOrientation(0);
camera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// no-op
}
};
但是我得错了
FATAL EXCEPTION:main
...
...
...
caused by: android.view.InflateException: Binary XML file line #10: Error inflating class blablabla
你帮我解决了我的问题。这是一个陷入这个问题的3天。
什么是使用SurfaceView实现Camera的最佳方法,并在其上面叠加图像?
提前致谢
答案 0 :(得分:1)
您应该使用FrameLayout将视图放在其他视图之上。首先是SurfaceView,然后是你想要的视图。
我实际上是自己做的,将图像放在相机预览上。我使用了一个带有SurfaceView和ImageView的FrameLayout。工作得很好。