Android基础篇 屏幕横竖屏切换(layout-land)下篇
Posted 彭老希
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android基础篇 屏幕横竖屏切换(layout-land)下篇相关的知识,希望对你有一定的参考价值。
默认情况下Activity进行屏幕旋转会自动进行onDestroy并重新onCreate
一、非默认情况下
在androidManifest.xml的Activity中配置
<activity
android:name=".ui.activity.XXXXXActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan" />
(1)禁止屏幕旋转
//始终竖屏
android:screenOrientation="portrait"
//始终横屏
android:screenOrientation="landscape"
(2)Activity跟随旋转但不销毁和重启
android:configChanges="keyboardHidden|orientation|screenSize"
然后在Activity中重写onConfigurationChanged
方法
(仅作为监听屏幕横竖屏状态,吐司提示,可以不要)
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
Toast.makeText(this,"竖屏模式",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"横屏模式",Toast.LENGTH_SHORT).show();
}
}
public static final int ORIENTATION_PORTRAIT = 1; // 标识竖屏
public static final int ORIENTATION_LANDSCAPE = 2; //标识横屏
二、通过 layout-land 构建专属的横屏布局模式
1、首先在工程res目录下新建一个layout-land
2、其次在layout-land目录中新建一个同名
但是是横屏效果的布局
3、代码
@Override
public void onClick(View view) {
//按钮控制切换横竖屏 R.id.img_rotate : 自己定义的一个按钮
if (view.getId() == R.id.img_rotate){
int screenNum = getResources().getConfiguration().orientation;
//判断屏幕当前状态
if (screenNum != Configuration.ORIENTATION_LANDSCAPE){
//切换成横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else {
//切换成竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}
按照上面的流程,构建需要横屏效果的layout-land目录布局,就可以达到有效解决屏幕横竖屏切换啦
三、其他系列文章
Android基础篇 屏幕横竖屏切换以及生命周期管理 上篇
https://blog.csdn.net/weixin_44720673/article/details/114628214
以上是关于Android基础篇 屏幕横竖屏切换(layout-land)下篇的主要内容,如果未能解决你的问题,请参考以下文章