Некоторые версии Android поддерживают пользовательские переходы Activity
, а некоторые нет (более старые устройства). Если вы хотите использовать пользовательские переходы, рекомендуется проверить, есть ли у Activity
метод overridePendingTransition()
, в отличие от более старых версий.
Чтобы узнать, существует ли метод или нет, можно использовать API отражения. Вот простой код, который проверит и вернет метод, если он существует:
Method mOverridePendingTransition;
try {
mOverridePendingTransition = Activity.class.getMethod(
"overridePendingTransition", new Class[] { Integer.TYPE, Integer.TYPE } );
/* success */
} catch (NoSuchMethodException nsme) {
/* failure, this version of Android doesn't have this method */
}
И тогда мы можем применить наш собственный переход, то есть использовать этот метод, если он существует:
if (UIConstants.mOverridePendingTransition != null) {
try {
UIConstants.mOverridePendingTransition.invoke(MainActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out);
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Здесь, в качестве примера, для демонстрации перехода использовались простые анимации постепенного появления и исчезновения.