我在一个布局中有一个小的webView,作为来自我的网站的新闻源。每次更改旋转时,它都会重新加载网页。
因此,我编辑了代码,包括on config change和on restore state。然后调整了我的Android清单,以包括配置更改,从开发者网站上可以看到需要包括方向和屏幕大小。
这解决了保存状态的问题,但同时又创建了一个新问题,即当某些设备处于横向模式时,我有不同尺寸的布局。但是,如何设置清单,则会覆盖屏幕大小。是否有一种方法可以保存状态,但不使用我的清单中的屏幕大小?然后我就可以使用我的横向布局了。
下面是我的方向更改代码。
@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();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_homescreen);
if (savedInstanceState != null)
((WebView)findViewById(R.id.neweview)).restoreState(savedInstanceState);
svHomeScreen = (ScrollView) findViewById(R.id.svHomeScreen);
svHomeScreen.setScrollbarFadingEnabled(false);
wv = (WebView) findViewById(R.id.neweview
);
wv.setScrollbarFadingEnabled(false);
wv.getSettings().setJavaScriptEnabled(true);
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
wv.getSettings().setRenderPriority(WebSettings.RenderPriority.NORMAL);
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
if (Build.VERSION.SDK_INT >= 19) {
// chromium, enable hardware acceleration
wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
// older android version, disable hardware acceleration
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
wv.canGoBackOrForward(5);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv.setPadding(0, 0, 0, 0);
wv.loadUrl(NEWS);
然后我的清单文件有:
<activity
android:name=".Homescreen"
android:label="@string/title_activity_homescreen"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
/>
我已经添加了一个容器和一个Web视图片段,但是当屏幕旋转为横向时,视图会消失。然后在切换回来时完全消失。所以我尝试添加了保存状态并将其保存到out状态中,这样在旋转到横向时可以加载Web视图,但是当返回到纵向时却导致应用程序崩溃。
<activity>
标签(清单)中添加android:configChanges="orientation|screenSize"
吗? - Omar Aflak