0
ボタンを作成し、上下の余白を使用して位置を設定し、レイアウトに追加しました。私がこれをするだけで、ボタンが正しい場所に座っています。ViewPropertyビューレイアウトの位置がつぶれているアニメーター
翻訳アニメーションを追加する必要があります。viewPropertyAnimator
を使用しています。 残念ながら、これは最初のボタン位置を無効にし、アニメーションを(0、0)から開始します。
以下は私が書いたコードです。
final Button bonus_button = new Button(this);
int bonus_y_start, bonus_x_start, bonus_y_end, bonus_x_end;
bonus_x_start = random.nextInt(2) == 1 ? layout_width + button_size : -1 * button_size;
bonus_y_start = random.nextInt(layout_height + 2 * button_size) - button_size;
if (bonus_x_start < 0)
bonus_x_end = layout_width + button_size;
else
bonus_x_end = -1 * button_size;
bonus_y_end = random.nextInt(layout_height + button_size) - button_size;
RelativeLayout.LayoutParams bonus_l = new RelativeLayout.LayoutParams(button_size, button_size);
bonus_l.leftMargin = bonus_x_start;
bonus_l.topMargin = bonus_y_start;
bonus_button.setLayoutParams(bonus_l);
bonus_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mHandler.sendEmptyMessage(MSG_PAUSE_TIMER);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mHandler.sendEmptyMessage(MSG_RESUME_TIMER);
}
}, 2000);
}
});
bonus_button.bringToFront();
ViewPropertyAnimator animator = bonus_button.animate().x(bonus_x_end).y(bonus_y_end);
animator.setDuration(2000);
animator.withEndAction(new Runnable() {
@Override
public void run() {
layout.removeView(bonus_button);
}
});
layout.addView(bonus_button);
どこに間違っているのですか?
の
bonus_l.setY(bonus_x_start)
はあなたに感謝します。理由を説明してください。コーディングの観点からは、どちらも同じことをします。 – Oiproks