更改屏幕动画的开始

时间:2019-01-19 19:16:59

标签: android android-activity start-activity

我希望我的一项活动从屏幕底部开始时开始,到结束时我希望其消失在屏幕底部。 有可能做到吗?如果是的话-知道如何吗?

谢谢。

3 个答案:

答案 0 :(得分:0)

我不知道如何更改活动的开始方式,但是要以某种方式使其关闭,您可以覆盖finish()方法并添加动画。

您可以在startActivity()之后调用overridePendingTransition,以更改启动新活动时场景的变化方式。

@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>

这是项目中的更改代码,因此您必须对其进行测试。

答案 1 :(得分:0)

您应该定义两个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.exit

<?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()
    }
}

答案 2 :(得分:0)

您可以在startActivity()之后调用overridePendingTransition来更改开始新的活动动画。

尝试此行代码

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(intent); OverridePendingTransition(R.anim.slide_from_right,R.anim.slide_to_left);