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)下篇的主要内容,如果未能解决你的问题,请参考以下文章

android怎么设置横竖屏切换

Android应用:横竖屏切换总结

屏幕方向 横竖屏切换

android开发横竖屏问题

android开发横竖屏问题

Android 切换横竖屏