Вращающийся телефон перезагружает видео на андроид - PullRequest
9 голосов
/ 12 мая 2011

Эй, ребята, когда я поворачиваю свой телефон, моя активность возобновляется. У меня есть просмотр видео, воспроизведение видео, я поворачиваюсь и видео перезагружается. Теперь я обнаружил, что добавление этого к моей активности в манифесте исправило его

<activity android:name="Vforum" android:configChanges="orientation"></activity>

Проблема теперь заключается в том, что элементы управления видео не перерисовываются, пока они не исчезнут и не вернутся, оставляя либо очень длинные элементы управления, переходящие из альбомного в портретный режим, либо действительно короткие элементы управления, переходящие из портретного в ландшафтный режим. Как только они исчезают, а затем я нажимаю, чтобы заставить их вернуться, тогда они имеют правильный размер. Есть ли лучший способ сделать это?

Ответы [ 5 ]

23 голосов
/ 10 августа 2011

добавить

android:configChanges="orientation"

к вашей активности в AndroidManifest.xml.

  • решил, что моя проблема не будет загружать прогрессивное видео снова ..

Если ваш целевой уровень API 13 или выше, вы должны включить значение screenSize в дополнение к значению orientation, как описано здесь . Таким образом, ваш тег может выглядеть как

android:configChanges="orientation|screenSize"
3 голосов
/ 12 мая 2011

Попробуйте запомнить положение видеофайла в событиях жизненного цикла Activity.Когда деятельность создана, вы можете получить положение видео и воспроизводить его с момента его перезапуска.

В вашем классе деятельности:

@Override
protected void onCreate(Bundle bundle){
   super.onCreate(bundle);
   int mPos=bundle.getInt("pos"); // get position, also check if value exists, refer to documentation for more info
}

@Override
protected void onSaveInstanceState (Bundle outState){
    outState.putInt("pos", myVideoView.getCurrentPosition()); // save it here
}
1 голос
/ 12 мая 2011

Добавление атрибута configChanges в манифест означает, что вы будете обрабатывать изменения конфигурации самостоятельно .Переопределите метод onConfigurationChanged() в своей деятельности:

int lastOrientation = 0;

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

    // Checks if orientation changed
    if (lastOrientation != newConfig.orientation) {
        lastOrientation = newConfig.orientation;
        // redraw your controls here
    } 
}
0 голосов
/ 28 июля 2018

Вы должны попробовать это. Перейдите к файлу AndroidManifest.xml и добавьте к нему тег.

<activity android:name=".activity_name"
 android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
0 голосов
/ 07 июля 2014

ConfigChanges - это правильно, но он работал так:

    <activity
        android:configChanges="orientation|screenSize" ... >

, а также в классе деятельности

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (lastOrientation != newConfig.orientation) {
        lastOrientation = newConfig.orientation;
        // redraw your controls here
    } 
}
...