2013-05-07 113 views
3

我正在使用webview.loadUrl()将视频url加载到webview中。播放器编码在html本身,所以我只需要加载到web视图的网址。WebView无法正确定位方向更改

万一如果我不给android:configChanges =“orientation”在我的清单中一切正常。 webview会根据方向更改正确调整大小,并调整视频以适当地适合屏幕,然后重新开始视频。

因此,我在清单中给出了android:configChanges =“orientation”,以便视频不会重新加载。现在,虽然视频不会重新加载并继续播放,但视频/网络视图不能正确调整大小,并且如果设备最初处于纵向状态,然后更改为横向,则视频的一半会熄灭。如果设备最初处于横向模式,然后更改为纵向模式,则只使用屏幕的一半。

请回复,如果你能想出办法或有任何建议。

回答

2

* 如果configchanges =“方向” - 不指定 * android系统的处理变化和重新布局,所以刚开始从创建的布局和视频负载。

if android:configchanges =“orientation”, - 这告诉系统该活动将通过它自己处理方向更改。 所以,Android系统不会刷新加载布局。所以视频继续播放。父布局的宽度不会改变。因此纵向模式下的宽度用于横向。所以,你的webview似乎很小。

您需要重写活动中的onconfigurationchanged()并处理方向更改。 您需要指定版面布局的布局。

@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 2013-05-08 06:04:08

+0

新的LayoutParams(宽度,高度)不适用于小于11的api级别。所以我尝试LinearLayout.LayoutParams(宽度,高度)的web视图以及布局我已经放置了webView,但问题仍然存在 – user2041902 2013-05-09 06:06:11

+0

@sowmia如果因为不能发表评论而无法沟通,请发送邮件到我的gmail ID [email protected] – pvn 2013-05-09 06:51:39

0

只是将下面的行添加到您的活动清单文件:

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

尝试:

@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浏览器)测试您的网址。