活动退出时的RecyclerView动画

时间:2018-12-11 08:02:43

标签: android animation android-recyclerview android-animation recycler-adapter

我正在制作一个包含recyclerview的应用程序。在活动开始时,recyclerview的项目从底部显示(滑入)动画。单击一个项目时,它导航到另一个活动。我希望项目在退出当前活动之前随动画消失(滑出)。就我而言,我希望物品掉落(滑出),然后开始新的活动。有什么办法可以在退出活动之前滑出物品?

编辑:类似于以下内容:
enter image description here

1 个答案:

答案 0 :(得分:1)

您需要Slide动画。

我已经在我的一个Android应用中使用了它。我将用爆炸动画对此进行解释。

假设您有2个活动A(GridList活动)和B活动(DetailActivity)。
A-> B

enter image description here

您可以通过这些简单的步骤来实现

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。但是您可能很难在那里找到它。希望这可以帮助。