自定义配置变化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WAN_EXE/article/details/83180827

大家都知道手机旋转屏幕的时候activity会重启,安卓提供两种方式来处理配置变化。

1.保留一个配置对象

一般是使用onSaveInstanceState()的Bundle对象进行数据传递,还可以使用ViewModel对象,后面再作分析。

2.自定义配置变化

如果你的程序在特殊的配置变化时不需要更新资源,你可以自己处理配置变化,防止系统重启你的activity,虽然系统并不推荐这么做。

你需要在activity的配置文件中申明android:configChanges属性,属性值代表你想自己处理的配置变化。通常有orientation, screenSize, keyboardHidden。你可以使用 | 来表示想要处理多个配置。

<activity android:name=".appresources.CustomConfigurationChange"
            android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
            android:launchMode="singleInstance"
            android:taskAffinity=""/>

那么当其中一个配置信息发生变化之后,系统会调用onConfiguraionChanged()函数,这个函数传递一个Configuration的对象表示新设备的配置。通过读取Configuration的属性,你可以知道新的配置信息,从而做出相关的更新。

写一个Activity文件,实现各个回调函数,在每个回调函数中加一个log,使用自定义的Log系统就可以在手机上看到相关回调的输出。

源码在appresources目录里面。

当旋转屏幕的时候可以看做只有onConfigurationChanged()函数被回调,横屏使用land表示,竖屏使用port表示。

2018-10-19 13:09:11.056 14802-14802/com.android.guide D/ConfigurationChange:
 onConfigurationChanged: {1.0 460mcc11mnc [en_US] ldltr sw360dp w360dp 
h616dp 320dpi nrml long port finger -keyb/v/h -nav/h s.70 themeChanged=0
themeChangedFlags=0}
扫描二维码关注公众号,回复: 3659357 查看本文章

猜你喜欢

转载自blog.csdn.net/WAN_EXE/article/details/83180827