Androidでアニメーション化されたカスタムビューを作成しようとしていますが、ビューオブジェクトのメンバー変数に問題があります。invalidate()を実行すると、変数が再初期化されます。
これは、温度計と呼ばれるカスタムビューで取得しました
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;
}
そして、私はこれを私の主な活動に持っています
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thermometer therm = new Thermometer(this);
therm.setHandTarget(50);
}
アプリを実行すると、
setHandTarget!
handTarget = 50.0
onDraw
handNeedsToMove ?? 40.0-40.0
しかし、私が期待しているのは、handNeedsToMoveを取得することですか?40.0-50.0。handTarget変数が変更されないのはなぜですか?直し方?
よろしくお願いします!