Вид на выход слева и вход справа

Я хочу добавить анимацию, чтобы мое изображение скользило влево, покидало экран и входило справа, возвращаясь в исходное положение. Я пытался сделать что-то вроде этого..

    <translate
        android:duration="1000"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />

    <translate
        android:startOffset="1000"
        android:duration="1000"
        android:fromXDelta="100%p"
        android:toXDelta="0" />

Но анимация не соответствует моему желанию.. Кто-нибудь может мне помочь


person coderock    schedule 08.11.2012    source источник
comment
Пожалуйста, добавьте соответствующие языковые теги   -  person John Dvorak    schedule 08.11.2012


Ответы (2)


Редактировать: Итак, то, что вы пытаетесь сделать, это заноза в заднице ** (да, еще одна из тех вещей для Android, которые должны были быть простыми)! Наличие двух анимаций друг за другом просто не очень хорошо работает в более ранних версиях Android. В версиях never вы можете использовать набор анимаций из API уровня 11. Пример здесь. В качестве альтернативы я бы выбрал более простую анимацию.

Вот как сделать слайд-вход/выход для активности (старый ответ):

Слайд в левой деятельности:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%p" android:toXDelta="0"
    android:duration="@android:integer/config_shortAnimTime"/>

Вставьте правильное действие:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="-100%p" android:toXDelta="0"
    android:duration="@android:integer/config_shortAnimTime"/>

Выдвиньте левую активность:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0" android:toXDelta="-100%p"
    android:duration="@android:integer/config_shortAnimTime" />

Выдвиньте правильное действие:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0" android:toXDelta="100%p"
    android:duration="@android:integer/config_shortAnimTime" />

Пример использования:

Intent intent = new Intent(this, YourNewActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);

Пример использования на спине:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        super.onBackPressed();
        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);
    }
    return super.onKeyDown(keyCode, event);
}
person Warpzit    schedule 08.11.2012
comment
спасибо Warpzit за ваш ответ, но я хочу добавить анимацию к моему изображению. - person coderock; 08.11.2012
comment
вот почему я использовал два перевода вместе со вторым, начинающимся с startOffset для задержки.. - person coderock; 08.11.2012
comment
Warpzit, я понял вашу точку зрения, но у меня есть только одно действие ... я хочу, чтобы мое изображение ушло, а тот же вид вернулся обратно ... - person coderock; 08.11.2012
comment
На самом деле... у меня есть единство 3d в моем представлении, и поэтому это наиболее подходящая анимация... я обнаружил, что после завершения анимации мой вид всегда будет возвращаться в свое предыдущее местоположение... но все же мне интересно, почему анимация не запускайте, как указано в коде... Очень странно, что представление работает нормально, когда используется только один перевод... ВЛЕВО на ВЫХОД и ВПРАВО на ВНУТРИ... но когда они оба вместе... представление появляется скользящим справа движется через экран и уходит через левый... прежде чем вернуться в исходное положение.. - person coderock; 08.11.2012
comment
@kirananil Это просто ошибка. На самом деле я потратил некоторое время, пытаясь заставить его работать, но это не так просто ;) Когда я использовал правильные параметры, он вообще не анимировался, он просто исчезал и возвращался, когда время истекло. Но с 1 анимацией все работало отлично :) - person Warpzit; 08.11.2012

Как сказал Warpzit, это ошибка и известная проблема... как в здесь

Я потратил свое время, думая, что это была ошибка с моей стороны. Альтернатива, указанная разработчиком, такова: «Вы можете добиться этого, используя две анимации. Запустите первую и когда она закончится (используя прослушиватель анимации для уведомления), запустите второй. Это не так красиво и легко, но должно сработать».

и еще одна вещь, которую я узнал, это то, что соты Android имеют больше функций анимации, чем старые версии. Чтобы использовать эти функции в версиях до сот, мы можем использовать девять старых андроидов

person coderock    schedule 08.11.2012