【Android】第21章 2D图形和动画

分类:C#、Android、VS2015;

创建日期:2016-03-19

一、简介

Android系统定义了一系列独立的图形处理类,其中,2D图形处理类分别位于以下命名空间:

Android.Graphices

Android.Graphics.Drawable.Shapes

Android.View.Animation

3D图形的处理类位于Android.Opengl命名空间下。

总体来说,Android的Graphics技术大致可以分为两大类:图形和动画。

图形又被进一步分为2D图形和3D图形。

2D图形处理基本可以分为两类:一类是静态图形处理,用于处理一些不经常变化的图片,比如图标、Logo、动画等,一般将这些图形作为资源文件添加到项目中(Resources/Drawable/、Resources/anim/);另一类是动态图形处理,即将经常变化的图片(大小、位置、形状)不停地定期复制绘制,如游戏中的各种场景、任务和道具等。

3D图形则通过大量的可用内置框架(如针对移动版本的OpenGL ES)和其他第三方框架(如MonoGame,兼容XNA的跨平台工具包)来实现。

这一节我们主要学习Android内置的2D绘图和动画基本技术。

1、2D Graphices基本概念

Android 提供了创建2D图形的两个不同的API。

一是高级别的用法,即通过在xml文件中声明画板资源来使用它。即在XML文件中利用画板资源嵌入绘图指令,或者以编程方式创建自定义图形。

二是低级别的API,一般在Canvas对象中使用它,最常用的是在位图上绘图并对其显示的内容进行细粒度的控制。

2、动画基本概念

除了2D图形技术以外,Android 还提供了几种创建动画的方法:

  • Drawable Animations – 画板动画。提供了按帧播放的简单动画API,指定以后,Android就会按顺序加载和显示可绘制资源的序列,播放效果很像在播放卡通(cartoon)漫画。
  • View Animations - 视图动画。Android原创的动漫API,在安卓系统的所有版本中都可用。此API仅限于在View对象中执行简单的转换,这些转换文件一般在/Resources/anim文件夹中定义。
  • Property Animations – 属性动画。这是从Android 3.0开始引入的API,可对任何对象的属性进行动画处理(包括View)。这种灵活性允许动画封装在不同的类中,使代码共享更加方便。

注意:View动画仅适用于早期的Android 3.0(API 11)版本提供的API。除此之外,其他情况都应该用属性动画提供的API来实现。换言之,虽然这三种动画都可用,但只要有可能,都应该优先考虑用属性动画来实现。

二、本章示例主界面

1、运行截图

2、ch.cs文件中相关的代码

chItems.Add(new Chapter()
{
    ChapterName = "第21章 2D图形和动画",
    ChapterItems = new ChItem[]
    {
        new ChItem { type=typeof(ch2101MainActivity), Title="例21-1 画板基本语法", Desc = "演示画板资源(Drawable Resource)的基本用法" },
        new ChItem { type=typeof(ch2102MainActivity), Title="例21-2 画布基本语法", Desc = "演示画布(Canvas)的基本用法" },
        new ChItem { type=typeof(ch2103MainActivity), Title="例21-3 动画基本语法", Desc = "演示动画(animation)的基本用法" },
    }
});
时间: 2024-10-14 14:39:04

【Android】第21章 2D图形和动画的相关文章

图形与动画在Android中的实现

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 public class MyView extends View{     Bitmap myBitmap;     Paint pai

Android中GPU硬件加速控制及其在2D图形绘制上的局限

图形的渲染可分为两种:软件渲染和硬件渲染.软件渲染是靠CPU计算各种坐标并绘制,主要是占用内存:硬件渲染是靠GPU,主要占用显存,一般的3D图形程序(OpenGL.DirectX)都是GPU加速的. 在Android3.0之前,2D绘图API只支持软件渲染模式,从Android3.0开始,2D绘图API开始支持GPU硬件渲染,即View中的Canvas的绘图操作会使用GPU,所以从Android 3.0(API Level 11)开始,View中就多了一些和硬件相关的方法.如果App的Andro

Android之2D图形(圆、直线、点)工具类 (持续更新)

public class Circle { private PointF centerPoint; private float radius; public PointF getCenterPoint() { return centerPoint; } public void setCenterPoint(PointF centerPoint) { this.centerPoint = centerPoint; } public float getRadius() { return radius

【Android】21.2 Canvas和Paint

分类:C#.Android.VS2015: 创建日期:2016-03-19 一.Canvas对象简介 画布(Canvas对象)是与System.Drawing或iOS核心图形等传统框架非常类似的另一种图形图像绘制技术,该对象提供了创建2D图形的最大控制,利用它可解决难以处理画板资源的情况.例如,绘制自定义滑块控件的外观等. 可以把Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套绘图API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的

[android] 练习样式主题自定义activity切换动画

主要练习了自定义样式和主题,继承android系统默认的样式并修改,练习xml定义淡入淡出动画 anim/fade_in.xml <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000" android:from

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf8

第6章 精灵 精灵(sprite),它是一种可以集成入动画之中的图像对象,赋予它们各种行为,精灵并非Canvas API的一部分,,但都是从它衍生而来 本章将会实现三种设计模式:策略模式(精灵与绘制器解耦).命令模式(精灵的动作).享元模式(一个实例表示多个精灵) painter属性是一个指向Painter对象的引用,使用paint(sprite,context)方法来绘制精灵,behaviors属性指向一个对象数组,数组中每个对象都会以execute(sprite,context,time)方

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf5

文本的定位 水平与垂直定位:当使用strokeText()和fillText()绘制文本时,指定了所绘文本的X与Y坐标,还有textAlign与textBaseline两个属性 textAlign:start(默认) center end left right,当canvas元素的dir属性是ltr时,left效果与start相同,right与end相同,如果dir属性是rtl,则相反 textBaseline:top bottom middle alphabetic(默认,基于拉丁字母) id

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf4

CanvasRenderingContext2D对象中用于平移.旋转坐标系的方法 镜像 scale(1,-1)绘制垂直镜像:scale(-1,1)绘制水平镜像 自定义的坐标变换 transform(),多次调用会叠加效果 setTransform(),每次调用都会清除上次的效果 两个方法都用于旋转.缩放.及平移坐标系(可以根据公式传入0或其他数据) x'=ax+cy+e y'=bx+dy+f 坐标系旋转公式(angle弧度) x'=x×cos(angle)-(y×sin(angle)) y'=y

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf1

canvas元素可以说是HTML5元素中功能最强大的一个,它真正的能力是通过Canvas的context对象(绘图上下文)表现出来的 fillText()方法使用fillStyle属性来填充文本中的字符,strokeText()方法使用strokeStyle属性描绘字符的轮廓线,fillStyle属性和strokeStyle属性可以是CSS格式的颜色.渐变色或是图片 fillText()与strokeText()方法都需要3个参数:要绘制的文本内容,以及在canvas中显示文本的横.纵坐标 注意