onConfigurationChanged
上调用 Activity
方法。此方法仅针对configChanges
属性在清单中定义的那些配置进行调用。
我在这个configChanges
属性中定义了多个配置(orientation | screenSize),我想检测哪些配置已经改变,以便我可以根据这个改变做一些工作,我怎样才能实现此?
要解决此问题,我有以下代码段:
public class MyActivity extends AppCompatActivity {
private final String TAG = "my-activity";
private Configuration prevConfig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume () {
super.onResume();
prevConfig = new Configuration(getResources().getConfiguration());
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int diff = newConfig.diff(prevConfig);
if(((diff & ActivityInfo.CONFIG_ORIENTATION) != 0)
|| ((diff & ActivityInfo.CONFIG_SCREEN_SIZE) != 0)) {
Log.d(TAG, "Orientation or Screen size has been changed.");
}
// other configuration change checking goes here
prevConfig = new Configuration(newConfig);
}
}
通过这个我可以检测到哪个配置已被更改。
我想知道这是否是达到目标的最佳途径?