【发布时间】:2025-11-25 10:15:01
【问题描述】:
我很困惑这是否是正确的做法。请纠正我。所以基本上我在我的自定义视图中使用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();
}
}
}
【问题讨论】:
标签: android android-layout android-animation android-custom-view