2011-03-14 5 views
2

첫 번째 탭에서 카메라를 활성화하고 이미지를 캡처 할 수 있도록 3 개의 탭이있는 응용 프로그램을 개발하려고합니다. 지금까지 카메라에 2 가지 문제가 있습니다.탭 안의 카메라 활성화 (안드로이드)

  1. 카메라를 세로 또는 가로 모드로 고정하려고합니다. 카메라를 세로 방향으로 잠그면 이미지가 회전 된 것처럼 보입니다. 거의 모든 것을 camera.parameters로 시도했지만 해결할 수 없습니다. 가로 모드로 카메라를 잠그면 문제는 탭 메뉴의 방향이 가로로 변경된다는 것입니다. 해당 탭 내에서만 방향을 변경하고 탭 메뉴를 세로 모드로 두는 방법이 있습니까?

  2. 이미지가 어떻게 든 늘어납니다. 문제는 카메라가 전체 화면의 높이와 너비를 사용한다는 것입니다. 그러나 내 앱은 탭 미리보기 메뉴로 인해 화면보다 작은 프레임 미리보기 안에 카메라 미리보기를 넣으려고하므로 이미지가 늘어납니다. 이 문제를 해결하고 탭 메뉴로 실제 카메라 미리보기를 표시 할 수있는 방법이 있습니까?

    <?xml version="1.0" encoding="utf-8"?> 
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@android:id/tabhost" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 
        <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:padding="5dp"> 
        <FrameLayout 
         android:id="@android:id/tabcontent" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:padding="5dp" 
         android:layout_weight="1"/> 
        <TabWidget 
         android:id="@android:id/tabs" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_weight="0"/> 
        </LinearLayout> 
    </TabHost> 
    

    I는 각각의 탭에 대한 하나의 활동을 사용

I는이 레이아웃 3 개 탭을 생성하고 사용하는 1 명 활성을 사용한다. 특히 1 탭 (카메라)에 대해 나는 다음과 같은 레이아웃에 preview.class를 사용

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout" android:orientation="vertical" android:layout_height="wrap_content" android:layout_width="wrap_content"> 
<FrameLayout android:layout_weight="1" android:id="@+id/preview" android:layout_gravity="fill_vertical" android:fitsSystemWindows="true" android:layout_height="wrap_content" android:layout_width="wrap_content"> 
</FrameLayout> 
<Button android:text="Click" android:id="@+id/buttonClick" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center"></Button> 
</LinearLayout> 

답변

0

내가 첫 번째 탭은 왜곡없이 세로 모드에서 카메라 미리보기이어야한다 3 개 탭을했다. 3 트릭으로 가능합니다.

먼저 세로보기 모드로 하위 미리보기 활동을 설정하여 탭을 세로로 만듭니다. 중 하나가 작동하지 않기 때문에 그런 다음 매개 변수를 사용하지 말아야 화면을 회전에서 onCreate()

this.getParent().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

또는 매니페스트

android:screenOrientation="portrait" 

에 사용하지만

if (Build.VERSION.SDK_INT >= 8) camera.setDisplayOrientation(90); 
(2.2부터)

마지막으로 strectch를 피하려면 전체 화면의 FameLayout을 탭 아래로 이동하십시오 (탭은 오버레이처럼 보이지만 아래의 카메라는 왜곡이없는 전체 화면 임).

<TabWidget 
android:id="@android:id/tabs" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentTop="true"/> 
<FrameLayout 
android:id="@android:id/tabcontent" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_below="@android:id/tabs"/> 

Et voila!

관련 문제