Android 切换横竖屏

一个项目一般会自己先定义项目是横屏还是竖屏但是也有可以横屏和竖屏之间切换的activty。

切换横竖屏的方法:

//判断当前屏幕方向if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {    //切换竖屏    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}else{    //切换横屏    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}

  

但是这样切换横竖屏会让activity重新加载。生命周期为:

  onStop
  onDestroy
  onCreate
  onStart
  onResume

为了解决这样的问题在配置文件里加上

android:configChanges="orientation|keyboardHidden|screenSize"

就不会重新加载页面,只会进入到切换里面的生命周期中。

  onConfigurationChanged

AndroidManifest.xml

        <activity android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

MainActivity.java 

package com.kkrs.change;

import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button change;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        change = (Button)findViewById(R.id.change);
        Log.e("sys","onCreate");

    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.e("sys","onStart");
        change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("sys","被点击了");
                //判断当前屏幕方向
                if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
                    //切换竖屏
                    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }else{
                    //切换横屏
                    MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                }

            }
        });
    }

    //横竖屏切换
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.e("sys","onConfigurationChanged");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.e("sys","onStop");

    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.e("sys","onResume");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e("sys","onDestroy");

    }
}

  



原文地址:https://www.cnblogs.com/kkrs/p/10107147.html

时间: 2024-08-01 07:14:07

Android 切换横竖屏的相关文章

Android模拟器横竖屏切换

搞了这么长时间的android开发,却对一些基础的东西一直模棱两可...就比如这个onPause和onStop.如果从一个界面,跳到另一个界面,那么是调用哪个呢? 经过我的实验.搞清楚了.onPause是有活动状态变为非活动状态.onStop()是变为不可见.那么从一个页面跳到另一个页面就是依次调用onPause,onStop.看下程序: package com.example.fuhe; import android.os.Bundle; import android.app.Activity

Android 关于横竖屏

横竖屏切换后Activity会重新执行onCreat函数,但是在Android工程的Mainfest.xml中加入android:screenOrientation="user" android:configChanges="orientation|keyboardHidden"之后,横竖屏切换之后就不会去执行OnCreat函数了,而是会去调用onConfigurationChanged(),这样我们就能控制横竖屏的切换了.或者在res目录下建立layout-lan

避免切换横竖屏Fragment的重复加载导致UI混乱

当我们切换横竖屏时 Activity的生命周期就会重走一遍,自然 其中的Fragment的生命周期也就重新走了一遍,实践证明 当熄屏 再开屏时 Fragment的生命周期也会重走一遍 解决方案: android:configChanges="orientation|keyboardHidden|screenSize" 在Activity的配置设置中添加ConfigChanges属性  当切换横竖平时Activity不会重新 走onCreate而是执行onConfigurationCha

具体怎么使用视频播放屏幕的感重力切换横竖屏

之前 , 只是介绍了一些代码去实现视频播放的平复翻转这一功能!可以随你意进行屏幕的翻转,满足用户的需求.但是,当你真的去做一个像的时候,会有问题出现的哦!那到底是什么问题呢?待我..娓娓道来! 是酱汁的,我在使用视频播放的时候会有点击屏幕切换的按钮来进行屏幕横竖屏的切换播放,当然我还有使用翻转屏幕通过感重力来自动的切换屏幕的横竖屏.那么,问题就出现了,点击按钮和感重力~~~会出现冲突!而冲突是这样子的:当前我将手机处于横屏(竖屏),然后此时的我想通过点击按钮来切换屏幕的方向.那么,你会遇到 我点

Android Configuration横竖屏切换时Activity生命周期调用

问题:横竖屏切换时Activity的生命周期? 测试环境:华为mate7 package com.virglass.beyond.activity; import android.app.Activity; import android.content.res.Configuration; import android.os.Bundle; import com.virglass.beyond.utils.LogUtil; /** * 系统设置更改 * @author Administrator

浅析Android的横竖屏切换

上周有个项目需求在横竖屏中控制不一样的布局,我当时采用的方法是写在同一套布局中,监听手机横竖屏的切换事件,来控制布局中各个控件的显示或者隐藏. 这个方法相对来说还行.上几篇帖子中我也说了怎么判断当前手机是横屏模式还是竖屏模式,这里再把工具类贴一下给大家看看: public static boolean isScreenChange(Context mContext) { Configuration mConfiguration = mContext.getResources().getConfi

android开发如何切换横竖屏

横竖屏设置 横竖屏的设置在AndroidManifest.xml文件中: screenOrientation="landscape"为横屏: screenOrientation="portrait"为竖屏:

android实现横竖屏8个方向触屏事件的捕捉并有相对应的动画提示

1:首先来说横竖屏的问题 这里我是在onCreate方法中直接强制横屏竖屏的设置, Button btn; SurfaceView surfaceView; //初始化布局 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); addListener(); } //初始化 pri

Android 禁止横竖屏切换

xml设置竖屏显示<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.himi" android:versionCode="1" android:versionName="1.0"&