切换活动时如何触发各个视图的动画? 即如果用户单击按钮转到下一页,我希望我的一些视图可以飞离屏幕,并将背景交叉淡入淡出到下一个屏幕,而不是将整个屏幕设置为一个动画。
这可能吗?如果是这样,应该怎么做? (我使用的是最新的API,4.1,它不必向后兼容)
编辑:目前,通过在onResume()中调用它来进行转换动画工作正常,但是当我按下时,活动切换的速度比onPause()中启动的任何动画都要快,这让我觉得有更好的这样做的方式/地点。
答案 0 :(得分:2)
当您在以下活动之间切换时,您可以设置动画(例如幻灯片):
slide_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="200"/>
</set>
slie_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="200" />
</set>
然后在你的java代码上写下这个:
Intent i = new Intent(YourActivity.this, OtherActivity.class);
this.startActivity(i);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
如果您在真实设备上进行测试,请不要忘记允许它播放动画(设置 - &gt;显示 - &gt;动画 - &gt;所有动画)
希望它有所帮助!:)
答案 1 :(得分:2)
覆盖onResume()工作正常,但onPause / onStop不等待 在移动到下一个屏幕之前完成动画。
从什么开始活动前。按钮单击将需要在调用启动活动之前启动动画。
button.setOnClickListener(new ViewOnClickListener() {
@Override
void onClick(... {
// start animations
// wait till they are finished
// start activity
}
});
由于每个启动新活动的事件都会有动画代码,我还建议将其移动到某种辅助类中,以避免在整个地方出现重复的代码。离。
button1.setOnClickListener(new ViewOnClickListener() {
@Override
void onClick(... {
helper.AnimateViews(/* probably pass activity or context */);
// start activity
}
});
button2.setOnClickListener(new ViewOnClickListener() {
@Override
void onClick(... {
helper.animateViews(/* probably pass activity or context */);
// start activity
}
});
public class ViewAnimiationHelper {
public void animateViews(Activity activity) {
// find all views if not found then don't animate them
View view1 = activity.findViewById(R.id.view1);
if(view1 != null) {
// animate view
}
View view2 = activity.findViewById(R.id.view1);
if(view2 != null) {
// animate view
}
}
}
这是所有sudo java代码,但希望足以让你明白这个想法。祝你好运!