Android 切换横竖屏
Posted 初学者2256
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"); } }
以上是关于Android 切换横竖屏的主要内容,如果未能解决你的问题,请参考以下文章