2016-12-06 66 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

相關問題