2015-01-22 2 views
0

볼을 클릭하면 애니메이션이 시작됩니다.애니메이션에서 ImageView의 위치를 ​​얻는 방법은 무엇입니까?

그냥 아래로 가운데로 다시 움직입니다.

그러나 중간에 클릭하면 볼의 두 번째 onClick이 작동합니다. 즉, 공이 실제로 이동하지만 중간에 여전히있는 것을 의미합니다.

애니메이션에 따라 위치를 어떻게 설정합니까?

public void ballChange(View v) 
{ 

    isClicked = false; 

    if (ballstarted == false) 

    { 
     L1_animation = AnimationUtils.loadAnimation(this, R.anim.mercury_anim); 
     L1_Ball2.startAnimation(L1_animation); 


     ct = new CountDownTimer(4000, 1000) 
     { 

      @Override 
      public void onTick(long millisUntilFinished) 
      { 

      } 

      @Override 
      public void onFinish() 
      { 


       if (isClicked == false) 
       { 
        lifeline-=1; 


        if (lifeline == 0) 
        { 
         Toast.makeText(getApplicationContext(), "Gameover dude", 
         Toast.LENGTH_LONG).show(); 
         heart.setText(""+lifeline); 

         GameOverDialog wp = new GameOverDialog(getApplicationContext()); 
         wp.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
         wp.show(); 
         wp.setCancelable(false); 
         Mercury_L1.L1_Ball.clearAnimation(); 
         Mercury_L1.L1_countDownTimer.cancel(); 
         Mercury_L1.timerHasStarted = false; 
         Mercury_L1.isCancelled = true; 


        } 
        else 
        { 

         Toast.makeText(getApplicationContext(), String.valueOf(lifeline), Toast.LENGTH_SHORT).show(); 
         heart.setText(""+lifeline); 
         minuslife.setVisibility(View.VISIBLE); 

         Handler handler = new Handler(); 
          handler.postDelayed(new Runnable() 
          { 
           @Override 
           public void run() 
           { 
            minuslife.setVisibility(View.GONE); 
           } 
          }, 500); 

         Mercury_L1.this.v.vibrate(500); 

        } 
       } 

      } 
     }.start(); 
     ballstarted = true; 
     Toast.makeText(getApplicationContext(), String.valueOf(ballstarted), Toast.LENGTH_SHORT).show(); 
    } 

    else 
    { 

     L1_Ball2.clearAnimation(); 

     ballstarted = false; 
    } 

} 

답변

1

당신 만 볼이 그려진 장소와하지의 실제 위치를 업데이트하는보기 애니메이션을하고있다 :

온 클릭 (두 번째 클릭은 애니메이션을 취소합니다). objectanimator와 같은 속성 애니메이션을 사용해야합니다. 다음은 XML을 사용하여이를 수행하는 방법에 대한 몇 가지 샘플 코드입니다.

public void doObjectAnimatorXML(){ 
    AnimatorSet object = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(),R.animator.property_animator); 
    object.addListener(new AnimatorListenerAdapter(){ 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      simpleLock= false; 
     } 
    }); 
    object.setInterpolator(new LinearInterpolator()); 
    object.setTarget(mLittleChef); //mLittleChef is the view 
    object.start(); 
} 

그리고 XML

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="sequentially" > 
    <objectAnimator 
     android:propertyName="x" 
     android:duration="1000" 
     android:valueTo="138" 
     android:valueType="floatType"/> 
    <objectAnimator 
     android:propertyName="x" 
     android:duration="1000" 
     android:valueTo="276" 
     android:valueType="floatType"/> 
</set> 
관련 문제