我正在制作一个包含recyclerview的应用程序。在活动开始时,recyclerview的项目从底部显示(滑入)动画。单击一个项目时,它导航到另一个活动。我希望项目在退出当前活动之前随动画消失(滑出)。就我而言,我希望物品掉落(滑出),然后开始新的活动。有什么办法可以在退出活动之前滑出物品?
答案 0 :(得分:1)
我已经在我的一个Android应用中使用了它。我将用爆炸动画对此进行解释。
假设您有2个活动A(GridList活动)和B活动(DetailActivity)。
A-> B
您可以通过这些简单的步骤来实现
1。启用内容转换
将此代码添加到您的style.xml
<item name="android:windowContentTransitions">true</item>
2。将“默认”设置为进入并退出动画
在活动A中编写此方法,它将为您处理动画。
public void setAnimation()
{
if(Build.VERSION.SDK_INT>20) {
Explode explode = new Explode();
explode.setDuration(1000);
explode.setInterpolator(new DecelerateInterpolator());
getWindow().setExitTransition(explode);
getWindow().setEnterTransition(explode);
}
}
3。用意图开始活动
将其添加到活动A中以启动活动B。请注意,动画仅在SDK>20
以上起作用。因此,如果您的最低sdk较低,那么您还必须检查一下SDK。只需使用此代码段,您就可以开始使用。
public void startActivity(){
Intent i = new Intent(BlankActivity.this, AllImageActivity.class);
i.putStringArrayListExtra(MOVIE_LIST, movie.getImages());
if(Build.VERSION.SDK_INT>20)
{
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(BlankActivity.this);
startActivity(i,options.toBundle());
}
else {
startActivity(i);
}
}
您应将setAnimation()
放在setContentView(R.layout.yourLayout)
之前,否则动画将不起作用。因此,活动A应该看起来像这样
Activity A extends .... {
@Override
protected void onCreate(Bundle savedInstaceState)
{
super.onCreate(savedInstaceState);
setAnimation();
setContentView(R.layout.image_landing_layout);
startActivity(); // Use as you wish
.......
}
public void setAnimation(){
..........
}
我不是在任何IDE上编写此代码,因此不介意任何语法错误。但这会把你推向正确的轨道。
您可以签出我的Repository。但是您可能很难在那里找到它。希望这可以帮助。