저는 example guide을 사용하여 SurfaceView 클래스에서 상속 받고 카메라 미리보기를 표시하는 CameraPreview 클래스를 생성했습니다. 또한 View에서 직접 상속 한 DrawOnTop이라는 또 다른 사용자 정의보기 클래스를 만들었으며 미리보기 상단에 텍스트 및 기타 항목을 그릴 때이 도구를 사용합니다. 각 뷰 클래스는 독립적으로 작동하지만 두 뷰를 모두 액티비티에로드하면 CameraPreview가 항상 지배적이며 DrawOnTop 클래스의 객체 또는 텍스트가 카메라 미리보기 상단에 표시되지 않습니다.맞춤형 SurfaceView 클래스 위에 그릴 수 없습니다.
두 개의 사용자 정의보기 클래스를 사용하기 때문에 onCreate에 setContentView (...) 호출이 포함되지 않도록 XML의 뷰 클래스를 확장하지 않아도됩니다. 대신, 각 뷰 클래스의 인스턴스를, 그리고 addContentView (...)를 사용하여 활동의 루트 뷰에 각 뷰 객체를로드, 내가 활동의 루트 뷰를 살펴했다
CameraPreview preview = new CameraPreview(this);
addContentView(preview, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
DrawOnTop drawontop = new DrawOnTop(this);
addContentView(drawontop, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
drawontop.setVisibility(View.VISIBLE);
drawontop.bringToFront();
즉, 그것은 밝혀 FrameLayout 형식의. 위에서 말했듯이이 방법론은 각 뷰에 대해 잘 작동합니다.
카메라 미리보기 위에 DrawOnTop 클래스를 표시하려면 bringToFront()를 사용해 보았지만 효과가 없습니다. Android 버전 4.1.1을 실행하는 삼성 Galaxy Note 2 LTE에서 앱을 테스트하고 있습니다.
누구든지 내가 뭘 잘못하고 있다고 말할 수 있습니까?
사용자 지정보기를 추가 할 xml 파일을 제공 할 수 있습니까? – Triode
Rajesh에게 물어봐 줘서 고마워.하지만 XML을 사용하지 않아서 onCreate 메소드에서 setContentView (...)를 호출 할 필요가 없다. 대신 활동에 뷰를로드하고 있습니다. 이제 질문을 편집하고이를 위해 사용하는 코드를 추가했습니다. 앞에서 말한 것처럼이 방법론은 각 뷰에 대해 잘 작동합니다. – Stochastically
Surfaceview는 제 경험에서 약간 이상합니다. 과거에는 문제가있었습니다. 내가 노트북에있을 때 관련성이있는 정보를 찾아 낼 것입니다. – Kerry