これが正しい方法であるかどうか、私は混乱しています。私を修正してください。基本的に、canvas.drawText
メソッドを使用してカスタムビューにテキストを描画しています。テキストは数値 (金額) です。イベントが発生したときに、テキストを別の数値 (例: 100 => 800) にアニメーション化しようとしています。
onDraw
これは、メソッドと呼び出しcanvas.drawText
でfor ループ カウンターを使用しinvalidate()
て、最終的な数値に達するまで実行できることを認識しています。しかし、私のアプリは立ち往生しています。
更新されたコード:
コードを更新しました。これで、アプリはスタックしなくなりました (Simon のアドバイスによると)。しかし今では、すべての数字 (1 ~ 99) を一度に描画するだけです。ループを遅くする方法がわかりません。
public class CustomView extends View implements OnTouchListener{
private Canvas main_canvas;
//...Other codes like, initialization, paint etc!...//
@Override
protected void onDraw(Canvas canvas) {
main_canvas = canvas;
}
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
//...Some action...//
case MotionEvent.ACTION_MOVE:
//...Some action...//
case MotionEvent.ACTION_UP:
runTextAnimation();
}
}
private void runTextAnimation() {
for(int i=1; i < 100; i++){
main_canvas.drawText(String.valueOf(i), getMeasuredWidth()/2, 100, amountPaint);
invalidate();
}
}
}