2016-12-06 141 views
7

我想在RecyclerView上使用共享元素转换,但它似乎不工作。RecyclerView中的共享元素转换

这是我的适配器的一部分中,我使用makeSceneTransitionAnimation()

public void onBindViewHolder(final BookViewHolder holder, final int position) { 
     holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(context, DetailsActivity.class); 
       ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity)context , holder.smallThumbnail, "thumbnailTransition"); 
       context.startActivity(intent, optionsCompat.toBundle()); 
      } 
     } 
} 
+0

还添加DetailsActivity –

+0

的代码,你可以看看这个教程一旦https://github.com/codepath/android_guides/wiki/shared-element-activity-transition –

+0

@vinayManeti它看起来是相同的代码,除了它在一个活动中使用,我用它在一个适配器。 – RandomyzeEverything

回答

9

在适配器

holder.smallThumbnail.setTransitionName("thumbnailTransition"); 
Pair<View, String> pair1 = Pair.create((View) holder.smallThumbnail, holder.smallThumbnail.getTransitionName()); 

ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) mContext, pair1, pair2); 
mContext.startActivity(intent, optionsCompat.toBundle()); 

在您的详细活动

getWindow().setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element_transation)); 
mainImage.setTransitionName("thumbnailTransition"); 

下面这个mainimage是ImageView的,你想改变你以前的活动缩略图

shared_element_transation建立在res一个XML>过渡

<?xml version="1.0" encoding="utf-8"?> 
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" 
android:duration="500"> 
<changeBounds /> 
<fade /> 
</transitionSet> 
+0

我得到一个ClassCastException在'(Activity)mContext'说“应用程序不能转换为活动” – RandomyzeEverything

+0

使用活动上下文可能是你正在传递应用程序上下文到适配器或第二种方式是使回调接口和做活动代码 –

+0

如何我是否传递活动上下文而不是应用程序上下文? – RandomyzeEverything

相关问题