您的位置:首页 > 移动开发 > Android开发

Android之 drawTextOnpath

2016-06-25 00:46 423 查看
Android的 Canvas还提供了一个drawTextOnpath ( )方法

package com.test.pathactivity;

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 PathTextActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_path_text);
setContentView(new MyTextView(this));
}

class MyTextView extends View{

public static final String DRAW_TEXT = "疯狂Android讲义";
Path[] mPath = new Path[3];
Paint mPaint;

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

mPath[0] = new Path();
mPath[0].moveTo(0,0);

for (int i = 0; i < 7; i++) {
//生成 7个点 随机生成他们的 Y坐标,   并将他们连接成一条 path
mPath[0].lineTo(i*30, (float) (Math.random()*30));
}

mPath[1] = new Path();
RectF rectF = new RectF(0,0,200,150);
mPath[1].addOval(rectF,Path.Direction.CCW);

mPath[2] = new Path();
mPath[2].addArc(rectF,60,180);

//初始化画笔
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLUE);
mPaint.setStrokeWidth(5);
}

@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.translate(150,50);

//设置从右边开始绘制 (右对齐)
mPaint.setTextAlign(Paint.Align.RIGHT);
mPaint.setTextSize(22);

//绘制路径
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawPath(mPath[0],mPaint);

//沿着路径绘制一段文本
mPaint.setStyle(Paint.Style.FILL);
canvas.drawTextOnPath(DRAW_TEXT, mPath[0], -8,20,mPaint);

//对 canvas 进行坐标转换: 画布下移
canvas.translate(0,60);

//绘制路径
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawPath(mPath[1],mPaint);

//沿着路径绘制一段文本
mPaint.setStyle(Paint.Style.FILL);
canvas.drawTextOnPath(DRAW_TEXT, mPath[1], 20,20,mPaint);

//对 canvas 进行坐标转换: 画布下移120
canvas.translate(0,120);

//绘制路径
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawPath(mPath[2],mPaint);

//沿着路径绘制一段文本
mPaint.setStyle(Paint.Style.FILL);
canvas.drawTextOnPath(DRAW_TEXT, mPath[2], 10,20,mPaint);

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: