35.横竖屏切换

来源:互联网 发布:linux基础教程第二版 编辑:程序博客网 时间:2024/06/06 02:18

安卓模拟器里,用ctrl+f11按键来触发横竖屏,横竖屏切换的时候默认会触发生命周期方法,

在清单文件中配置下面可以,不用去触发生命周期的方法,下面三种情况发生的时候不会出发生命周期的方法orientation|keyboardHidden|screenSize

android:configChanges="orientation|keyboardHidden|screenSize"
keyboardHidden:隐藏键盘(软键盘出现会改变屏幕的宽高)

screenSize:屏幕宽高改变

orientation:方向改变的时候


避免横竖屏切换,写死,需要在清单文件中对activity配置:

android:screenOrientation="landscape"  //横屏写死
android:screenOrientation="portrait"  //竖屏写死

代码中横竖屏写死的方法:

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//锁屏activity为横屏        //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//锁定为竖屏        System.out.println("第一个onCreate方法调用");    }

测试横竖屏切换出发生命周期方法代码如下:

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /></RelativeLayout>


MainActivy

package com.ldw.hengshu;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        System.out.println("第一个onCreate方法调用");    }@Overrideprotected void onStart(){super.onStart();System.out.println("第一个onStart方法调用");}@Overrideprotected void onResume(){super.onResume();System.out.println("第一个onResume方法调用");}@Overrideprotected void onPause(){super.onPause();System.out.println("第一个onPause方法调用");}@Overrideprotected void onStop(){super.onStop();System.out.println("第一个onStop方法调用");}@Overrideprotected void onDestroy(){super.onDestroy();System.out.println("第一个onDestroy方法调用");}@Overrideprotected void onRestart(){super.onRestart();System.out.println("第一个onRestart方法调用");}    }

横竖屏切换以前打印如下:


按下ctrl+F11切换横竖屏

打印如下


1 0
原创粉丝点击