2013-05-07 2 views
3

Я загружаю URL-адрес видео в webview с помощью webview.loadUrl(). Игрок закодирован в самом html, поэтому мне нужно загрузить URL-адрес в веб-представление.WebView не правильное изменение ориентации при изменении ориентации

В случае, если я не дам андроид: configChanges = "orientation" в моем манифесте все работает нормально. Веб-просмотр правильно изменяется при изменении ориентации, и видео настраивается так, чтобы он соответствовал экрану, конечно, тогда видео перезапускается.

Поэтому я дал андроид: configChanges = "ориентация" в манифесте, чтобы видео не перезагрузилось. Теперь, хотя видео не перезагружается и продолжает воспроизводиться, но видео/веб-просмотр не изменяются правильно, а половина видео отключается, если устройство изначально было на портрете, а затем изменено на альбомное. В случае, если устройство было первоначально в ландшафтном режиме, а затем переключено в портретный режим, используется только половина экрана.

Пожалуйста, ответьте, если вы можете выяснить способ или какие-либо предложения.

ответ

2

* если configchanges = «ориентация» - не указано, * андроид система обрабатывает изменения и перезапускает макет, поэтому макет недавно созданные и видео загружает с самого начала.

если андроид: configchanges = «ориентация», - Это сказать системе, что эта деятельность будет обрабатывать изменения ориентации на это сам. , поэтому система Android не будет загружать макет обновленно. поэтому видео продолжает воспроизводиться. Ширина родительского макета не изменится. поэтому ширина в портретном режиме используется в ландшафте. поэтому, ur webview кажется маленьким.

необходимо переопределить действие onconfigurationchanged() и обработать изменение ориентации. Вам нужно указать layoutparams для макета.

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

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
      // for example the width of a layout 
      int width = 300; 
      int height = LayoutParams.WRAP_CONTENT; 
      WebView childLayout = (WebView) findViewById(R.id.webview); 
      childLayout.setLayoutParams(new LayoutParams(width, height)); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
     } 
    } 
+0

Спасибо за ответ. Я дам вам знать, если он работает – user2041902

+0

новый LayoutParams (ширина, высота) не работает для уровня api меньше 11. Так что я попробовал LinearLayout.LayoutParams (ширина, высота) для веб-представления, а также макет в котором я разместил webView, но все еще проблема сохраняется – user2041902

+0

@sowmia Если вы не можете общаться, потому что не можете комментировать, отправьте письмо на мой gmail id [email protected] – pvn

0

Просто добавьте следующую строку в вашей деятельности в файле манифеста:

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

Try:

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

    webView.setLayoutParams(new RelativeLayout.LayoutParams(
         ViewGroup.LayoutParams.WRAP_CONTENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT)); 
} 
0

перед такой же вопрос. и решить ее с самым лучшим способом

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

     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
     int height = displayMetrics.heightPixels; 
     int width = displayMetrics.widthPixels; 
     mWebview.setLayoutParams(new LinearLayout.LayoutParams(
       width, 
       height-100)); 

    } 
0

Насколько я могу видеть, должна быть какая-то ошибка в H5 странице similar resize problem

Просто используйте другое приложение (например, браузер Chrome) проверить свой адрес.

Смежные вопросы