2016-12-29 8 views
2

Я хочу разработать макеты как это: режимКак я могу контролировать видимость просмотров (видимое/невидимое) с изменением ориентации?

Портрета XML:

<RelativeLayout> 
    <ToolBar> 
    <ToolBar> 
    <TextView> 
    </TextView> 
    <VideoView> 
    <VideoView> 
    <Webview> 
    </Webview> 
</RelativeLayout> 

ландшафтного режим XML:

<RelativeLayout> 
    <VideoView> 
    <VideoView> 
</RelativeLayout> 

Других виды будут невидимы для ландшафтного режима. Заранее спасибо. Я новичок в разработке Android.

ответ

1

Поскольку ваш макет содержит видеоизображение, я думаю, вы не хотите воспроизводить видео на этой странице.

Для предотвращения активности отдыха и видео перезапускает вы должны добавить android:configChanges="orientation|screenSize" к объявлению деятельности и чем управлять макет в onConfigurationChanged

Просто найти мнения в onCreate`` than show hide them in onConfigurationChanged```

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // setContentView and another onCreate logic code 

    toolbar = findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    textview = findViewById(R.id.textview); 
    webView = findViewById(R.id.webview); 
    videoView = findViewById(R.id.videoview); 

    updateLayout(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    updateLayout(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE); 
} 

private void updateLayout(boolean isLandscape) { 
    if (isLandscape) { 
     textview.setVisibility(View.GONE); 
     webview.setVisibility(View.GONE); 
     getSupportActionBar().hide(); 
    } else { 
     textview.setVisibility(View.VISIBLE); 
     webview.setVisibility(View.VISIBLE); 
     getSupportActionBar().show(); 
    } 
} 
+0

Спасибо. Он работает отлично. вы сохраняете все 2 дня. @ Pogonets Antom –

0

Вы можете создать два различных макета xml-файл для двух разных ориентаций с одинаковым именем и сохранить файл для портретного режима в каталоге layout каталог и ландшафтная версия в layout-land каталог под res каталог. Я думаю, что лучше сделать это так, как управлять видимостью во время выполнения

+0

Это приведет к поломке воспроизведения видео при повороте –

+0

@PogonetsAnton Извините, я не играл с «VideoView». Если это сломается, тогда лучше поговорить с ним. –

+0

Извините. Мой видеоов отлично работает с ответом @Pogonets Antom. –