项目中,只允许一个界面在横屏的时候,显示是全屏的,竖屏切换回来的时候又需要显示状态栏,所以需要监听横竖屏的状态,还要修改状态栏的隐藏与显示,如下代码:
/**
* 添加横竖屏监听,隐藏图形的菜单控件,2015年11月12日10:15:00:qiulinhe
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// // 设置全屏
WindowManager.LayoutParams lp = getActivity().getWindow()
.getAttributes();
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getActivity().getWindow().setAttributes(lp);
getActivity().getWindow().addFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
pricemenu.setVisibility(View.VISIBLE);
chart_btn.setVisibility(View.GONE);
user_status_bar.setVisibility(View.GONE);
// chart_btn.setVisibility(View.VISIBLE);
// chatrbtnlayout.setVisibility(View.VISIBLE);
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
WindowManager.LayoutParams attr = getActivity().getWindow()
.getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getActivity().getWindow().setAttributes(attr);
getActivity().getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
pricemenu.setVisibility(View.VISIBLE);
user_status_bar.setVisibility(View.VISIBLE);
chart_btn.setVisibility(View.VISIBLE);
pricemenu.setVisibility(View.GONE);
}
}
布局中,采用的线性权重布局,如下示例:
<LinearLayout
android:id="@+id/chart_webviewlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:orientation="vertical"
>
<WebView
android:id="@+id/chart_webview"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_weight="4"
android:visibility="gone" />
<LinearLayout
android:id="@+id/pricemenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/black"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:visibility="gone" >
<TextView
android:id="@+id/buttonceshi"
android:layout_width="65dp"
android:layout_height="45dp"
android:layout_weight="1"
android:background="@drawable/amenu" /><pre name="code" class="html"></LinearLayout
这里有一个问题是让webview占据横屏的全屏时,我设置了300dp,依旧占满了屏幕
记录一下,以便日后查找
===========================分割线,2015年11月23日09:22:56=================================
上述方式设置的时候会出现问题,后来就修改成如下代码,就可以单独的设置某个界面是否显示状态栏,如下:
/**
* 添加横竖屏监听,隐藏图形的菜单控件
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// // 设置全屏
// // 设置全屏
getActivity().getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
WindowManager.LayoutParams attrs = getActivity().getWindow()
.getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getActivity().getWindow().setAttributes(attrs);
}
}