我在使用简单的过渡动画时遇到麻烦,在该动画中,我具有几个项目的回收视图,并且在按下某个项目时,我希望该项目上的文本在打开的详细信息屏幕中向上移动到新位置。 我创建了一个github项目,并提供了我的意思
FragmentA具有包含项目的回收视图 片段B的详细信息屏幕显示了该项目
谢谢
答案 0 :(得分:0)
您可以考虑使用配对,而不是这样做。
holder.itemView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(mContext /*your context from main activity*/, Destination.class);
Pair[] pairs = new Pair[3]; /* careful about the number and how many element you want to animate*/
pairs[0]= new Pair<View, String>(holder.X /*item to animate to next activity*/, "transitionX" /* name of transition animation that you have to set on your xml file of the item*/);
pairs[1]= new Pair<View, String>(holder.Y, "transitionY");
pairs[2]= new Pair<View, String>(holder.Z, "transitionZ");
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation((Activity) mContext, pairs);
// start the activity
mContext.startActivity(intent, options.toBundle());
}
});
class CourseViewHolder extends RecyclerView.ViewHolder {
TextView X;
ImageView Y;
LinearLayout Z; /* you can animate layout as well*/
private CourseViewHolder(View itemView) {
super(itemView);
X= itemView.findViewById(R.id.x);
Y=itemView.findViewById(R.id.y);
Z=itemView.findViewById(R.id.z);
}
}
itemView.xml文件
<TextView
android:id="@+id/x"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="transitionX"/>
<ImageView
android:id="@+id/x"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="transitionY"/>
<LinearLayout <!-- you can animate Layout to another object -->
android:id="@+id/Z"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="transitionZ">
----------------------
--------------------
</LinearLayout>
destinationclass.xml文件
<TextView
android:id="@+id/x_will_transit_to"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="transitionX"/> <!-- The name of transition must be the same as java file and both of the element from xml file -->
<!-- You can also animate one type of View to another when transition take place -->
<Button
android:id="@+id/y_will_transit_to"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="transitionY"/>
<ImageView
android:id="@+id/z__will_transit_to"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="transitionZ"/>
无论是从recyclerview过渡到片段还是其他,都无所谓。您只需要在动作内或onClick发生的位置设置动画即可。在两个文件的布局中为过渡指定相同的名称,将在其中进行过渡。最后,以防万一,请检查您要测试的模拟器或移动设备,该应用程序的所有动画比例至少应为1倍(在开发人员选项中)。希望它会有所帮助,即使它可能不是您要找的答案。