2017-11-07 4 views
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); 

どこに間違っているのですか?

答えて

1

使用bonus_l.setX(bonus_x_start)、代わりにこれが働いていたマージン

+0

bonus_l.setY(bonus_x_start)はあなたに感謝します。理由を説明してください。コーディングの観点からは、どちらも同じことをします。 – Oiproks

関連する問題