Android游戏开发之五:Path路径类Typeface字体类

移动开发 Android 游戏开发
在上节Canvas与Paint的应用实例中提到了Path路径和Typeface字体两个类,本节来详解Path路径类和Typeface字体类的使用。

Path路径类

Path 路径对于Android 2D绘图或者说Android游戏开发来说是很重要的。理解Path路径可以想想在Photoshop中使用钢笔工具绘制路径的过程。Path路径类在位 于android.graphics.Path中,Path的构造方法比较简单,如下:

Path cwj=new Path();  //构造方法

下面我们画一个封闭的原型路径,我们使用Path类的addCircle方法。

cwj.addCircle(10,10,50,Direction.CW); //参数一为x轴水平位置,参数二为y轴垂直位置,第三个参数为圆形的半径,***是绘制的方向,CW为顺时针方向,而CCW是逆时针方向。

结合上次提到的Canvas类中的绘制方法drawPath和drawTextOnPath,我们继续可以在onDraw中加入。

canvas.drawPath(cwj,paintPath); //提示大家这里paintPath为路径的画刷颜色,可以见下文完整的源代码。

canvas.drawTextOnPath("Android123 - CWJ",cwj,0,15,paintText); //将文字绘制到路径中去,有关drawTextOnPath的参数如下:

方法原型public void drawTextOnPath (String text, Path path, float hOffset, float vOffset, Paint paint) 

参数说明:

text:为需要在路径上绘制的文字内容。

path:将文字绘制到哪个路径。 

hOffset:距离路径开始的距离。

vOffset:离路径的上下高度,这里Android开发网提示大家,该参数类型为float浮点型,除了精度为8位小数外,可以为正或负,当为正时文字在路径的圈里面,为负时在路径的圈外面。

paint:***仍然是一个Paint对象用于制定Text本文的颜色、字体、大小等属性。

下面是我们的onDraw方法中如何绘制路径的演示代码为:

  1. @Override   
  2.  protected void onDraw(Canvas canvas) {    
  3.   Paint paintPath=new Paint();    
  4.   Paint paintText=new Paint();    
  5.   paintPath.setColor(Color.Red); //路径的画刷为红色    
  6.   paintText.setColor(Color.Blue); //路径上的文字为蓝色    
  7.   Path pathCWJ=new Path();    
  8.   pathCWJ.addCircle(10,10,50,Direction.CW); // 半径为50px,绘制的方向CW为顺时针    
  9.   canvas.drawPath(pathCWJ,paintPath);    
  10.  canvas.drawTextOnPath("Android123 - CWJ",pathCWJ,0,15,paintText); //在路径上绘制文字    
  11. }   

有关路径类常用的方法如下:

void  addArc(RectF oval, float startAngle, float sweepAngle)  //为路径添加一个多边形

void  addCircle(float x, float y, float radius, Path.Direction dir)  //给path添加圆圈

void  addOval(RectF oval, Path.Direction dir)  //添加椭圆形

void  addRect(RectF rect, Path.Direction dir)  //添加一个区域

void  addRoundRect(RectF rect, float[] radii, Path.Direction dir)  //添加一个圆角区域

boolean  isEmpty()  //判断路径是否为空

void  transform(Matrix matrix)  //应用矩阵变换

void  transform(Matrix matrix, Path dst)  //应用矩阵变换并将结果放到新的路径中,即第二个参数。

有关路径的高级效果大家可以使用PathEffect类,有关路径的更多实例将在今后的游戏开发实战中讲解道。

Typeface字体类

平时我们在TextView中需要设置显示的字体可以通过TextView中的setTypeface方法来指定一个Typeface对象,因为Android的字体类比较简单,我们列出所有成员方法:

static Typeface  create(Typeface family, int style)  //静态方法,参数一为字体类型这里是Typeface的静态定义,如宋体,参数二风格,如粗体,斜体

static Typeface  create(String familyName, int style)  //静态方法,参数一为字体名的字符串,参数二为风格同上,这里我们推荐使用上面的方法。

static Typeface  createFromAsset(AssetManager mgr, String path)  //静态方法,参数一为AssetManager对象,主要用于从APK的assets文件夹中取出字体,参数二为相对于Android工程下的 assets文件夹中的外挂字体文件的路径。

static Typeface  createFromFile(File path)  //静态方法,从文件系统构造一个字体,这里参数可以是sdcard中的某个字体文件

 

static Typeface  createFromFile(String path)  //静态方法,从指定路径中构造字体

 

static Typeface  defaultFromStyle(int style) //静态方法,返回默认的字体风格

int  getStyle()  //获取当前字体风格

final boolean  isBold()  //判断当前是否为粗体

final boolean  isItalic()  //判断当前风格是否为斜体

本类的常量静态定义,首先为字体类型名称:

Typeface DEFAULT 

Typeface DEFAULT_BOLD

Typeface MONOSPACE

Typeface SANS_SERIF

Typeface SERIF

字体风格名称:

int BOLD  

int BOLD_ITALIC  

int ITALIC

int NORMAL

我们将在下节具体讲解onDraw以及什么时候会触发绘制方法,来实现我们自定义或子类化控件。

责任编辑:闫佳明 来源: jizhuomi
相关推荐

2013-05-21 09:56:15

2013-05-21 14:10:11

Android游戏开发SoundPool类同时多音效

2013-05-20 17:51:47

Android游戏开发SurfaceView

2013-05-20 17:04:09

2013-05-20 17:07:26

2017-09-22 14:12:33

Android字体 Typeface

2012-04-16 15:30:13

Path

2023-03-30 08:01:15

2018-01-17 21:56:09

网线电缆以太网

2020-07-08 07:56:08

Java工具类包装类

2010-03-05 15:11:49

Android开发类

2013-05-21 11:26:49

Android游戏开发Sensor感应

2010-03-25 15:51:42

双绞线综合布线

2011-06-16 11:13:13

QtQWidget

2023-09-15 14:29:57

Android开发语言

2013-05-21 13:55:51

Android游戏开发图像渐变特效

2013-05-20 17:48:20

2013-05-21 10:42:48

Android游戏开发Bitmap位图旋转

2013-05-21 11:24:07

Android游戏开发Sensor重力感应

2018-05-10 16:02:48

Android程序赠工具
点赞
收藏

51CTO技术栈公众号