Новая активность в Android "вход со стороны"
Как лучше всего перейти к новому действию, но сделать так, чтобы оно скользило влево, и новое занятие появилось на экране? Я использую намерения для вызова нового действия, это способ сделать это, если я хочу, чтобы приложение было легким?
Чтобы объяснить немного лучше: на моем телефоне Android я могу провести вид с домашним меню вправо, а затем входит в поток друзей слева и происходит на экране. Я хочу сделать это в моем приложении с помощью щелчков мышью, это "скольжение", я после. Спасибо!
5 ответов
В Android OS 2.1 или более поздней версии я думаю, что вы можете использовать метод OverridePendingTransition (), чтобы обеспечить вид перехода между анимациями действий, которые вы ищете.
Во-первых, определите пару ресурсов анимации в / res / anim /. Вот тот, который называется right_slide_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="500"
/>
</set>
Другой называется right_slide_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="700"
/>
</set>
Затем, когда вы начинаете новое действие, используйте метод OverridePendingTransition как в:
startActivity(intent);
overridePendingTransition (R.anim.right_slide_in, R.anim.right_slide_out);
Это должно обрабатывать анимацию перехода для начала действия.
И наоборот, когда это действие заканчивается и вы возвращаетесь к исходному, оно становится немного более туманным.
Если у вас есть некоторый элемент управления пользовательского интерфейса, который завершает эту деятельность и вызывает Activity.finish (), то вы можете просто добавить overridePendingTransition () сразу после этого.
Чтобы обработать случай, когда пользователь заканчивает действие, нажав кнопку "Назад", используйте что-то вроде следующего:
@Override
public void onBackPressed()
{
this.finish();
overridePendingTransition (R.anim.right_slide_in, R.anim.right_slide_out);
}
Вы можете использовать файл left_slide_out.xml (просто измените toXDelta в файле right_slide_out.xml Джоша на чтение -100%p), чтобы старая активность исчезла влево (и также имела одинаковую продолжительность в обеих анимациях).
Да, использование намерений - это стандартный способ начать другое действие, и обычно вы делаете скользящую вещь, о которой вы упомянули. например startActivity( new Intent( this, myNextActivity.class)); сделаю это.
Джемс это правильно. По умолчанию вы получаете скользящую анимацию при запуске нового намерения.
Если вы ищете более индивидуальную анимацию, вы можете использовать overridePendingTransition. Имейте в виду, что он был добавлен в API Level 5. См. Эту демонстрацию API для примера использования.
Существует некоторая путаница относительно того, что такое анимация входа и выхода. Для тех, кто все еще размышляет над этим, вот шаблон..
overridePendingTransition(
enterAnimationForCalledActivity,
exitAnimationForCallingActivity
);
Это, вероятно, должно немного очистить воздух.