我正在创建一个文本编辑应用程序,允许用户使用不同的字体,颜色,大小等编辑文本。现在我正在处理一个应该弯曲文本的功能。我已经尝试过询问一次HERE但是发布的答案并不是我真正想要的(也许是这样,我只是不明白他们的意思)所以我想我再问一次实际参考我想要完成的事情。 正如你所看到的,我正在尝试根据滑块的值(我的情况下是搜索条)得到文本曲线,但我只是不知道该怎么做。我试图模仿HERE特别是Along a path
部分所做的事情,但我再次确定如何使其与图片中显示的seekbar
一起使用。
谢谢
这是我一直在使用的代码。就像我之前说的那样,这正是我正在寻找的东西,我只是愚蠢,但无论如何它都在这里。
import android.app.Activity;
import android.graphics.*;
import android.os.Bundle;
import android.view.*;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class Painting extends Activity
{
public static int y = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
private static class SampleView extends View
{
private Paint mPaint;
private float mX;
private float[] mPos;
private Path mPath;
private Paint mPathPaint;
private static final int DY = 30;
private static final String TEXTONPATH = "Along a path";
private static void makePath(Path p)
{
p.moveTo(10, 0);
p.cubicTo(00, 00, 00, 00, 900, 00);
}
public SampleView(Context context)
{
super(context);
setFocusable(true);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setTextSize(90);
mPaint.setTypeface(Typeface.SERIF);
mPath = new Path();
makePath(mPath);
mPathPaint = new Paint();
mPathPaint.setAntiAlias(true);
mPathPaint.setColor(0x800000FF);
mPathPaint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawColor(Color.WHITE);
Paint p = mPaint;
float x = mX;
float y = 0;
float[] pos = mPos;
p.setColor(0x80FF000);
canvas.drawLine(x, y, x, y+DY*3, p);
p.setColor(Color.BLACK);
canvas.translate(0, DY*10);
canvas.drawPath(mPath, mPathPaint);
p.setTextAlign(Paint.Align.LEFT);
canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p);
}
}
}
答案 0 :(得分:0)
您无法使用TextView
执行此操作。相反,你必须写自己的类View
。
您必须覆盖onDraw
并将文字绘制到那里的Canvas
。
要使其与SeekBar
一起使用,您可以使用SeekBar#setOnSeekBarChangeListener
。在onProgressChanged
中,您可以告诉您的视图更改其外观。