私はRecycleView
を持っています。そのアイテムは、クリックするとスケーリングとトランジションアニメーションを行います。 onBindViewHolder()
で私は時々ポストアニメーション状態でviews
を取得し、私は元のレイアウト位置とサイズを保存することで、アニメーションがやったことをスケーリングと移行を元に戻すとviewHolderで現在のレイアウトにそれを設定しようとしている:onCreateViewHolderを展開するときに空のレイアウトを取得する
private void returnToOriginalSate(ItemViewHolder holder) {
View groupLogo1 = holder.parent.findViewById(R.id.group_logo1);
View groupLogo2 = holder.parent.findViewById(R.id.group_logo2);
View leagueLogo = holder.parent.findViewById(R.id.league_logo_parent);
groupLogo1.setX(originalLayout.findViewById(R.id.group_logo1).getX());
groupLogo1.setY(originalLayout.findViewById(R.id.group_logo1).getY());
groupLogo1.setLayoutParams(originalLayout.findViewById(R.id.group_logo1).getLayoutParams());
groupLogo2.setX(originalLayout.findViewById(R.id.group_logo2).getX());
groupLogo2.setY(originalLayout.findViewById(R.id.group_logo2).getY());
groupLogo2.setLayoutParams(originalLayout.findViewById(R.id.group_logo2).getLayoutParams());
leagueLogo.setX(originalLayout.findViewById(R.id.league_logo_parent).getX());
leagueLogo.setY(originalLayout.findViewById(R.id.league_logo_parent).getY());
leagueLogo.setLayoutParams(originalLayout.findViewById(R.id.league_logo_parent).getLayoutParams());
}
-1と、X、Y:
はoriginalLayout
が、私はそれを膨らませるとonCreateViewHolder
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ItemViewHolder viewHolder = new ItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_in_feed, parent, false));
if(originalLayout == null){
originalLayout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_in_feed, parent, false);
}
return viewHolder;
}
問題でそれを保存しています取得するには、私は、たとえば、このレイアウトのImageViewのはLayoutParamsを持っている、奇妙なoriginalLayout値を得ることですポジション:(0,0)
なぜですか?実際のオリジナルのレイアウトをどのように取得すればよいのですか?
編集:私はアニメーションが終了したら、コメントで私たちの話はホルダービューのアニメーターに逆に()適用については、リサイクルビュー
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
if(this view is recycled and should be reset){
returnToOriginalState(holder);
}
}
onCreateViewHolderデータリストの設定後に一度呼び出されます。おそらく一度それを膨張させ、viewHolderのビューを使ってアニメーションを適用する必要があります。 –
originalLayoutは、トランジションとスケーリング(元のビューの位置を持つonCreateViewHolderの元のレイアウト(item_in_feed))を変更せずにrecycleView内のアイテムがどのように表示されるかを示します。 – ben
Ok。わかった。 holder.mView.setOnClickListener(...)を追加し、ホルダービューをメソッドに渡し、実際にアニメーター/アニメーションを適用する必要があります。どのようなアニメーションが必要ですか? –