Я успешно справился с анимацией флип-карт для клика по предмету на основе этого урока Но то, что я хотел бы, это когда я нажимаю на новый элемент, последний нажатый элемент остается в его исходном состоянии (с анимацией или без нее). Работает для второго клика (первый нажатый элемент остается нормальным), но не для остальных. Итак, в чем проблема и как ее решить.
Вот код держателя:
private View clickedViewFront, clickedViewBack;
private int clickedPosition;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView title;
public ImageView icon;
FrameLayout card_back, card_front;
private Context context;
private AnimatorSet setRightOut;
private AnimatorSet setLeftIn;
private Button buttonSynthesis, buttonReaction, buttonProtection;
boolean isFront = true;
ViewHolder(View v, RecyclerViewClickListener listener, Context context) {
super(v);
title = v.findViewById(R.id.title);
icon = v.findViewById(R.id.icon);
card_front = v.findViewById(R.id.card_front);
card_back = v.findViewById(R.id.card_back);
card_front.setOnClickListener(this);
this.context = context;
loadAnimations();
changeCameraDistance();
}
private void changeCameraDistance() {
int distance = 2000;
float scale = context.getResources().getDisplayMetrics().density * distance;
card_front.setCameraDistance(scale);
card_back.setCameraDistance(scale);
}
private void loadAnimations() {
setRightOut = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.animator.out_animation);
setLeftIn = (AnimatorSet) AnimatorInflater.loadAnimator(context, R.animator.in_animation);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
...;
default:
if (clickedViewFront != null) {
notifyItemChanged(clickedPosition);
}
clickedViewFront = card_front;
clickedViewBack = card_back;
clickedPosition = getAdapterPosition();
if (isFront) {
setRightOut.setTarget(card_front);
setLeftIn.setTarget(card_back);
setRightOut.start();
setLeftIn.start();
isFront = false;
card_front.setEnabled(false);
card_front.setClickable(false);
}
break;
}
}
}
На предыдущем элементе отображается вид "fla sh", но не отображается REINIT.