要实现在Android Studio中翻转卡片的效果,可以使用属性动画和自定义视图来实现。下面是一个示例解决方法:
public class CardView extends FrameLayout {
private View frontView;
private View backView;
private boolean isFrontVisible = true;
public CardView(Context context) {
super(context);
init();
}
public CardView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// 初始化卡片正面和反面的视图
LayoutInflater inflater = LayoutInflater.from(getContext());
frontView = inflater.inflate(R.layout.card_front, this, false);
backView = inflater.inflate(R.layout.card_back, this, false);
// 将正面和反面的视图添加到卡片视图中
addView(frontView);
addView(backView);
// 默认显示正面的视图
backView.setVisibility(View.GONE);
}
public void flip() {
// 设置翻转动画效果
ObjectAnimator flipAnimator = ObjectAnimator.ofFloat(this, "rotationY", isFrontVisible ? 0 : 180, isFrontVisible ? 180 : 0);
flipAnimator.setDuration(500);
flipAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
// 根据当前显示的视图状态,显示正面或者反面的视图
flipAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
if (isFrontVisible) {
backView.setVisibility(View.VISIBLE);
frontView.setVisibility(View.GONE);
} else {
frontView.setVisibility(View.VISIBLE);
backView.setVisibility(View.GONE);
}
}
@Override
public void onAnimationEnd(Animator animator) {
isFrontVisible = !isFrontVisible;
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
flipAnimator.start();
}
}
card_front.xml:
card_back.xml:
public class MainActivity extends AppCompatActivity {
private CardView cardView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cardView = findViewById(R.id.card_view);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cardView.flip();
}
});
}
}