在布局动画时,不会显示Android布局文本

时间:2013-01-02 05:48:38

标签: android-layout android-animation

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

<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轴上缩放以模拟旋转,但它看起来不太好。但是,使用该方法时,动画期间文本仍显示在卡上。有什么我需要配置,所以文本可以显示在卡上,并与图像一起动画,或者我是否需要单独添加自定义动画到卡的所有元素?

1 个答案:

答案 0 :(得分:1)

我想在浏览Android API documentation时偶然发现了答案,所以我想我会在这里发帖,以防有人提出同样的问题。

在调用动画之前启用drawingCache:

cardLayout.setDrawingCacheEnabled(true);

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