当我恢复android应用程序时,文本的位置会发生变化

当我恢复android应用程序时,文本的位置会发生变化,android,android-canvas,android-custom-view,android-4.4-kitkat,Android,Android Canvas,Android Custom View,Android 4.4 Kitkat,我正在创建一个android应用程序,它需要在画布上绘制文本。我正在自定义视图中绘制该文本。因此,使用canvas类的drawtext()在该自定义视图的onDraw()中绘制文本 问题是,通常情况下,文本位置是完美的。但每当我按下home(主页)按钮并再次恢复应用程序时,所绘制文本的位置就会改变。这个问题似乎只针对KitKat protected void onDraw(Canvas canvas) { super.onDraw(canvas); Utility Utilit

我正在创建一个android应用程序,它需要在画布上绘制文本。我正在自定义视图中绘制该文本。因此,使用canvas类的drawtext()在该自定义视图的onDraw()中绘制文本

问题是,通常情况下,文本位置是完美的。但每当我按下home(主页)按钮并再次恢复应用程序时,所绘制文本的位置就会改变。这个问题似乎只针对KitKat

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Utility Utility = new Utility();

    canvas.drawCircle((radiusOfCircle + margin), (radiusOfCircle + margin),
            radiusOfCircle, paint);

    endPath.moveTo((2*radiusOfCircle + margin), (radiusOfCircle + margin));
    linePaint.setColor(Color.GRAY);
    endPath.lineTo(stopX, (radiusOfCircle + margin));
    canvas.drawPath(endPath, linePaint);


    linePaint.setColor(Color.parseColor(color));


    progressPath.moveTo((2*radiusOfCircle + margin),
            (radiusOfCircle + margin));
    progressPath.lineTo(stopOfProgress, (radiusOfCircle + margin));
    canvas.drawPath(progressPath, linePaint); 
    canvas.drawCircle((radiusOfCircle + margin), (radiusOfCircle + margin),
            radiusOfCircle, paint);
    paint.setStrokeWidth(textStrokeWidth);

    int xPos = radiusOfCircle;
     int yPos = (int) ((radiusOfCircle+ margin) - (Utility.heightRatio((progressTextColor.descent() + progressTextColor.ascent()) / 2, context))) ; 

     progressTextColor.setColor(Color.WHITE);
     progressTextColor.setTextSize(Utility.heightRatio(10, context));
     canvas.drawText(circleText, xPos-Utility.heightRatio(3, context), yPos-Utility.heightRatio(1, context), progressTextColor);


}

请发布一些代码。你的实用程序.heightRatio(…)方法做什么?“圆形半径”和“边距”从何而来?实用程序只是根据屏幕大小更改值。边距是我们设定的边距,这是硬编码。如果它以前的位置正确,你有没有想过清理画布并从头开始调用重画?