我很困惑这是否是正确的做法。请纠正我。所以基本上我有一个用canvas.drawText
方法在我的自定义视图中绘制的文本。文本是一个数字(金额)。当事件发生时,我试图使文本动画到另一个数字(例如:100 => 800)。
我知道这可以通过onDraw
方法和调用中的 for 循环计数器来完成canvas.drawText
,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();
}
}
}