На самом деле вопрос в том, почему после первой флип-анимации изображение всегда отображается в перевороте (похоже, что изображение всегда начинается с исходного положения).Как анимировать флип изображение на изображении
Имея два изображения, отображается только один. Нажав на него, он будет анимировать флип с помощью Y ax и скрыть изображениеView, а затем отобразить другое изображение. Когда вы нажмете снова, он повторит процесс для возврата первого изображения.
проблема заключается в том, что при нажатии на изображение, которое он оживляет, переворачивается и переключается с одного изображения на другое, флип и переключатель работают нормально. Но в следующий раз, нажимая на него снова, он предполагает вернуться к другому изображению и откинуть его обратно. Но изображение после анимации остается в перевернутом состоянии (обратное изображение).
фрагмент кода ниже,
<RelativeLayout
android:id="@+id/imager_contaner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="5dp">
<ImageView
android:id="@+id/imgAvatar"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:background="@drawable/oval"
android:src="@mipmap/iamge_one”
android:scaleType="fitCenter"
/>
<ImageView
android:id="@+id/imgAvatar_checked"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:background="@drawable/oval"
android:src="@mipmap/check_icon”
android:visibility="gone"
/>
</RelativeLayout>
View imager_contaner = convertView.findViewById(R.id. imager_contaner);
final ImageView ivAvatar = (ImageView)convertView.findViewById(R.id.imgAvatar);
ImageView avatarChecked = (ImageView)convertView.findViewById(R.id.imgAvatar_checked);
vatarContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Object o = imager_contaner.getTag();
final boolean isChecked = (o != null && (o instanceof String) && ((String)(o)).equals("checked"));
if (isChecked) {
imager_contaner.setTag("");
} else {
imager_contaner.setTag("checked");
}
final int rotate = 179; //!isChecked ? 179 : -179;
final View animAvatarView = !isChecked ? showingAvater : avatarChecked;
ObjectAnimator anim3 = ObjectAnimator.ofFloat(animAvatarView, "rotationY", 0, rotate);
anim3.setDuration(500);
anim3.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
if (!isChecked) {
showingAvater.setVisibility(View.GONE);
avatarChecked.setVisibility(View.VISIBLE);
}
else {
avatarChecked.setVisibility(View.GONE);
showingAvater.setVisibility(View.VISIBLE);
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
anim3.start();
}
});
Это сработало, спасибо! – lannyf
хороший, без проблем! –