我正在使用webview.loadUrl()将视频网址加载到webview中。播放器以html本身编码,因此我只需将网址加载到网页视图中。
如果我在我的清单中没有给android:configChanges =“orientation”,一切正常。 webview会在方向更改时正确调整大小,并调整视频以适应屏幕,然后重新启动视频。
因此我在清单中给了android:configChanges =“orientation”,以便视频不会重新加载。现在虽然视频没有重新加载并继续播放,但视频/ webview没有正确调整大小,如果设备最初处于纵向状态,然后更改为横向,则视频的一半会关闭。如果设备最初处于横向模式,然后更改为纵向模式,则仅使用一半的屏幕。
如果您能找到方法或有任何建议,请回复。
答案 0 :(得分:3)
* 如果configchanges =“orientation” - 未指定 , * android系统处理更改并重新启动布局,因此布局是新创建的,视频从开始加载。
如果android:configchanges =“orientation”, - 这告诉系统此活动将自行处理方向更改。 所以,android系统不会刷新加载布局。所以视频继续播放。父布局的宽度不会改变。所以纵向模式中的宽度用于横向。所以,你的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();
}
}
答案 1 :(得分:1)
尝试:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
webView.setLayoutParams(new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
答案 2 :(得分:0)
只需在清单文件中将以下行添加到您的活动中:
<activity android:configChanges="orientation|screenSize">
答案 3 :(得分: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));
}
答案 4 :(得分:0)
据我所见,H5页面中必定存在一些错误,similar resize problem
只需使用其他应用(如Chrome浏览器)测试您的网址。
答案 5 :(得分:0)
在片段中,必须将FrameLayout用于WebView
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int width = FrameLayout.LayoutParams.MATCH_PARENT;
int height = FrameLayout.LayoutParams.WRAP_CONTENT;
your_webview.setLayoutParams(new FrameLayout.LayoutParams(width, height));
}
答案 6 :(得分:0)
我的回答与上述非常相似,最接近@Arash Sharif。这是对我有用的变体。
上下文:我的应用程序是一个网络应用程序,仅使用 HTML、CSS 和 JavaScript。我通过将它包装在 WebView 控件中将其作为 Android 上的应用程序运行。该应用程序旨在全屏运行,我需要在屏幕重新定向时调整其大小。
我在 Android Studio 工作。我既不是 Android 程序员,也不是 Java 程序员,所以我的解释可能不正确,但我很确定它是有效的。
首先,您需要告诉 Android 您将处理屏幕事件。
AndoidManifest.xml
B[n-1] = count1[n];
for(i=n-2;i>=0;i--)
B[i] = (B[i+1] + count1[i+1])%MOD;
for(i=1;i<n-1;i++)
C[i] = (count1[i+1]*B[i+1])%MOD;
D[n-2] = C[n-2];
for(i=n-3;i>=1;i--)
D[i] = (D[i+1] + C[i])%MOD;
for(i=0;i<n-2;i++)
sum = (sum + count1[i+1]*D[i+1])%MOD;
现在Android会把屏幕事件传递给你处理,所以你需要覆盖处理屏幕事件的函数。
MainActivity.java
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden">
<activity android:name="com.babyclix.babyclix_test.MainActivity"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>