Android에서 애니메이션 사용자 정의보기를 만들려고하지만 뷰 객체 멤버 변수에 문제가 있습니다. invalidate()를 실행하면 변수가 다시 초기화됩니다.Android에서 사용자 정의보기 및 멤버 변수
나는 온도계
private float handTarget = 40;
public void setHandTarget(float temperature) {
Log.e(TAG, "setHandTarget!");
handTarget = temperature;
Log.e(TAG, "handTarget="+handTarget);
handInitialized = true;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
Log.e(TAG,"onDraw");
drawBackground(canvas);
float scale = (float) getWidth();
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale(scale, scale);
drawHand(canvas);
canvas.restore();
if (handNeedsToMove()) {
moveHand();
}
}
private boolean handNeedsToMove() {
Log.e(TAG,"handNeedsToMove?? "+handPosition+" - "+handTarget);
return Math.abs(handPosition - handTarget) > 0.01f;
}
라는 내 사용자 정의보기에이있어 그리고 내가 응용 프로그램을 실행하면 내가
setHandTarget을 얻을
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thermometer therm = new Thermometer(this);
therm.setHandTarget(50);
}
내 주요 활동이있다!
handTarget = 50.0
된 onDraw
handNeedsToMove ?? 40.0 - 40.0
하지만 내가 기대하는 것은 handNeedsToMove를 얻는 것입니다. ?? 40.0 - 50.0. 왜 handTarget 변수가 변경되지 않습니까? 어떻게 고치는 지?
미리 감사드립니다.
Ah ofc! 고마움 백만 : D 조 – daker