我想在我的android应用程序中显示带有圆形形状的文本。我知道它是用自定义textview完成的,但是一些伙伴可以给我正确的代码。我还附加了我想要的那种类型的图像。
答案 0 :(得分:18)
您可以尝试这个经过测试和完整工作的代码:
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);}
} }
输出将是:
希望得到这个帮助。
答案 1 :(得分:6)
创建自定义视图并覆盖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);
}
http://developer.android.com/training/custom-views/index.html http://developer.android.com/reference/android/graphics/Canvas.html#drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint)
答案 2 :(得分:4)
您可以在SDK目录中查看与Android SDK捆绑在一起的APIDemo源代码。
示例“Graphics / Text Align”(文件TextAlign.java)显示如何沿路径显示文本:
然后你可以调整它来构建你的屏幕。
答案 3 :(得分:3)
您已使用onDraw方法中的自定义视图实现它:
Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);
答案 4 :(得分:3)
您必须像这样创建自己的对象“查看”
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();
}
}
然后将它用作TextView :)希望这个帮助
答案 5 :(得分:1)
尝试以下代码..
onDraw(Canvas canvas){
Path path = new Path();
path.addArc(oval, startAngle, sweepAngle)
path.addArc(oval, 0, 180)
}
这可能有效......
答案 6 :(得分:-10)
您无需进行自定义视图。
找到正确的TypeFace
,将其放入您的项目并设置为TextView
或使用microsoft office word art并将图像复制到项目中