gpt4 book ai didi

java - Android 中的弯曲文本

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:22 25 4
gpt4 key购买 nike

我正在创建一个文本编辑应用程序,它允许用户使用不同的字体、颜色、大小等来编辑文本。现在我正在研究一个应该使文本弯曲的功能。我已经试过问一次了 HERE但是发布的答案并不是我真正想要的(或者可能是我只是不明白他们的意思)所以我想我会再次询问我正在尝试的实际引用去完成。 IMAGE正如您所看到的,我正在尝试根据 slider (在我的例子中是 seekbar)的值来设置文本曲线,但我只是不知道该怎么做。我试图模仿所做的事情 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);
}
}

最佳答案

您将无法使用 TextView 执行此操作。相反,您将不得不编写自己的类来扩展 View

您必须覆盖 onDraw 并将文本绘制到那里的 Canvas 上。

要使其与 SeekBar 配合使用,您可以使用 SeekBar#setOnSeekBarChangeListener。在 onProgressChanged 中,您可以告诉您的 View 更改其外观。

关于java - Android 中的弯曲文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com