我希望我的一项活动从屏幕底部开始时开始,到结束时我希望其消失在屏幕底部。 有可能做到吗?如果是的话-知道如何吗?
谢谢。
答案 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);