如何在Android中使用TextView显示循环文本

如何在Android中使用TextView显示循环文本,android,android-layout,textview,Android,Android Layout,Textview,我想在我的android应用程序中显示圆形的文本。我知道这是用custome textview完成的,但是一些好友能给我正确的代码吗?我还附上了我想要的图像类型 您不需要进行自定义查看。 找到正确的字体,放入项目并设置为文本视图 或者使用microsoft office word艺术并将图像复制到项目中 创建自定义视图并覆盖onDraw。在onDraw中,创建路径并使用drawTextOnPath。像这样的。textToDraw是要显示的文本。油漆是你想要的任何油漆 @Override onDr

我想在我的android应用程序中显示圆形的文本。我知道这是用custome textview完成的,但是一些好友能给我正确的代码吗?我还附上了我想要的图像类型


您不需要进行自定义查看。 找到正确的
字体
,放入项目并设置为
文本视图

或者使用microsoft office word艺术并将图像复制到项目中


创建自定义视图并覆盖onDraw。在onDraw中,创建路径并使用drawTextOnPath。像这样的。textToDraw是要显示的文本。油漆是你想要的任何油漆

@Override onDraw(Canvas canvas){
    Path path = new Path();
    path.addCircle(x, y, 200, Path.Direction.CW);
    canvas.drawTextOnPath(textToDraw, path, textX, textY, paint);
}

您已经使用自定义视图实现了它,如onDraw方法:

Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);

请尝试以下代码

onDraw(Canvas canvas){
 Path path = new Path();
 path.addArc(oval, startAngle, sweepAngle) 
 path.addArc(oval, 0, 180) 
 }

这可能会起作用……

您必须像这样创建自己的对象“视图”

public class YourView extends View {
    private static final String YOUR_TEXT = "something cool";
    private Path _arc;

    private Paint _paintText;

    public YourView(Context context) {
      super(context);

      _arc = new Path();
      RectF oval = new RectF(50,100,200,250);;
      _arc.addArc(oval, -180, 200);
      _paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
      _paintText.setStyle(Paint.Style.FILL_AND_STROKE);
      _paintText.setColor(Color.WHITE);
      _paintText.setTextSize(20f);

    }

    @Override
    protected void onDraw(Canvas canvas) {
      canvas.drawTextOnPath(YOUR_TEXT, _arc, 0, 20, _paintText);
      invalidate();
    }
}

然后将其用作您的文本视图:)希望此帮助

您可以在SDK目录中查看与android SDK捆绑的APIDemo源代码

示例“Graphics/Text Align”(文件TextAlign.java)显示了如何沿路径显示文本:


然后,您可以调整它以构建屏幕。

您可以尝试以下经过测试的完整工作代码:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new GraphicsView(this));
    }

    static public class GraphicsView extends View {
        private static final String QUOTE = "This is a curved text";
        private Path circle;
        private Paint cPaint;
        private Paint tPaint;

        public GraphicsView(Context context) {
            super(context);

            int color = Color.argb(127, 255, 0, 255);

            circle = new Path();
            circle.addCircle(230, 350, 150, Direction.CW);

            cPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            cPaint.setStyle(Paint.Style.STROKE);
            cPaint.setColor(Color.LTGRAY);
            cPaint.setStrokeWidth(3);

            setBackgroundResource(R.drawable.heart);

            tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            tPaint.setColor(Color.BLACK);
            tPaint.setTextSize(50);
        }
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawTextOnPath(QUOTE, circle, 485, 20, tPaint);
        }
    }
}
输出将是:


希望有帮助。

对不起,伙计,这在字体脸上是不可能的,因为字体脸只提供文本样式,而不是弧形。亲爱的,我想在运行时显示这种样式。我也可以在图像上使用这种样式。但我从来都不想要它。这是一个取决于android的问题,也是如何在代码中实现它的方法,不适用于字体面。请查看“对不起”,但它会在圆圈中显示完整的文本。您需要理解它并根据需要进行更改。此外,对于“多分辨率”,请使用底层可绘制图形的高度来计算半径。现在,继续说,“不工作”是什么意思?我把这个cod放在doDraw()中,但在screen canvas.save()中没有显示任何内容;路径路径=新路径();路径加圆(-10,10,200,路径方向.CW);drawTextOnPath(“Hello”,path,-10,-10,null);super.onDraw(帆布);canvas.restore();“我把鳕鱼放在多德劳里了。”“多德劳,还是昂德劳?”?您还将圆添加到视图外部。x=-10和路径外的文本。请使用onDraw方法编辑您的问题。感谢您提供API样本中的图像。它节省了创建和运行项目的时间。你能给我一个简单的描述吗?您好,先生,我如何在android中创建这种文本?这里的x,y和路径,偏移量是多少?