0

我有一个纸牌游戏,其中纸牌表示为一个布局对象,其中包含一个带有纸牌背景图像的大切换按钮,以及代表纸牌等级和花色的文本视图。

<RelativeLayout
            android:id="@+id/card1">
        <ToggleButton
                android:id="@+id/cardback1" android:background="@drawable/blank_card"  android:checked="false" android:textOff='' android:textOn="HELD" android:textColor="@android:color/holo_red_dark" android:clickable="true" android:enabled="false"/>
        <TextView
                android:id="@+id/rank1"
                android:textColor="@android:color/holo_red_light"
                android:textIsSelectable="false" 
                android:textSize="16dp"
                android:layout_alignParentTop="true" android:layout_marginTop="5dp"
                android:layout_marginLeft="7dp" android:textAlignment="center"/>
        <TextView
                android:id="@+id/suit1" android:text="@string/suit_diamond"
                android:textColor="@android:color/holo_red_light"
                android:textIsSelectable="false" android:typeface="normal"
                android:textSize="24dp"
                android:layout_centerInParent="true"/>
</RelativeLayout>

重新发牌时,我想应用自定义动画以将卡片显示为“翻转”,这是我在一系列对象动画中所做的,在 Y 轴上旋转我使用的动画定义如下:

 <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
       android:valueFrom="0" android:valueTo="360" android:propertyName="rotationY" > </objectAnimator>

然后我为布局 xml 中引用的 RelativeLayout 设置动画。

  RelativeLayout cardLayout = (RelativeLayout)findViewById(R.id.card1);
 Animator initialAnimator = (ObjectAnimator) AnimatorInflater.loadAnimator(cardLayout.getContext(), R.anim.flip360);
    initialAnimator.setTarget(cardLayout);
    initialAnimator.setDuration(1000);
    initialAnimator.start();

但是,在动画期间,布局上的文本根本没有显示。按钮图像按预期旋转,但在动画完成之前不会显示文本。

我之前在 cardLayout 上使用了一个更简单的动画,只是在 Y 轴上缩放以模拟旋转,但看起来不太好。但是,当使用该方法时,动画期间文本仍会显示在卡片上。是否需要配置一些内容,以便文本可以显示在卡片上并与图像一起动画,或者我是否需要分别为卡片的所有元素添加自定义动画?

4

1 回答 1

1

我认为自己在浏览Android API 文档时偶然发现了答案,所以我想我会在这里发布它,以防有人遇到同样的问题。

通过在调用动画之前启用绘图缓存:

cardLayout.setDrawingCacheEnabled(true);

我让布局在开始动画之前呈现为位图,其中包括布局中包含的文本。

于 2013-01-02T19:45:43.837 回答