创建路径

canvas中绘制路径利用:

void drawPath (Path path, Paint paint)

直线路径

void moveTo (float x1, float y1):直线的开始点;将直线路径的绘制点定在(x1,y1)的位置;

void lineTo (float x2, float y2):直线的结束点,又是第二次绘制直线路径的开始点;lineTo()可以一直用;

void close ():如果连续画了几条直线,但没有形成闭环,调用Close()会将路径首尾点连接起来,形成闭环;

1 Paint paint = new Paint();

2

3 paint.setColor(Color.BLUE);//设置画笔颜色

4 paint.setStyle(Paint.Style.STROKE);//填充样式改为描边

5 paint.setStrokeWidth(10); //设置画笔宽度

6

7 Path path = new Path();

8

9 path.moveTo(5,5);//设置起始点

10 path.lineTo(10,100);//第一条直线的终点,及第二条直线的起点

11 path.lineTo(200,100);//

12 path.lineTo(400,100);//第三条直线

13 path.close();//闭环

14

15 canvas.drawPath(path,paint);

TIM图片20180823145016.png

矩形路径

void addRect (float left, float top, float right, float bottom, Path.Direction dir)

void addRect (RectF rect, Path.Direction dir)

这里Path类创建矩形路径的参数与上篇canvas绘制矩形差不多,唯一不同点是增加了Path.Direction参数;

Path.Direction有两个值:

TIM图片20180823150133.png

Path.Direction.CCW:指创建逆时针方向的矩形路径;

Path.Direction.CW:指创建顺时针方向的矩形路径;

1 Paint paint = new Paint();

2 paint.setColor(Color.BLUE);//设置画笔颜色

3 paint.setStyle(Paint.Style.STROKE);//填充样式改为描边

4 paint.setStrokeWidth(10); //设置画笔宽度

5 //先创建两个不一样的路径

6 //第一个逆向生成

7

8 Path CCWpath = new Path();

9

10 RectF rectF = new RectF(50,50,250,200);

11 CCWpath.addRect(rectF, Path.Direction.CCW);

12

13 //第二个顺向生成

14 Path CWpath = new Path();

15 RectF rectF1 = new RectF(300,50,450,200) ;

16 CWpath.addRect(rectF1, Path.Direction.CW);

17

18

19 // 先画出这两个路径

20 canvas.drawPath(CCWpath,paint);

21 canvas.drawPath(CWpath,paint);

TIM图片20180823152108.png

1 Paint paint = new Paint();

2 paint.setColor(Color.BLUE);//设置画笔颜色

3 paint.setTextSize(20);

4 paint.setStyle(Paint.Style.STROKE);//填充样式改为描边

5 paint.setStrokeWidth(1); //设置画笔宽度

6 //先创建两个不一样的路径

7 //第一个逆向生成

8

9 Path CCWpath = new Path();

10

11 RectF rectF = new RectF(50,50,250,200);

12 CCWpath.addRect(rectF, Path.Direction.CCW);

13

14 //第二个顺向生成

15 Path CWpath = new Path();

16 RectF rectF1 = new RectF(300,50,450,200) ;

17 CWpath.addRect(rectF1, Path.Direction.CW);

18

19

20 // 先画出这两个路径

21 canvas.drawPath(CCWpath,paint);

22 canvas.drawPath(CWpath,paint);

23

24 String text = "新手上路,多多努力,一起加油!";

25 paint.setColor(Color.RED);

26 canvas.drawTextOnPath(text,CCWpath,0,10,paint);//文字逆时针生成

27 canvas.drawTextOnPath(text,CWpath,0,10,paint);//文字顺时针生成

TIM图片20180823153151.jpg

文字

构造函数:

void drawText (String text, float x, float y, Paint paint)

void drawText (CharSequence text, int start, int end, float x, float y, Paint paint)

void drawText (String text, int start, int end, float x, float y, Paint paint)

void drawText (char[] text, int index, int count, float x, float y, Paint paint)

1 //普通设置

2 Paint paint=new Paint();

3 paint.setAntiAlias(true); //是否使用抗锯齿功能,如果使用,使绘图速度变慢

4 paint.setStyle(Paint.Style.FILL);//绘图样式,对于设文字和几何图形有效

5 // Style.FILL/Style.FILL_AND_STROKE/Style.STROKE

6 paint.setTextAlign(Paint.Align.CENTER);//s设置文字对齐方式,取值:align.CENTER、align.LEFT或align.RIGHT

7 paint.setTextSize(10);//设置文字大小

8 paint.setStrokeWidth(10);//设置画笔宽度

9

10 //样式设置

11 paint.setFakeBoldText(true);//将水平方向拉伸,高度不变

12 paint.setUnderlineText(true);//设置下划线

13 paint.setTextSkewX((float)-0.5);//设置字体水平倾斜度,普通斜体字是-0.5

14 paint.setStrikeThruText(true);//设置带有删除线效果

15

16 //其他设置

17 paint.setTextScaleX(5);//将水平方向拉伸,高度不变

TIM图片20180909093213.png

Typeface create(String familyName, int style) //直接通过指定字体名来加载系统中自带的文字样式

Typeface create(Typeface family, int style) //通过其它Typeface变量来构建文字样式

Typeface createFromAsset(AssetManager mgr, String path) //通过从Asset中获取外部字体来显示字体样式

Typeface createFromFile(String path)//直接从路径创建

Typeface createFromFile(File path)//从外部路径来创建字体样式

Typeface defaultFromStyle(int style)//创建默认字体

1 //普通设置

2 Paint paint=new Paint();

3 paint.setColor(Color.BLUE);

4 paint.setAntiAlias(true); //是否使用抗锯齿功能,如果使用,使绘图速度变慢

5

6 paint.setTextSize(100);//设置文字大小

7 paint.setStrokeWidth(5);//设置画笔宽度

8 //绘图样式,设置为填充

9 paint.setStyle(Paint.Style.FILL);

10 canvas.drawText("加油努力吧!",150,100,paint);

11

12 //绘图样式设置为描边

13 paint.setStyle(Paint.Style.STROKE);

14 canvas.drawText("加油努力吧!",150,200,paint);

15

16 //绘图样式设置为填充并且描边

17 paint.setStyle(Paint.Style.FILL_AND_STROKE);

18 canvas.drawText("加油努力吧!",150,300,paint);

TIM图片20180825211057.jpg

Style的枚举值如下:

Typeface.NORMAL //正常体

Typeface.BOLD //粗体

Typeface.ITALIC //斜体

Typeface.BOLD_ITALIC //粗斜体

1 //普通设置

2 Paint paint=new Paint();

3 paint.setColor(Color.BLUE);

4 paint.setAntiAlias(true); //是否使用抗锯齿功能,如果使用,使绘图速度变慢

5

6 paint.setTextSize(100);//设置文字大小

7 paint.setStrokeWidth(5);//设置画笔宽度

8 //绘图样式,设置为填充

9 paint.setStyle(Paint.Style.FILL);

10 canvas.drawText("加油努力吧!",150,100,paint);

11

12 paint.setFakeBoldText(true);//将水平方向拉伸,高度不变

13 paint.setUnderlineText(true);//设置下划线

14 paint.setStrikeThruText(true);//设置带有删除线效果

15

16 paint.setTextSkewX((float)-0.5);//设置字体水平倾斜度,普通斜体字是-0.5

17 canvas.drawText("加油努力吧!",150,200,paint);

18

19

20 paint.setTextSkewX((float)0.5);//设置字体水平倾斜度,普通斜体字是-0.5

21 canvas.drawText("加油努力吧!",150,300,paint);

TIM图片20180825214706.jpg

1 //普通设置

2 Paint paint=new Paint();

3 paint.setColor(Color.BLUE);

4 paint.setAntiAlias(true); //是否使用抗锯齿功能,如果使用,使绘图速度变慢

5

6 paint.setTextSize(50);//设置文字大小

7 paint.setStrokeWidth(5);//设置画笔宽度

8 //绘图样式,设置为填充

9 paint.setStyle(Paint.Style.FILL);

10 canvas.drawText("加油努力吧!",10,50,paint);

11

12 paint.setTextScaleX(2);//水平方向拉伸,高度不变

13 canvas.drawText("加油努力吧!",10,100,paint);

14

15

16 //写在同一位置,同颜色,看高度是否不变

17

18

19 paint.setTextScaleX(1);//先还原拉伸效果

20 canvas.drawText("加油努力吧!",10,150,paint);

21

22 paint.setColor(Color.RED);

23 paint.setTextScaleX(2);//重新设置拉伸效果

24 canvas.drawText("加油努力吧!",10,200,paint);

TIM图片20180826161306.png

使用系统中的字体

Typeface defaultFromStyle(int style)//创建默认字体

Typeface create(String familyName, int style) //直接通过指定字体名来加载系统中自带的文字样式

1 //普通设置

2 Paint paint=new Paint();

3 paint.setColor(Color.BLUE);

4 paint.setAntiAlias(true); //是否使用抗锯齿功能,如果使用,使绘图速度变慢

5

6 paint.setTextSize(100);//设置文字大小

7 paint.setStrokeWidth(5);//设置画笔宽度

8 //绘图样式,设置为填充

9 paint.setStyle(Paint.Style.FILL);

10

11 String familyName = "宋体";

12 Typeface font = Typeface.create(familyName,Typeface.NORMAL);

13 paint.setTypeface(font);

14 canvas.drawText("努力加油",10,100, paint);

TIM图片20180909093256.png

android 文字路径,Android自定义控件:路径及文字相关推荐

  1. android 图片文字布局,Android自定义控件图片+文字布局

    本来想用Tabrow来布局一组上面是图片下面是文字说明的控件,可是发现Tabrow不像想象的那样简易,并且这几组之间的控件距离很差把握,在网上找了两种方法以供参照.html 方法1.利用RadioBu ...

  2. android 自定义 seekbar,Android自定义控件 带文字提示的SeekBar

    封面 1.写在前面 SeekBar控件在开发中还是比较常见的,比如音视频进度.音量调节等,但是原生控件有时还不能满足我们的需求,今天就来学习一下如何自定义SeekBar控件,本文主要实现了一个带文字指 ...

  3. Android自定义View(七)_Canvas之图片文字

    在上一篇文章Canvas之画布操作中我们了解了画布的一些基本操作方法,本次了解一些绘制图片文字相关的内容.如果你对前几篇文章讲述的内容熟练掌握的话,那么恭喜你,本篇结束之后,大部分的自定义View已经 ...

  4. android开发之局域网内屏幕共享+提取文字02:利用OCR提取文字

    一.问题 从图片中提取文字 二.方法 借助百度的OCR接口实现,百度OCR接口文档 原理就是提供图片所在文件给百度的OCR接口,OCR接口返回数据 三.代码 1.具体增加依赖和包,请看百度OCR接口文 ...

  5. android TextView向上滚动(模仿滚动文字广告效果)

    android文字向上滚动效果没有自带的控件,这就需要开发者根据算法精确按照时间和坐标来实现TextView控件的向上移动,从网上找过几个框架,基本都会有bug,于是自己写了一个自定义控件,来实现Te ...

  6. android drawtext 方法,Android 文字绘制(DrawText)技术总结

    这里的绘制文字不是直接调用TextView.setText(String content)去展示文字内容.而是在View上面通过 canvas.drawText(text, x, y,textPain ...

  7. android获取元素路径,Appium元素定位(name、classname、相对路径、绝对路径\、list)...

    元素通过name元素定位 Appium的name元素定位对应的是Android上的text字段,语法: driver.find_element_by_name('安检测速').click() 缺点:部 ...

  8. mac下Android studio配置gradle的路径

    2019独角兽企业重金招聘Python工程师标准>>> 最详细的mac下Android studio配置gradle的路径 转载于:https://my.oschina.net/sh ...

  9. 【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )

    文章目录 一.文本边界坐标解析 二.绘图位置 一.文本边界坐标解析 在上一篇博客 [Android 应用开发]Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 ) 中 ...

  10. android表情加文字图片,Android开发技巧之像QQ一样输入文字和表情图像

    EditText和TextView一样,也可以进行图文混排.所不同的是,TextView只用于显示图文混排效果,而EditText不仅可显示,也可混合输入文字和图像,让我们先回顾一下图5.2所示的QQ ...

最新文章

  1. tomcat监控-psi-probe使用
  2. Netty源码解析4-Handler综述
  3. Android中的数据存储方式
  4. 性能优化指南(5000 字小结)
  5. 网络优化实践探索文章
  6. 主打“云安全” 迅雷系帝恩思登陆新三板
  7. 初探 amaze-vue( 基于vue.js封装的Amaze UI 组件库)
  8. 2018蚂蚁金服NLP用户意图的精准识别,复赛f1 = 0.7327
  9. Java中继承和面向接口的编程
  10. echarts地图文字重叠解决方案_踩坑日记:在Echarts中国地图踩到的坑
  11. python 快速排名发包_百度发包快排【SEO超快速排名系统】 - 「黑酷SEO」
  12. 微信小程序-定时刷新发送请求
  13. oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数
  14. 增加/删除临时IP地址
  15. 有时候,我们曾经有着同样的困扰。
  16. 虚拟内存(操作系统)
  17. 自定义控件其实很简单 二
  18. 在android上模拟ios阴影效果
  19. 临时牙冠为何选择用3D打印来制作?
  20. (已解决)使火狐浏览器默认在新版标签页打开链接

热门文章

  1. QT自定义图表上不同元素的外观
  2. QT的QBoxPlotSeries类的使用
  3. C++与QML逻辑分离
  4. matlab修改矩阵元素,怎么修改矩阵中的某些元素 或者简单点说保留矩阵中的元素...
  5. 电子计算机系统可以分为几类,电子计算机分为两大类.doc
  6. 10_InfluxDB常用函数(三)变换类函数(DERIVATIVE, DIFFERENCE,ELAPSED,MOVING_AVERAGE,NON_NEGATIVE_DERIVATIVE)等
  7. 2.1.Python字符串处理(去掉空格或者特殊字符、替换操作、查找操作、判断操作、分割合并操作、字符串文档)
  8. Windows10避开注册的方式安装sourceTree,Failed to connect to github.com port 443: Timed out问题解决
  9. 13_Android的生命周期
  10. SimpleDateFormat 按照不同要求去改写时间的格式,或者把时间串变成date类型