Android中drawTextOnPath文字效果演示(中级)

Android中Canvas提供了一个drawTextOnPath(Stringtext,Pathath,floathOffset,floatvOffset,Patingpaint)方法,该方法可以沿着Path绘制文本其中hOffset参数指定水平偏移vOffset参数指定垂直偏移

上代码

privatestaticclassmytextextendsView{

privatePaintpaint;

privatestaticfinalStringSKY="skyoceanone";

privatePathpaths[]=newPath[3];

publicmytext(Contextcontext){

super(context);

paint=newPaint();

paint.setColor(Color.RED);

paint.setAntiAlias(true);

paint.setTextAlign(Paint.Align.RIGHT);//设置从右变开始写字

paint.setTextSize(20);

paths[0]=newPath();

paths[0].moveTo(0,0);

for(inti=0;i<15;i++){//一条线的路径

paths[0].lineTo(i*30,(float)Math.random()*60);

}

paths[1]=newPath();

RectFoval=newRectF(0,0,300,200);

paths[1].addOval(oval,Path.Direction.CCW);//一个椭圆的路径

paths[2]=newPath();

paths[2].addArc(oval,60,180);//一个弧线的路径

}

@Override

protectedvoidonDraw(Canvascanvas){

//TODOAuto-generatedmethodstub

super.onDraw(canvas);

canvas.drawColor(Color.WHITE);

paint.setStyle(Paint.Style.STROKE);

paint.setStrokeWidth(1);

canvas.translate(0,20);

//以线路径为列子如果hOffsetvOffset两个参数为0效果如图一会沿着线上走

//参数为0,20则会向下20个像素点如图二

canvas.drawPath(paths[0],paint);

canvas.drawTextOnPath(SKY,paths[0],0,20,paint);

canvas.translate(0,120);

canvas.drawPath(paths[2],paint);

canvas.drawTextOnPath(SKY,paths[2],-30,30,paint);

canvas.translate(0,240);

paint.setStyle(Paint.Style.FILL);

canvas.drawPath(paths[1],paint);

canvas.drawTextOnPath(SKY,paths[1],-30,30,paint);

}

}

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. Pycharm安装PyQt5的详细教程
  3. Python技巧匿名函数、回调函数和高阶函数
  4. python list.sort()根据多个关键字排序的方法实现
  5. Android命令行启动程序-am命令的使用-纠正网上大部分资料的错误
  6. android存储路径问题
  7. Android(安卓)Studio调试native或者service
  8. Android中的Notification的使用
  9. Eclipse 不能finish android工程

随机推荐

  1. Android(安卓)初始化Setup Wizard——Pro
  2. Unity导出Android工程生成apk安装包流程
  3. Android(安卓)Activity(一)启动流程
  4. Android(安卓)在TextView中加入多个点击
  5. android jni (jni_onload方式)
  6. Android(安卓)中 RecyclerView 的基本使
  7. 聚焦 Android(安卓)11:游戏开发新工具
  8. 为什么要在 Windows 10 系统上运行 Andro
  9. Android的多媒体框架OpenCore(PacketVideo
  10. Android中使用SQLite数据库详解