Изменить начало анимации экрана - PullRequest
0 голосов
/ 19 января 2019

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

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 20 января 2019

Вы должны определить два animations: вход и выход для вашей деятельности

R.anim.enter

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

R.anim.выйти

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

и использовать эту анимацию в своей деятельности

class TestActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        overridePendingTransition(R.anim.enter, android.R.anim.fade_out)
    }

    override fun finish() {
        super.finish()
        overridePendingTransition(R.anim.exit, android.R.anim.fade_in)
    }

    override fun onBackPressed() {
        finish()
    }
}
0 голосов
/ 20 января 2019

Вы можете вызвать overridePendingTransition после startActivity (), чтобы изменить запуск анимации новой активности.

попробуйте эту строку кода

slide_to_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
           android:interpolator="@android:anim/accelerate_decelerate_interpolator"
           android:duration="@integer/slide_animation_duration"/>

slide_to_right

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
           android:interpolator="@android:anim/accelerate_decelerate_interpolator"
           android:duration="@integer/slide_animation_duration"/>

MainActivity.java

startActivity (намерение); overridePendingTransition (R.anim.slide_from_right, R.anim.slide_to_left);

0 голосов
/ 19 января 2019

Я не знаю, как изменить, как начинается действие, но чтобы закрыть его определенным образом, вы можете переопределить метод finish () и добавить анимацию.

Вы можете вызвать overridePendingTransition после startActivity (), чтобы изменить то, как меняется сцена, когда вы начинаете новое действие.

@Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_bottom);
    }

, где slide_out_bottom находится в папке Res \ anim и может выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_longAnimTime"
        android:fromYDelta="0"
        android:toYDelta="100%p" />
</set>

Это измененный код из проекта, поэтому вы должны его протестировать.

...