質問: new ScaleAnimation( 1.0f, scaleX, // Xスケールサイズ(開始時→終了時) 1.0f, scaleY, // Yスケールサイズ(開始時→終了時) ScaleAnimation.RELATIVE_TO_SELF, 0.5f, // X座標のタイプ、X座標(0.5fがview中央値) ScaleAnimation.RELATIVE_TO_SELF, 0.5f); // Y座標のタイプ、Y座標(0.5fがview中央値) // 0.3秒かけてアニメーションする(ms) anime.setDuration(300); // アニメーション終了時の表示状態を維持する anime.setFillEnabled(true); anime.setFillAfter(true); // アニメーションを開始 v.startAnimation(anime); } } ```
回答: ``` anime = new ScaleAnimation( 1.0f, scaleX, // Xスケールサイズ(開始時→終了時) 1.0f, scaleY, // Yスケールサイズ(開始時→終了時) ScaleAnimation.RELATIVE_TO_SELF, 0.5f, // X座標のタイプ、X座標(0.5fがview中央値) ScaleAnimation.RELATIVE_TO_SELF, 0.5f); // Y座標のタイプ、Y座標(0.5fがview中央値) ``` ここですね。 MotionEvent.ACTION_DOWN時にはscaleXおよびscaleYが0.5になるので、 1.0倍→0.5倍 のアニメーションになりますが、 MotionEvent.ACTION_UP時にはscaleXおよびscaleYが1.0になるので、 1.0倍→1.0倍 のアニメーションになります。つまりアニメーションせず1.0倍になります。