カードをアニメーション化し、元の位置から移動して、別の事前定義されたイメージビューの上に着陸する必要があります (カードテーブルでのカードのスタックを表します)
public static ImageView REFERENCE_IMAGE_FOR_ANIMATION;
REFERENCE_IMAGE_FOR_ANIMATION = (ImageView) findViewById(R.id.cardpile);
public void deckButtonOnClick(View v) {
ImageView imageView = new ImageView(getApplicationContext());
imageView.setImageResource(DECK.takeCard());
imageView.setAdjustViewBounds(true);
imageView.setLayoutParams(PARAMS);
imageView.setTag("0");
imageView.setOnClickListener(new MyOnClickListener());
((LinearLayout) findViewById(R.id.innerLinearLayout))
.addView(imageView);
}
私のコードMyOnClickListener
は次のとおりです。
public class MyOnClickListener{
Animation standardPosition = new TranslateAnimation(0, 0, 0, -25f);
@Override
public void onClick(View v) {
Animation standardPosition;
Animation risedPositionAndChosen;
if (v.getTag().toString().equalsIgnoreCase("0")) {
standardPosition = new TranslateAnimation(0, 0, 0, -25f);
standardPosition.setDuration(400);
standardPosition.setFillAfter(true);
v.setTag("1");
v.startAnimation(standardPosition);
} else if (v.getTag().toString().equalsIgnoreCase("1")) {
risedPositionAndChosen = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_PARENT, Game.REFERENCE_IMAGE_FOR_ANIMATION.getRight()
- v.getRight(), Animation.RELATIVE_TO_SELF,
0,Animation.RELATIVE_TO_PARENT, -Game.REFERENCE_IMAGE_FOR_ANIMATION.getTop());
risedPositionAndChosen.setDuration(400);
risedPositionAndChosen.setFillAfter(true);
v.setTag("0");
v.startAnimation(risedPositionAndChosen);
} else if (v.getTag().toString().equalsIgnoreCase("2")) {
}
((View) v.getParent()).invalidate();
}
}
OnClickListener
どうにかして変更する必要があるのは、私の中で最初の「else if」ステートメントです。
これREFERENCE_IMAGE_FOR_ANIMATION = (ImageView) findViewById(R.id.cardpile);
は、「着地」する必要があるカードです。
ゲーム画面の私のレイアウトには、ネストされた が含まれScrollView
ていLinearLayout
ます。アニメーションが始まると、カードは階層の上位のレイアウトに「滑り込みます」。「上に浮かぶ」ためにはどうすればよいですか?