根据我自己的一些了解,对横竖屏有下面几种尝试
值得一提的是判断横竖屏,网上一般有两种方式
方式一:
int orientation = getRequestOrientation();
if( orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ){
//处理横屏模式
} else if( orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ){
//处理竖屏模式
}
不知道是什么原因,反正我在我的电脑上这种方式不得行,这种方式我就直接没有载考虑了
方式二:
int orientation = getResources().getConfiguration().orientation;
if( orientation == Configuration.ORIENTATION_PORTRAIT ){
//处理竖屏模式
} else if( orientation == Configuration.ORIENTATION_LANDSCAPE ){
//处理横屏模式
}
方法一: 新建一个layout-land
- 方法:res右键new,新建一个Android Resource Package,名称一般写成layout-land,Resource type选择layout。这样然后如果你想要一个活动(这个活动绑定的layout中的xml文件是a.xml)的横屏展示,就在layout-land中新建一个相同名字的a.xml,然后在这里编写横屏的界面。
- 注:这种方法很简单,也相对很容易实现,但是这种方式的话有一个很大的问题,就是涉及到页面的重新加载,如下图
这样就造成了资源的浪费,而且数据如果多的话体验也不会好。
方法二:重写onConfigurationChanged()方法(推荐)
- 方法:在AndroidManifest中你想要的实现横竖屏的活动下面使用onConfigChanges,如下:
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这样在横竖屏切换的时候页面就不会重新加载,然后在MainActivity(你想要横竖屏切换的活动中重写onConfigurationChanged()方法,判断横竖屏来加载不同的布局,如下:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
//竖屏处理
Log.d(TAG, "--这是竖屏模式");
setContentView(R.layout.activity_main);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
//横屏处理
Log.d(TAG, "--这是横屏模式");
setContentView(R.layout.activity_main_land);
}
}