当前位置:   article > 正文

Android 手机横竖屏切换_android 横竖屏切换demo

android 横竖屏切换demo

竖屏与横批切换

手机有竖屏与横屏两种模式,两种屏幕方向不但造成App界面的展示差异,而且竖屏和横屏切换之际,甚至会打乱App的生命周期。

系统配置变更的处理机制

为了避免横竖屏切换时重新加载界面的情况,Android设计了一种配置变更机制,在指定的环境配置发生变更之时,无需重启活动页面,只需执行特定的变更行为。该机制的实现过程分为两步:

  • 修改AndroidManifest.xml,给activity节点增加 android:configChanges 属性

  • 修改活动页面的Java代码,重写活动的 onConfigurationChanged 方法,补充对应的代码处理逻辑。

代码案例

效果图

横屏时

代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android">
  3. <application
  4. android:allowBackup="true"
  5. android:icon="@mipmap/ic_launcher"
  6. android:label="@string/app_name"
  7. android:roundIcon="@mipmap/ic_launcher_round"
  8. android:supportsRtl="true"
  9. android:theme="@style/Theme.AndroidAndroidDemo">
  10. <activity
  11. android:name=".MainActivity"
  12. android:exported="true"
  13. android:configChanges="orientation|screenLayout|screenSize">
  14. <intent-filter>
  15. <action android:name="android.intent.action.MAIN" />
  16. <category android:name="android.intent.category.LAUNCHER" />
  17. </intent-filter>
  18. <meta-data
  19. android:name="android.app.lib_name"
  20. android:value="" />
  21. </activity>
  22. </application>
  23. </manifest>

  1. package com.example.horizontalandportraitswitching;
  2. import androidx.annotation.NonNull;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import android.content.res.Configuration;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.TextView;
  9. public class MainActivity extends AppCompatActivity {
  10. public TextView textView;
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. textView = findViewById(R.id.mtext);
  16. Log.d("hu","activity创建了");
  17. }
  18. //在配置项变更时出发.比如屏幕方向发生变更等等
  19. @Override
  20. public void onConfigurationChanged(@NonNull Configuration newConfig) {
  21. super.onConfigurationChanged(newConfig);
  22. switch (newConfig.orientation){
  23. case Configuration.ORIENTATION_PORTRAIT:
  24. textView.setText("当前屏幕为竖屏方向");
  25. break;
  26. case Configuration.ORIENTATION_LANDSCAPE:
  27. textView.setText("当前屏幕为横屏方向");
  28. break;
  29. default:
  30. break;
  31. }
  32. }
  33. }

注意:

修改AndroidManifest.xml,给activity节点增加 android:screenOrientation 属性可以设置只能为竖屏或横屏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/373091
推荐阅读
相关标签
  

闽ICP备14008679号