0

我在单个列表项的动画中遇到问题。如何在单击单个项目时获得翻转视图并获取项目背面的详细信息?

4

1 回答 1

0

创建您的列表行项目,如下所示

<RelativeLayout 
android:id="@+id/rellay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true" >


<TextView
    android:id="@+id/back"
    android:layout_width="300dp"
    android:layout_height="200dp"
    android:background="@drawable/linearlayoutshape"
    android:gravity="center"
    android:text="BACK"
    android:textAppearance="@android:style/TextAppearance.Large" 
   />

 <TextView
    android:id="@+id/front"
    android:layout_width="300dp"
    android:layout_height="200dp"
    android:background="@drawable/linearlayoutshape"
    android:gravity="center"
    android:text="FRONT"
    android:textAppearance="@android:style/TextAppearance.Large" />

在这种情况下,我曾经将 textView 作为 Front 和 Back。现在在你的适配器里面添加这个方法..

public void flip(final View front, final View back, final int duration) 
{
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
        AnimatorSet set = new AnimatorSet();
        set.playSequentially(
                ObjectAnimator.ofFloat(front, "rotationY", 90).setDuration(duration / 2),
                ObjectAnimator.ofInt(front, "visibility", View.GONE).setDuration(0),
                ObjectAnimator.ofFloat(back, "rotationY", -90).setDuration(0),
                ObjectAnimator.ofInt(back, "visibility", View.VISIBLE).setDuration(0),
                ObjectAnimator.ofFloat(back, "rotationY", 0).setDuration(duration / 2));
        set.start();
    } else
    {
        front.animate().rotationY(90).setDuration(duration / 2)
                .setListener(new AnimatorListenerAdapter()
                {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        front.setVisibility(View.GONE);
                        back.setRotationY(-90);
                        back.setVisibility(View.VISIBLE);
                        back.animate().rotationY(0).setDuration(duration / 2).setListener(null);
                    }
                });
    }
}

现在点击行项目只需调用翻转方法,如

flip(txtFront, txtBack, DURATION);

它将添加翻转动画并使 txtBack 可见并隐藏 txtFront

于 2015-05-27T13:38:39.887 回答