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 메서드에 중단 점을 넣으면 충돌하지 않습니다.
나는 아무것도 못 찾았나요?
setCurnum은() setCurnum해야한다 (float 값)? – pskink
** setter 함수 내부의 invalidate() **는 애니메이션을 실행하는 데 절대적으로 필수적입니다. – Odaym