今天我们继续处理上次 Android游戏开发之旅四 Canvas和Paint实例 中提到的Path路径和Typeface字体两个类。对于Android游戏开发或者说2D绘图中来讲Path路径可以用强大这个词来形容。在 Photoshop中我们可能还记得使用钢笔工具绘制路径的方法。Path路径类在位于android.graphics.Path中,Path的构造方法比较简单,如下:
Path cwj=new Path(); //构造方法
下面我们画一个封闭的原型路径,我们使用Path类的addCircle方法
cwj.addCircle(10,10,50,Direction.CW); //参数一为x轴水平位置,参数二为y轴垂直位置,第三个参数为圆形的半径,最后是绘制的方向,CW为顺时针方向,而CCW是逆时针方向。
结合Android上次提到的Canvas类中的绘制方法drawPath和drawTextOnPath,我们继续可以在onDraw中加入。
canvas.drawPath(cwj,paintPath); //Android123提示大家这里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方法中如何绘制路径的演示代码为:
@Override
protected void onDraw(Canvas canvas) {
Paint paintPath=new Paint();
Paint paintText=new Paint();
paintPath.setColor(Color.Red); //路径的画刷为红色
paintText.setColor(Color.Blue); //路径上的文字为蓝色
Path pathCWJ=new Path();
pathCWJ.addCircle(10,10,50,Direction.CW); // 半径为50px,绘制的方向CW为顺时针
canvas.drawPath(pathCWJ,paintPath);
canvas.drawTextOnPath("Android123 - CWJ",pathCWJ,0,15,paintText); //在路径上绘制文字
}
有关路径类常用的方法如下:
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类,有关路径的更多实例Android123将在今后的游戏开发实战中讲解道。
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
分享到:
相关推荐
5.Android游戏开发之旅五 Path和Typeface 6.Android游戏开发之旅六 自定义View 7.Android游戏开发之旅七 自定义SurfaceView 8.Android游戏开发之旅八 SurfaceView类实例 9.Android游戏开发之旅九 VideoView类...
在Android开发中,UI设计和用户体验是至关重要的部分,而字体作为UI的重要组成部分,能够显著影响应用的视觉风格和易读性。`Android Typeface Helper`是一个专为Android开发者设计的库,旨在简化自定义字体的集成...
在Android开发中,`TypeFace`是一个非常重要的概念,它涉及到UI设计中的字体风格和个性化。`TypeFace`是Android SDK提供的一种类,允许开发者自定义应用中的字体样式,以区别于系统默认的字体,从而提升用户体验和...
在Android游戏开发中,长按事件是常见的用户交互方式之一,尤其在动作类游戏中,长按发射武器等操作频繁出现。理解长按Button的工作原理对于设计响应迅速且用户友好的游戏至关重要。 在Android中,`ImageButton`是...
5. **Path和Typeface**:`Path`用于构造复杂的矢量图形路径,而`Typeface`用来改变文字的字体风格,对于游戏中的文字和标识设计很重要。 6. **手势识别**:Android提供了`GestureDetector`类,支持滑动、点击等手势...
Android lacks proper support for custom typefaces. Most obvious method of defining typeface for UI elements via XML attributes is missing from default framework views. This library makes it a lot ...
#### 五、Path和Typeface **知识点概述:** - **Path**:用于绘制复杂的形状路径。 - **Typeface**:定义字体样式,常用于自定义文字显示。 **Path常用方法:** - `moveTo(float x, float y)`:移动起点。 - `line...
在Android开发中,界面设计是至关重要的,因为它直接影响到用户的体验和应用的吸引力。本文将探讨如何快速精通Android界面开发,特别关注从J2ME项目移植到Android平台的过程。 首先,Android与J2ME虽然在基本接口...
"两个小时精通Android开发之界面篇"主要围绕如何快速理解和掌握Android界面设计的关键知识点展开,特别是对于有J2ME背景的开发者来说,如何进行平滑迁移。 首先,Android与J2ME在界面组件和接口上存在一些差异。在...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
在Android应用开发中,为了...总之,Android应用开发中使用第三方字体可以极大地丰富UI设计,但同时也需要注意性能、兼容性和版权等问题。通过合理的方式引入和管理自定义字体,可以为用户提供更加美观和个性化的体验。
- 在开发过程中,确保在多种设备和Android版本上进行测试,以确保Emoji的正确显示。可以使用`TextView`的`getPaint().getTextBounds()`方法来检查文字边界,确保表情不会超出控件范围。 8. **适配不同屏幕尺寸和...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
在实际开发过程中,还需要考虑到性能优化,例如避免频繁的内存分配和减少不必要的字体加载。此外,如果要支持大量字体,可以考虑使用懒加载策略,只在用户需要时才加载相应的字体。 总结来说,解决Android上的字体...
标题中的"Typeface"指的是字体设计,这在IT行业中是一个重要的视觉传达元素,尤其是在图形设计、网页设计和软件用户界面(UI)设计中。字体不仅关乎文字的可读性,还影响着整体的设计风格和品牌识别度。在数字媒体中,...
### Android开发中的EditText属性详解 #### 一、概述 `EditText`是Android中非常重要的一个控件,主要用于接收用户输入的文本。它继承自`TextView`,而`TextView`又继承自`View`,因此`EditText`具备了`View`和`...
在Android应用开发中,TextView控件是...总的来说,TextView是Android开发中的基础组件,其丰富的功能和灵活性使得它在各种场景下都能发挥重要作用。熟练掌握TextView的使用,对于构建用户友好的Android应用至关重要。