Android UI开发专题(二) 之绘图基础

  在Android UI开发专题(一) 之界面设计中我们介绍了有关Android平台资源使用以及Bitmap相关类的操作,接下来将会以实例的方式给大家演示各种类的用处以及注意点。今天我们继续了解android.graphics包中比较重要的绘图类。

  一、 android.graphics.Matrix

  有关图形的变换、缩放等相关操作常用的方法有:

  void reset() // 重置一个matrix对象。

  void set(Matrix src) //复制一个源矩阵,和本类的构造方法 Matrix(Matrix src) 一样

  boolean isIdentity() //返回这个矩阵是否定义(已经有意义)

  void setRotate(float degrees) //指定一个角度以0,0为坐标进行旋转

  void setRotate(float degrees, float px, float py) //指定一个角度以px,py为坐标进行旋转

  void setScale(float sx, float sy) // 缩放

  void setScale(float sx, float sy, float px, float py) //以坐标px,py进行缩放

  void setTranslate(float dx, float dy) //平移

  void setSkew (float kx, float ky, float px, float py) //以坐标px,py进行倾斜

  void setSkew (float kx, float ky) //倾斜

  二、android.graphics.NinePatch

  NinePatch是Android平台特有的一种非矢量图形自然拉伸处理方法,可以帮助常规的图形在拉伸时不会缩放,实例中Android开发网提示大家对于Toast的显示就是该原理,同时SDK中提供了一个工具名为Draw 9-Patch,有关该工具的使用方法可以参考我们经发布的 Draw 9-Patch使用方法介绍一文。由于该类提供了高质量支持透明的缩放方式,所以图形格式为PNG,文件命名方式为.9.png 的后缀比如android123.9.png。

  三、android.graphics.Paint

  Paint类我们可以理解为画笔、画刷的属性定义,本类常用的方法如下:

  void reset() //重置

  void setARGB(int a, int r, int g, int b) 或 void setColor(int color) 均为设置Paint对象的颜色

  void setAntiAlias(boolean aa) //是否抗锯齿,需要配合void setFlags (Paint.ANTI_ALIAS_FLAG) 来帮助消除锯齿使其边缘更平滑。

  Shader setShader(Shader shader) //设置阴影,Shader类是一个矩阵对象,如果为NULL将清除阴影。

  void setStyle(Paint.Style. style) //设置样式,一般为 FILL 填充,或者STROKE凹陷效果。

  void setTextSize(float textSize) //设置字体大小

  void setTextAlign(Paint.Align align) //文本对齐方式

  Typeface setTypeface(Typeface typeface) //设置字体,通过Typeface可以加载Android内部的字体,一般为宋体对于中文,部分ROM可以自己添加比如雅黑等等

  void setUnderlineText(boolean underlineText) //是否设置下划线,需要撇和void setFlags (Paint.UNDERLINE_TEXT_FLAG) 方法。

  四、android.graphics.Rect

  Rect我们可以理解为矩形区域,类似的还有Point一个点,Rect类除了表示一个矩形区域位置描述外,android123提示主要可以帮助我们计算图形之间是否碰撞(包含)关系,对于Android游戏开发比较有用,其主要的成员contains包含了三种重载方法,来判断包含关系

  boolean contains(int left, int top, int right, int bottom)

  boolean contains(int x, int y)

  boolean contains(Rect r)

  五、android.graphics.Region

  Region在Android平台中表示一个区域和Rect不同的是,它表示的是一个不规则的样子,可以是椭圆、多边形等等,而Rect仅仅是矩形。同样Region的boolean contains(int x, int y) 成员可以判断一个点是否在该区域内

  六、android.graphics.Typeface

  Typeface类是帮助描述一个字体对象,在TextView中通过使用setTypeface方法来制定一个输出文本的字体,其直接构造调用成员create方法可以直接指定一个字体名称和样式,比如

  static Typeface create(Typeface family, int style)

  static Typeface create(String familyName, int style)

  同时使用isBold和isItalic方法可以判断出是否包含粗体或斜体的字型。

  final boolean isBold()

  final boolean isItalic()

  该类的创建方法还有从apk的资源或从一个具体的文件路径,其具体方法为

  static Typeface createFromAsset(AssetManager mgr, String path)

  static Typeface createFromFile(File path)

  static Typeface createFromFile(String path)

 

  有关Android平台的图形、图像我们在前两节中已经整理出来,下次我们将首先讲述下NinePatch的实例应用。

时间: 2024-11-01 12:26:04

Android UI开发专题(二) 之绘图基础的相关文章

Android UI开发专题(一) 之界面设计

  近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的.本次专题分10节来讲述,有关OpenGL ES相关的可能将放到以后再透露.本次主要涉及以下四个包的相关内容: android.content.res 资源类 android.graphics 底层图形类 android.view 显示类 android.widget 控件类 一.android.content.res.Resources 对于Android平台

Android UI开发专题(四) View自绘控件

  很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制. 首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方

Android UI开发专题(三) 各种Drawable

  本次我们主要讲解Android平台下的各种Drawable,这里在SDK的android.graphics.drawable包下面可以看到有各种Drawable类多达十几种,它们到底之间有什么关系和区别呢? 一.AnimationDrawable 顾名思义该类主要表示动画的图形类,可以实现逐帧播放的效果,下面代码示例如下 1. 定义一个cwj_animation.xml 放到res/drawable 目录下,其中定义的属性duration为延时,单位为毫秒,而oneshot属性表示是否仅播放

Android ROM开发(二)——ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法

Android ROM开发(二)--ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法 怪自己二了,写好的不小心弄没了,现在只好重新写一些了,上篇简单的配置了一下环境,这里呢,就来讲一下相关的只是点 我们先下载一个ROM,随便下,原理都是差不多的,这里我就下载一个红米Note的MIUI稳定版 1.ROM结构 ROM根据厂商的定制可能有所不同,但是大体是不变的 data 内置一些软件 META-INF 脚本文件 update-binary 二进制文件 updater

Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法

Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://developer.android.com/guide/topics/connectivity/nfc/index.html来,看这篇的同学可以先大概的了解一下Android NFC开发(一)--初探NFC,了解当前前沿技术 1.Android NFC的历史 真要说起来,NFC在Android上,也是从A

Android简明开发教程二十二:使用资源Resources

在前面的例子中,我们忽略了一个重要的原则,在代码和Layout中,直接使用了字符串常量,比如: <Button android:text="Pattern" android:id="@+id/btnPattern" android:layout_width="wrap_content" android:textColor="@color/black" android:checked="true" an

Android UI开发神兵利器之Angrytools

最近很多人在问我,个人App开发者如何去设计UI. 其实这是个人开发者最头痛的问题,搞技术的人,确实没法做到面面俱到,不可能花大量的时间去切图,去做原型设计,去做美工. 当然,虽然我们设计不出那么复杂,精巧的UI,但是简单的东西,我们在没有美工的基础上,通过一些手段,也是可以做的不错的,从本文开始,我们将介绍一些关于Android界面开发的神兵利器,正是这些大神们开发的工具,让Coder也能做出一些不是那么见不得人的设计. Angrytools,我们今天的主角,我想当初作者也是被UI弄的Angr

Android简明开发教程二十四:总结及示例代码下载

Android 简明开发教程使用了引路蜂二维图形库作为例子,引路蜂二维图形库是引路蜂地图开发包 (http://www.imobilebbs.com/wordpress/?page_id=6)一部分,引路蜂地图开发包提供了对几乎所有软件平台(桌面和移动平台 )的支持,采用统一的接口使用包括Google 地图,Bing地图,MapABC地图在内多达二十多种地图类型,并在同一开发包中支持离 线地图,矢量地图显示. 引路蜂地图开发包Android平台示例可以参见:http://www.imobileb

【ANDROID游戏开发之二】剖析游戏开发用VIEW还是SURFACEVIEW ?!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/295.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读: