Новая активность в 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
);

Это, вероятно, должно немного очистить воздух.

Другие вопросы по тегам