나는 물건을 그리기 위해 처음으로 사용자 정의 Surface View를 만들었습니다. 시각적으로 묘사하기 위해 녹색 배경에 선과 원을 그린다. 그런 다음, 나는 녹색 배경을 제거하고 라이브 카메라 미리보기를 배경으로 사용하기로 결정했습니다. 이것은 내가 시도한 것이지만 아래에서 작동하지는 않습니다. 카메라 뷰와 사용자 정의 표면 뷰가 모두 생성되지만 카메라 뷰만 표시됩니다. 터치했을 때 x, y 값을 출력하는이 사용자 정의보기의 TouchListener를 가졌기 때문에 내 사용자 화 된 표면 뷰도 작성되었다고 확신합니다. 하지만 내 사용자 지정 드로잉은 내가 원하는대로 카메라 미리보기 위에 표시되지 않습니다. 도와주세요!!카메라 표면보기에서 안드로이드 사용자 정의 표면보기 드로잉
gameview.xml 파일 :
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</FrameLayout>
카메라보기 : VirtuaParkView 이름
public class CameraView extends SurfaceView implements SurfaceHolder.Callback{
Camera camera;
public CameraView(Context context, Camera c) {
super(context);
camera = c;
getHolder().addCallback(this);
getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// TODO Auto-generated constructor stub
}
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
try {
camera.setPreviewDisplay(getHolder());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
camera.startPreview();
}
}
사용자 정의 표면보기 : 나는 스레드에서 지속적으로 호출되는의 onDraw() 메소드를 사용하여 물건을 그리는 곳이다 . 또한 SurfaceHolder.Callback
을 구현합니다. 간결함을 위해 여기에 작성된 코드는 없습니다. 이 모두 함께 넣어 어떻게하는지
는 :
CameraView cView = new CameraView(getApplicationContext(),Camera.open()); //get Camera View
VirtuaParkView vParkView = new VirtuaParkView(getApplicationContext()); // get custom surface view
setContentView(R.layout.gameview); //set the Frame layout
FrameLayout fl = (FrameLayout)findViewById(R.id.mainlayout); // get the layout root
fl.addView(cView); //add camera view
fl.addView(vParkView,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); //add custom drawing