Android 如何使用相对的RectF参数沿椭圆路径绘制文本

Android 如何使用相对的RectF参数沿椭圆路径绘制文本,android,Android,我想沿着椭圆路径绘制文本。下面是代码片段。据观察,使用RectF参数0.1f、0.1f、0.9f、0.9f,文本未被绘制。请提供反馈 protected void onDraw(Canvas canvas) { super.onDraw(canvas); float scale = (float) getWidth(); canvas.save(Canvas.MATRIX_SAVE_FLAG); canvas.scale(scale, scale)

我想沿着椭圆路径绘制文本。下面是代码片段。据观察,使用RectF参数0.1f、0.1f、0.9f、0.9f,文本未被绘制。请提供反馈

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

    float scale = (float) getWidth();       
    canvas.save(Canvas.MATRIX_SAVE_FLAG);
    canvas.scale(scale, scale);

    canvas.drawColor(Color.WHITE);
    Paint ovalpaint = new Paint();
    ovalpaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    ovalpaint.setColor(Color.CYAN);
    RectF oval = new RectF(0.1f,0.1f,0.9f,0.9f);
    canvas.drawOval(oval, ovalpaint);

    Path rim= new Path();
    rim.addOval(oval,Direction.CW);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    paint.setTextSize(30);
    paint.setAntiAlias(true);
    canvas.drawTextOnPath("Hi I am visible", rim, 0, 30, paint);

}

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int widthMode = MeasureSpec.getMode(widthMeasureSpec);
    int widthSize = MeasureSpec.getSize(widthMeasureSpec);

    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    int heightSize = MeasureSpec.getSize(heightMeasureSpec);

    int chosenWidth = chooseDimension(widthMode, widthSize);
    int chosenHeight = chooseDimension(heightMode, heightSize);

    int chosenDimension = Math.min(chosenWidth, chosenHeight);

    setMeasuredDimension(chosenDimension, chosenDimension);
}
私有整数选择维度(整数模式,整数大小){

}

    if (mode == MeasureSpec.AT_MOST || mode == MeasureSpec.EXACTLY) {
        System.out.println("in if");
        return size;
    } else { // (mode == MeasureSpec.UNSPECIFIED)
        System.out.println("in eles");
        return 300;
    } 
}