2011-03-08 4 views
8

액티비티에는 비디오 위젯 (VideoView 또는 SurfaceView와 관련된 MediaPlayer)이 내장되어있어 화면을 회전 할 때 크기를 조정해야합니다. 이 활동은 TabHost의 콘텐츠로 사용됩니다.Recompose 화면이 회전 할 때 전체 화면으로 비디오를 재생하기위한 작업 레이아웃

나의 현재 접근 나는 두 개의 레이아웃 세로 하나, 가로 방향의 경우 다른 (./res/layout 및 ./res/layout-land 폴더에 위치) 제공 한 화면 회전을 처리하기 위해

.

이 방법의 문제점은 각 회전마다 새로운 활동이 만들어져 동일한 MediaPlayer (또는 VideoView)를 사용하지 않는다는 것입니다.> 화면을 회전 할 때마다 처음부터 비디오를 시작합니다. 비디오가 웹에서 스트리밍 될 때 다른 활동에서 비디오를 다시 시작할 때이 위치를 찾으려면 비디오에 위치를 저장하는 방법이 없습니다. 내가

을하고 싶은 무엇

나는// 스케일을 변환 화면이 회전 할 때 활동 내부 의견을 숨길 수 있어야합니다. 변환/스케일링은 다른 화면 크기에 맞게 레이아웃을 조정하기 위해 레이아웃 구성을 유지해야합니다.

Desired animation/layout

내 질문에

  • 방법 화면의 왼쪽 상단 위치로 뷰를 이동/번역?
  • 숨기기/번역하는 방법보기를 사라지게하려면 화면 외부에서보기?
  • 크기를 조정하는 방법 /보기 크기를 조정하여 주위의 사용 가능한 공간에 크기를 조정 하시겠습니까?

  • 이러한 변환을 실행하기 위해 화면 회전을 알리기 위해 구현해야하는 인터페이스는 무엇입니까?

+1

+1 질문에 대한 매우 멋진 프레임 구성 ........ –

답변

9

마침내 좋은 방법을 찾았습니다. Android 설명서에서 새 활동을 다시 만들지 않고 수정 (방향, 키보드 등)을 처리해야하는 경우 Activity 클래스의 onConfigurationChanged 메소드를 재정 의하여해야한다고 지정되었습니다. 활동의 매니페스트 파일에서 의미가있는 수정 사항을 지정해야합니다.

here에 대한 자세한 정보를 찾을 수 있습니다.

<activity android:name=".MyActivity" android:configChanges="orientation"></activity> 

그리고 나는 다음과 같은 방법을 추가 한 내 MyActivity 활동 내부 : 내 활동에 대해 다음과 레이아웃

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     int visibility = View.VISIBLE; 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      visibility = View.GONE; 
     } 
     getTabHost().getTabWidget().setVisibility(visibility); 
    } 

:

내 경우

내 활동 매니페스트처럼 보인다

<?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"> 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 

    </LinearLayout> 

</TabHost> 

이렇게하면 tabWidget 막대를 숨기거나 표시 할 때 VideoView가 TabHost의 콘텐츠에 추가 된 크기가 조정되고 가로 모드에서는 영화를 볼 전체 화면이 있습니다.

여러분 중 일부에게 도움이되기를 바랍니다.

관련 문제