当前位置:   article > 正文

Android中的onConfigurationChanged的使用

Android中的onConfigurationChanged的使用

一.什么时候调用:

设备配置发生变化的时候调用,比如:内外屏切换、屏幕方向(orientation)、键盘状态(keyboard)、语言环境(locale)、屏幕布局(screenlayout)等。

二.哪些类可以重写onConfigurationChanged方法:

Activity、View(ViewGroup)、Fragment、Service、Content Provider

三.案例分析:

1.Activity案例分析:

manifest不做任何配置时候,代码如下:

  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. Log.d("20240324", "走了onCreate");
  7. }
  8. @Override
  9. public void onConfigurationChanged(@NonNull Configuration newConfig) {
  10. super.onConfigurationChanged(newConfig);
  11. Log.d("20240324", "走了onConfigurationChanged");
  12. }
  13. }

这个时候旋转手机屏幕,会发现只会重新走一遍activity的创建过程,不会走onConfigurationChanged这个回调。

2024-03-24 14:16:26.463 27562-27562/? D/20240324: 走了onCreate

在manifest中进行如下配置:(注意这里不能只写orientation不行,不然还是会走重建逻辑)

android:configChanges="orientation|screenSize"

这个时候旋转屏幕,就不会走activity的销毁重建步骤了,只会走onConfigurationChanged这个回调。

2024-03-24 14:27:51.117 28393-28393/? D/20240324: 走了onConfigurationChanged

怎么设置activity锁定屏幕方向呢,方法有以下两个:

可以在manifest中进行设置:

  1. //锁定横屏
  2. android:screenOrientation="landscape"
  3. //锁定竖屏
  4. android:screenOrientation="portrait"

可以在代码中进行设置:

  1. //设置横屏锁定
  2. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  3. //设置竖屏锁定
  4. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

这里再扩充一下,对于通过WindowManager的addview方法得到的悬浮窗如下设置其横竖屏方向:

  1. WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
  2. WindowManager.LayoutParams mWindowLayoutParams = new WindowManager.LayoutParams();
  3. //设置锁定横屏
  4. mWindowLayoutParams.screenOrientation=(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  5. View layout = LayoutInflater.from(this).inflate(R.layout.activity_main, null);
  6. windowManager.addView(layout,mWindowLayoutParams);

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

闽ICP备14008679号