我有一个纸牌游戏,其中卡片被表示为一个布局对象,其中包含一个带有卡片背景图片的大型切换按钮,以及代表卡片等级和套装的文本视图。
<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轴上缩放以模拟旋转,但它看起来不太好。但是,使用该方法时,动画期间文本仍显示在卡上。有什么我需要配置,所以文本可以显示在卡上,并与图像一起动画,或者我是否需要单独添加自定义动画到卡的所有元素?
答案 0 :(得分:1)
我想在浏览Android API documentation时偶然发现了答案,所以我想我会在这里发帖,以防有人提出同样的问题。
在调用动画之前启用drawingCache:
cardLayout.setDrawingCacheEnabled(true);
我将布局在开始动画之前呈现为位图,其中包括布局中包含的文本。