横竖屏切换android:configChanges的使用

本文介绍如何在Android应用中通过Java代码实现手机横竖屏切换时的方向显示,并提供了两种方法来避免Activity在横竖屏切换时的重新构造。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[java]  view plain copy
  1. package com.liupan.configchanges;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.res.Configuration;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.widget.TextView;  
  8.   
  9. public class MainActivity extends Activity {  
  10.   
  11.     private TextView text;  
  12.   
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.         Log.e("横竖屏切换 onCreate""onCreate");  
  18.         text = (TextView) findViewById(R.id.text);  
  19.         text.setText("屏幕方向");  
  20.   
  21.     }  
  22.   
  23.       
  24.     @Override  
  25.     public void onConfigurationChanged(Configuration newConfig) {  
  26.         // TODO Auto-generated method stub  
  27.         super.onConfigurationChanged(newConfig);  
  28.         Log.e("横竖屏切换 onConfigurationChanged""onConfigurationChanged");  
  29.         if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {  
  30.             text.setText("当前为横屏");  
  31.         } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {  
  32.             text.setText("当前为竖屏");  
  33.         }  
  34.     }  
  35.   
  36. }  

默认不进行设置的话,手机的横竖屏切换会使当前的Activity重新构造,onPause ->onStop->onDestory-> onCreate ->onStart ->onResume.

如果不想这样的话,有两种方式:


 1. 直接设置屏幕为横屏或者竖屏    

            android:screenOrientation="landscape"
            android:screenOrientation="portrait"

这时也可以手动切换

[java]  view plain copy
  1. btn = (Button) findViewById(R.id.btn);  
  2.     btn.setOnClickListener(new View.OnClickListener() {  
  3.   
  4.         @Override  
  5.         public void onClick(View v) {  
  6.             // TODO Auto-generated method stub  
  7.             int oritentation = getRequestedOrientation();  
  8.             if (oritentation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {  
  9.                 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
  10.             } else if (oritentation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {  
  11.                 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
  12.             }  
  13.   
  14.         }  
  15.     });  


 2. 通过设置 android:configChanges="orientation|keyboardHidden“

        但是需要注意的是 :在Android3.2  API13以及以上系统中,需要再添加一个属性screenSize才行,orientation|keyboardHidden |screenSize,这样才能Activity不重新创建.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值