Новая активность в Android "вход со стороны" - PullRequest
37 голосов
/ 26 января 2011

Как лучше всего перейти к новому занятию, но сделать так, чтобы оно скользило влево, и новое занятие появилось на экране? Я использую намерения для вызова нового действия, это способ сделать это, если я хочу, чтобы приложение было легким?

Чтобы объяснить немного лучше: на моем телефоне Android я могу провести взгляд с домашним меню вправо, а затем войти в поток друзей слева и произойдет на экране. Я хочу сделать это в моем приложении с помощью щелчков по кнопкам, это «скольжение», я после. Спасибо!

Ответы [ 5 ]

90 голосов
/ 26 января 2011

В 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);
}
4 голосов
/ 13 июля 2012

Вы можете использовать left_slide_out.xml (просто измените toXDelta в Josh's right_slide_out.xml на чтение -100% p), чтобы старая активность исчезла слева (и также имела одинаковую длительность на обеих анимациях).

3 голосов
/ 26 января 2011

Джемс правильный. По умолчанию вы получаете скользящую анимацию при запуске нового намерения.

Если вы ищете более индивидуальную анимацию, вы можете использовать overridePendingTransition . Имейте в виду, что он был добавлен на уровне API 5. Для ознакомления с примером использования API .

3 голосов
/ 26 января 2011

Да, использование намерений - это стандартный способ начать другое действие, и, как правило, вы делаете то, что вы упоминаете. например startActivity (новое намерение (это myNextActivity.class)); сделаю это.

1 голос
/ 09 марта 2018

Существует некоторая путаница в отношении анимации входа и выхода.Для тех, кто все еще размышляет над этим, вот шаблон ..

overridePendingTransition(
    enterAnimationForCalledActivity, 
    exitAnimationForCallingActivity
);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...