java - Android drawTextOnPath() 不显示输出

标签 java android android-canvas drawtext

下面有以下代码。

public class CompassActivity extends Activity {  

  public class OuterCircle extends View {
    Paint paint = new Paint();
    Path path = new Path();
    private static final String s = "Hello world example";

    public OuterCircle(Context context) {
      super(context);
      init();
    }

    private void init() {
      paint.setColor(Color.WHITE);
      paint.setStyle(Style.STROKE);
      paint.setStrokeWidth(2);
      paint.setAntiAlias(true);
    }

    private void drawDegreesOnCircle(Canvas c) {
      path.addCircle(getWidth()/2, getHeight()/2, 180, Direction.CW);
      c.drawTextOnPath(s, path, 0, 10, paint);
    }

    public void onDraw(Canvas c) {      
      int cx = getWidth()/2;
      int cy = getHeight()/2;
      c.drawCircle(cx, cy, 170, paint);      
      drawDegreesOnCircle(c);
    } 
  }
}

圆绘制成功。但是,我指定的字符串没有显示。代码中没有错误或警告。我的代码中遗漏了什么吗?我试图在圆圈周围显示字符串。我被困在这里了。 :D

最佳答案

我通过添加解决了上述问题

setLayerType(View.LAYER_TYPE_SOFTWARE, null)

需要与上面的方法一起使用

Canvas.drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint)

适用于 Android API 级别 11 或更高版本。现在,该字符串已成功显示在圆圈周围。这是正确的代码。

public class CompassActivity extends Activity {  

  public class OuterCircle extends View {
    Paint paint = new Paint();
    Path path = new Path();
    private static final String s = "Hello world example";

    public OuterCircle(Context context) {
      super(context);
      init();
    }

    private void init() {
      paint.setColor(Color.WHITE);
      paint.setStyle(Style.STROKE);
      paint.setStrokeWidth(2);
      paint.setAntiAlias(true);
    }

    private void drawDegreesOnCircle(Canvas c) {
      path.addCircle(getWidth()/2, getHeight()/2, 180, Direction.CW);
      c.drawTextOnPath(s, path, 0, 10, paint);
      setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Required for API level 11 or higher.
    }

    public void onDraw(Canvas c) {      
      int cx = getWidth()/2;
      int cy = getHeight()/2;
      c.drawCircle(cx, cy, 170, paint);      
      drawDegreesOnCircle(c);
    } 
  }
}

关于java - Android drawTextOnPath() 不显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18916930/

相关文章:

java - 无法使用 Runtime.getRuntime().exec ("commandLine") 启动 java 程序;在 Linux 薄荷中

java - 在Java(API)中合并两个音频文件(不是合并)?

android - 在 Canvas 上绘图需要帮助 - Android

android - CALL_PHONE 与 CALL_PHONE_PRIVLEGED

android - 如何根据位置查询以根据位置显示编辑 View

android - 在 Canvas 上绘制部分图像

android - 围绕其中心旋转自定义图像

java - 将变量从函数返回到输入变量

java - 如何在编译时使用 Maven 将文件夹(及其内容)添加到 Jar 文件的根目录?

android - 如何在全局范围内正确截取屏幕截图?