カードの背景画像を含む大きなトグル ボタンと、カードのランクとスーツを表すテキストビューを含むレイアウト オブジェクトとしてカードが表されるカード ゲームがあります。
<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>
カードをリディールするとき、カスタム アニメーションを適用して、一連のオブジェクト アニメーターで行っている「フリップ」としてカードを表示したいと思いました。使用するアニメーターは次のように定義されています。
<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 軸でスケーリングして回転をエミュレートしていましたが、見栄えがよくありませんでした。ただし、その方法を使用すると、アニメーション中にテキストがカードに表示されたままになります。テキストをカードに表示し、画像とともにアニメーション化できるように構成する必要があるものはありますか?それとも、カードのすべての要素に個別にカスタム アニメーションを追加する必要がありますか?