CameraPreview 예제 API 데모를 사용하고 있습니다. SurfaceView를 오버레이하는 일부보기 (버튼 등)를 추가해야합니다.
이를 위해 매개 변수를 설정하려고하지만 화면 왼쪽 상단에 항상 나타납니다.
다음은 코드의 onCreate 메소드입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
btnTakePhoto = new Button(this);
btnTakePhoto.setBackgroundResource(android.R.drawable.ic_menu_camera);
/*Set container*/
mPreview = new Preview(this);
setContentView(mPreview);
/*Set button params and add it to the view*/
RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
buttonParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
buttonParams.addRule(RelativeLayout.CENTER_VERTICAL);
addContentView(btnTakePhoto, buttonParams);
numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
defaultCameraId = i;
}
}
}
여기에있는 가치는
RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
변경하면 잘 업데이트됩니다. 변경되지 않는 것은 addRule () 메서드를 포함하는 것입니다.
마침내 해결되었습니다. setContentView () 및 addContentView ()를 수행 할 때 FrameLayout 인 DecorView에 뷰를 배치했습니다. 따라서 FrameLayout의 경우 LayoutParams의 일반 기능 만 작동하므로 RelativeLayout을 참조하는 LayoutParams는 작동하지 않습니다.
따라서 먼저 relativeLayout을 만들고 매개 변수를 설정 한 다음 콘텐츠로 설정해야합니다.
RelativeLayout relativeLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
setContentView(relativeLayout, rlp);
그러나 이제는 뷰를 추가 할 때마다이 relativeLayout에 다음과 같이 추가해야합니다.
relativeLayout.addView(View, Params);
딱 이것.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다