2017-10-12 43 views
3

exoplayer를 사용하여 내 안드로이드 앱의 URL에서 비디오를 재생하고 있습니다. 초상화에서는 모든 것이 예상대로 작동합니다 (뷰 페이지, 프래그먼트 및 활동 내 탭 사용). 내 목표는 사용자가 풍경에있을 때 전체 화면으로 비디오를 재생하는 것입니다. 즉, 비디오는 가로로 재생되고 다른 모든 세부 사항은 사라질 것이고 세로 방향 인 경우 원본 레이아웃으로 되돌아갑니다. 어떻게하면 좋을까요? 또는 이것을 달성하는 가장 좋은 방법은 무엇입니까? 어떤 샘플 코드도 감사 할 것입니다. 이 내가 도울 수있는 최선 그래서Exoplayer를 사용하여 가로로 비디오를 전체 화면으로 재생하는 방법

Video to be play when portrait

답변

4

내가 BTW 나는 Exoplayer 데모 응용 프로그램에서이 테스트를하는 멍청한 놈, 나는 600PX에 exoplayer 높이를 변경하고이 코드를 적용하고 완벽하게 일했다.

화면 방향이 FrameLayout이 있지만, RelativeLayout의

 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) simpleExoPlayerView.getLayoutParams(); 
난 당신이 희망, 작업 또는 제목 표시 줄을 숨길 필요가 있음을 잊어

를 사용하지 않는 경우 BTW

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checking the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    //First Hide other objects (listview or recyclerview), better hide them using Gone. 
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) simpleExoPlayerView.getLayoutParams(); 
    params.width=params.MATCH_PARENT; 
    params.height=params.MATCH_PARENT; 
    simpleExoPlayerView.setLayoutParams(params); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
    //unhide your objects here. 
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) simpleExoPlayerView.getLayoutParams(); 
    params.width=params.MATCH_PARENT; 
    params.height=600; 
    simpleExoPlayerView.setLayoutParams(params); 
    } 
} 

를 감지하는 코드를 추가 코드는 위의 코드 안에이 코드를 추가하는 데 도움이되며 getSupportActionBar 코드가 작동하려면 AppCompatActivity로 활동을 확장해야한다고 생각합니다.

if(getSupportActionBar()!=null) { 
    getSupportActionBar().hide(); 
} 
//To show the action bar 
if(getSupportActionBar()!=null) { 
    getSupportActionBar().show(); 
} 

또한이 상태 bar.etc을 숨기기 위해, 전체 화면으로 전체 프로젝트를 설정하는 데 도움이 될 수 있습니다, 화면 방향에 따라의 onConfigurationChanged 내부에 추가해야합니다. 풍경

ExoPlayerActivity.this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN || View.SYSTEM_UI_FLAG_IMMERSIVE); 

내가 코드를 편집

ExoPlayerActivity.this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

인물에 전체 화면을 종료하려면, 내가 컨트롤 버튼에의 할 때 사용자가 클릭을 보여주는에서 상태 표시 줄을 방지하기 위해 View.SYSTEM_UI_FLAG_IMMERSIVE 추가 비디오.

+0

답변 해 주셔서 감사합니다. 그러나 마지막으로 Dialog를 사용하여이 문제를 해결하는 github 프로젝트가 발견되었습니다. https://github.com/GeoffLedak/ExoplayerFullscreen – scalp007