2014-03-29 4 views
1

ObjectAnimator를 사용하여 android에서 객체에 애니메이션을 적용하는 방법을 배우고 있지만 setter 메서드가 업데이트되지 않습니다. objectAnimator가 작동하는 것을 나는 디스플레이에 간단한 텍스트를 그릴 및 민간 변수 (curnum이)가 사용자 정의보기가 있다고 가정 :objectAnimator가 setter 메서드를 호출하지 않는 이유는 무엇입니까?

내 활동 클래스에 지금
public class TempView extends View { 

    private Float cur_num = new Float(0.0); 
    private float curnum = 0f; 

    public TempView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 

    public void setCurnum() 
    { 
     curnum++; 
     cur_num = new Float(curnum); 
     invalidate(); 
    } 

    @Override 
    public void onDraw(Canvas canvas) 
    { 
     Paint paint = new Paint(); 
     paint.setStrokeWidth(8); 
     paint.setTextSize(100); 

     canvas.drawText(cur_num.toString(), 150, 150, paint); 


    } 
} 

, 나는 시작 작업 표시 줄의 항목이 애니메이션 :

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
// Handle action bar item clicks here. The action bar will 
// automatically handle clicks on the Home/Up button, so long 
// as you specify a parent activity in AndroidManifest.xml. 


    int id = item.getItemId(); 
    if (id == R.id.startanim) { 

     TempView v = (TempView)findViewById(R.id.tempView); 
     ObjectAnimator anim = ObjectAnimator.ofFloat(v, "curnum", 0f, 1f); 
     anim.setDuration(1000L); 
     anim.start(); 
    } 

    return super.onOptionsItemSelected(item); 
} 

하지만 어떻게 든 setter 메서드에 중단 점을 넣으면 충돌하지 않습니다.

나는 아무것도 못 찾았나요?

+0

setCurnum은() setCurnum해야한다 (float 값)? – pskink

+0

** setter 함수 내부의 invalidate() **는 애니메이션을 실행하는 데 절대적으로 필수적입니다. – Odaym

답변

4

으로는 developers guide에서 말했다 : 당신이 세트의 형태 (낙타 경우) setter 함수 이 있어야합니다 애니메이션된다

개체 속성(). 애니메이션 도중 ObjectAnimator가 자동으로 속성을 업데이트하므로이 설정 메서드로 속성에 액세스 할 수 있어야합니다. 당신이 재산의 (필요한 경우)

게터와 setter 메소드 시작과 동일한 종류에 작동해야 애니메이션 당신이 ObjectAnimator에를 지정 값을 종료. 당신이 만드는 경우

예를 들어, targetObject.getPropName(float)targetObject.setPropName(float) 가지고 있어야합니다 ObjectAnimator 다음

ObjectAnimator.ofFloat(targetObject, "propName", 1f) 

그래서 당신이 당신의 방법을 변경해야합니다

setCurnum(float f) 
+0

감사합니다. 그것은 작동합니다! –

관련 문제