35.横竖屏切换

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

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

默认情况下,横竖屏切换会触发生命周期方法,横竖屏切换的时候当前的activity会destroy,同时会开启另一个activity.如果不行横竖屏不触发生命周期方法,需要将横竖屏切换写死

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方法调用");
    }


	@Override
	protected void onStart(){
		super.onStart();
		System.out.println("第一个onStart方法调用");
	}
	
	@Override
	protected void onResume(){
		super.onResume();
		System.out.println("第一个onResume方法调用");
	}
	
	@Override
	protected void onPause(){
		super.onPause();
		System.out.println("第一个onPause方法调用");
	}
	
	@Override
	protected void onStop(){
		super.onStop();
		System.out.println("第一个onStop方法调用");
	}
	
	@Override
	protected void onDestroy(){
		super.onDestroy();
		System.out.println("第一个onDestroy方法调用");
	}
	
	@Override
	protected void onRestart(){
		super.onRestart();
		System.out.println("第一个onRestart方法调用");
	}
    
}

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


按下ctrl+F11切换横竖屏

打印如下


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值