Android动画框架详解——第2部分

Android动画框架详解——第2部分
Android动画框架详解——第2部分

Android动画框架详解——第2部分

来源:IBM developerWorks

简介:这是由两部分组成的 Android 动画框架详解的第二部分实例篇。在阅读本篇之前,建议您首先阅读本系列的第一部分 Android 动画框架详解之原理篇。原理篇详细介绍了 Android 动画框架的实现原理,同时介绍了一个绕 Y 轴旋转的动画示例。本篇是在原理篇的基础上介绍一个较复杂的 Android launcher 的平滑和立体翻页效果动画的实现。

Android launcher 的平滑和立体翻页效果

我们这里把 Android launcher 程序的 Workspace 相关的代码抽取出来,以一个比较简单的代码来展示 launcher 程序是如何实现多页以及不同页面之间的切换效果。本示例代码在 SDK 2.1 中运行,设置的是 WVGA 的屏幕大小。

首先我们来看一下程序运行的效果来一些感性的认识。

图 1:平滑移动效果

清单 1.

其中 FlatWorkspace 的基类是 Workspace,它继承自 ViewGroup,是一个容器类,其中包含三个子 View,子 View 是 ImageView。三个 ImageView 就是三个页面。这三个 ImageView 的创建是在 WorkspaceActivity 的 onCreate 函数中调用 Workspace 的 initScreens 函数完成的,代码如下:

清单 2

https://www.360docs.net/doc/433698815.html,youtParams p = new

https://www.360docs.net/doc/433698815.html,youtParams(https://www.360docs.net/doc/433698815.html,youtParams.FILL_PARENT,https://www.360docs.net/doc/433698815.html, youtParams.FILL_PARENT);

for (int i = 0; i < 3; i++) {

this.addView(new

ImageView(this.getContext()), i, p);

}

((ImageView)this.getChildAt(0)).setImageResource(R.drawable.image_sea rch);

((ImageView)this.getChildAt(1)).setImageResource(R.drawable.image_sys tem);

((ImageView)this.getChildAt(2)).setImageResource(R.drawable.image_top );

图 3:Workspace 和页面布局图

为了让三个页面达到上图的窗口布局,我们对 Workspace 的 onMeasure 和onLayout 函数进行了重载,重点在 onLayout 代码中。onLayout 函数调用layoutScreens 函数完成布局,FlatWorkspace 中的 layoutScreens 实现如下:

清单 3

protected void layoutScreens() {

int childLeft = 0;

final int count = getChildCount();

for (int i = 0; i < count; i++) {

final View child = getChildAt(i);

if (child.getVisibility() != View.GONE) {

final int childWidth = child.getMeasuredWidth();

https://www.360docs.net/doc/433698815.html,yout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());

childLeft += childWidth;

}

}

}

页面的平滑移动的实现

下面来看用户 touch move 的时候程序如何让页面进行滑动,并且绘制他们。

页面的滑动可以调用 View 的 scrollBy 或 ScrollTo 函数,在 Workspace 的onTouchEvent 函数中取得用户的手指移动的距离,然后调用 scrollBy(它的参数就是 X 和 Y 轴上需要移动的距离)来让 Workspace 这个 View(也是ViewGroup)移动用户手指移动的距离,当然 View 移动之前得判断一下用户手

指移动的距离和速度是否足够才进行移动,以此减少用户的误操作。这部分代码简单就不进行深入分析了,请大家自己看看代码。

当 Workspace 这个 View 调用 scrollBy 进行 View 的滚动时,必然导致这个View 无效,从而被系统重新绘制,所以它的 dispatchDraw 函数会被调用来进行子 View(ImageView)的绘制,它本身没有什么东西要绘制,所以就不用关心Workspace 的 onDraw 函数了。dispatchDraw 函数会调用 drawScreens(canvas) 来对子 View 进行绘制。我们来看一下 FlatWorkspace 的实现:

清单 4

protected void drawScreens(Canvas canvas) {

final long drawingTime = getDrawingTime();

final int count = getChildCount();

for (int i = 0; i < count; i++) {

drawChild(canvas, getChildAt(i), drawingTime);

}

}

这里的 canvas 宽高就是屏幕可视范围的大小(如 HVGA 屏幕的 320 × 480 大小),而三个子 ImageView 的布局要超出屏幕的范围,不在屏幕可视范围之内的部分是不会被绘制的。这个绘制三个子 ImageView 的函数很重要,是制作立方体翻页等特效的关键地方,FlatWorkspace 实现的是平滑滑动效果,所以我们直接绘制三个子 ImageView。如果要实现立方体的效果,在绘制三个子ImageView 的时候就要让它们被绘制的时候有立体感,这个在 android 中我们可以通过上文提到的 Camera 类沿 Y 轴旋转一定的角度实现。

程序让用户进行 touch move 操作的目的是让用户选择一个页面,如果按照上面的实现,当用户最后抬起手指时,页面切换不会很彻底,而是象图 1 一样停留在两个页面之间。所以当用户抬起手指时程序需判断一下移动到下一个完整的页面还有多大距离,然后让 Workspace 这个 View 再移动这个距离一遍完整的切换到下一页。在这个移动的过程中,为了给用户一个平滑的感觉,不能一下就移动这个距离,而是需要给一定的时间间隔,在这个时间段里逐渐的移动到位,所以这里我们使用 Scroller 类的方法实现逐渐的移动。具体过程是在 Workspace

的 onTouchEvent 函数中检测到用户 touch up(抬起手指)时进行应该调整到哪个页面的判断,然后调用 snapToScreen(targetScreen) 跳转到需要目的页面,然后它调用 scrollToScreen(screen) 让 Workspace 这个 View 进行需要的滚动,这个函数在 FlatWorkspace 中的实现如下:

清单 5

public void scrollToScreen(int screen) {

final int newX = screen * getWidth();

final int deltaX = newX - getScrollX();

Log.e("FlatWorkspace","scrollToScreen call

mScroller.startScroll");

mScroller.startScroll(getScrollX(), getScrollY(), deltaX, getScrollY(), Math.abs(deltaX) * 2);

invalidate();

}

这里的重点是 mScroler.startScroll 部分的代码,它让 Workspace view 在时间段 Math.abs(deltaX) * 2 里移动下一个目标页面可视化需要移动的距离deltaX(及目的页面的坐标减去目前已经移动的距离),大家请好好看一下这个deltaX 的计算,这里不细说了。这个 mScroller.startScroll 并不会导致Workspace 立即进行移动,它只会导致当前 View 无效,从而重新绘制,在Workspace 被它的父亲 View 调用绘制的时候,它的 computeScroll 函数会被调用,所以会在这个函数中让 Workspace 调用 scrollTo 函数进行实际的移动。代码如下:

清单 6

public void computeScroll() {

if (https://www.360docs.net/doc/433698815.html,puteScrollOffset()) {

scrollTo(mScroller.getCurrX(),

mScroller.getCurrY());

//postInvalidate();

} else if (mNextScreen != INVALID_SCREEN) {

mCurrentScreen = mNextScreen;

mNextScreen = INVALID_SCREEN;

}

}

立体翻页效果的实现

通过前面的分析可知,立体翻页效果可以在平滑翻页效果的基础上通过改写三个子 ImageView 的绘制来完成。同时可知,翻页时用户操作过程分为三步:放下手指触摸屏幕,移动手指,抬起手指。手指触摸屏幕表示页面之间的滑动要开始了;移动手指的时候页面应该跟着用户手指的移动距离进行对应距离的移动,同时系统会根据页面的移动位置对 Workspace 里面的三个子 View(即页面)进行绘制;抬起手指的时候判断应该移动到哪个页面,还需要移动多少距离,然后平滑的移动需要的距离来跳转到目的页面上。

为了显示立体效果,对每个子 ImageView 的绘制时得想办法让它沿 Y 轴旋转一定的角度,前面已经提到 android 通过 Camera 这个类提供了这个功能,不需要使用 opengl ES 的东西,当然如果要做出更好的 3D 效果,我们就需要opengl ES 的强大功能了。既然要旋转一定的角度,那这个角度怎么计算呢?我们把这个角度和用户手指移动的距离关联起来。因为这个立方体只会沿着 Y 轴旋转,我们只看这三个面的立方体的顶部就够了,它的顶部沿着 Y 轴的往其箭头指示的方向看是一个等边三角形,每个面相对于手机屏幕的沿着 Y 轴旋转的角度的计算方法如下图所示:

图 4:初始屏幕位置示意图

下图为屏幕 1 沿 Y 轴旋转 45 读后其他两个屏幕需要沿 Y 轴旋转的角度。

图 5:旋转 45 度后屏幕位置示意图

这个变换的部分请看代码 CubeWorkspace 中函数 drawScreen 的代码,如下:清单 7

protected void drawScreen(Canvas canvas, int screen, long drawingTime) {

final int width = getWidth();

final int scrollWidth = screen * width;

final int scrollX = this.getScrollX();

if(scrollWidth > scrollX + width || scrollWidth + width < scrollX) {

return;

}

final View child = getChildAt(screen);

final int faceIndex = screen;

final float faceDegree = currentDegree - faceIndex * preFaceDegree;

if(faceDegree > 90 faceDegree < -90) {

return;

}

final float centerX = (scrollWidth < scrollX)?scrollWidth +

width:scrollWidth;

final float centerY = getHeight()/2;

final Camera camera = mCamera;

final Matrix matrix = mMatrix;

canvas.save();

camera.save();

camera.rotateY(-faceDegree);

camera.getMatrix(matrix);

camera.restore();

matrix.preTranslate(-centerX, -centerY);

matrix.postTranslate(centerX, centerY);

canvas.concat(matrix);

drawChild(canvas, child, drawingTime);

child.setBackgroundColor(Color.TRANSPARENT);

canvas.restore();

}

上面函数中的 currentDegree 变量是变化的,不是一个固定的值,改变这个变量值的方法比较隐蔽,在 AngelBaseWorkspace 的 scrollTo 函数中。AngelBaseWorkspace 中的 scrollTo 函数把 View 类中的函数重载了,这个函数会被 View 中的 scrollBy 函数调用,所以每次 touch 屏幕并且 move 的时候 AngelBaseWorkspace 中的 scrollTo 函数会被调用(onTouchEvent 调用scrollBy,scrollBy 调用 scrollTo),它会根据用户 touch move 移动的距离来更改当前页面的角度,即变量 currentDegree 的值。具体请看如下代码:

清单 8

public void scrollTo(int x, int y) {

if (getScrollX() != x || getScrollY() != y) {

int oldX = getScrollX();

int oldY = getScrollY();

super.scrollTo(x, y);

//x is the touch action X direction move distance

currentDegree = x * degreeOffset;

onScrollChanged(x, y, oldX, oldY);

invalidate();

}

}

结束语

本文介绍了 Android launcher 的平滑和立体翻页效果实现,可以帮助开发者深入理解 Android 的动画框架原理,从而能够充分利用 android 现有框架来做出够眩、够酷的动画效果。

千锋3G学院:https://www.360docs.net/doc/433698815.html,/

千锋嵌入式学院:https://www.360docs.net/doc/433698815.html,

A20_Android开发手册_V1[1].0

C o n f i d e n t i a l A20Android 开发手册 V 1.0 2013-02013-03 3-15

C o n f i d e n t i a l Revision History Version Date Section/Page Changes 1.0 2013-03-15 初始版本

C o n f i d e n t i a l 目录 一、A20概述 (4) 1.1A20主控介绍.....................................................................................................................51.2外围设备介绍.....................................................................................................................51.3软件资源介绍.....................................................................................................................5二、建立开发环境. (5) 2.1硬件资源............................................................................................................................62.2软件资源. (6) 2.2.1安装JDK (ubuntu12.04).....................................................................................62.2.2安装平台支持软件(ubuntu12.04).....................................................................62.2.3安装编译工具链(ubuntu12.04).........................................................................62.2.4安装phoenixSuit (windows xp )........................................................................72.2.5其他软件(windows xp ).. (7) 三、源码下载 (8) 3.1wing 源码下载....................................................................................................................83.2仓库的目录树.. (8) 3.2.1android 目录树.........................................................................................................83.2.2lichee 目录结构.. (9) 3.2.2.1buildroot 目录结构........................................................................................93.2.2.2linux-3.3目录结构......................................................................................103.2.2.3u-boot 目录结构..........................................................................................113.2.2.4tools 目录结构............................................................................................123.2.2.5boot 目录结构 (12) 四、编译和打包 (13) 4.1源码编译 (13) 4.1.1lichee 源码编译......................................................................................................134.1.2android 源码编译...................................................................................................134.2打包固件.. (13) 4.2.1完全打包...............................................................................................................134.2.2局部打包 (14) 五、固件烧写 (14) 5.1使用PhoenixSuit 烧写固件.............................................................................................145.2使用fastboot 更新系统 (14) 5.2.1进入fastboot 模式.................................................................................................145.2.2fastboot 命令使用.. (15) 六、recovery 功能使用 (15) 6.1键值的查看......................................................................................................................156.2按键选择..........................................................................................................................166.3功能使用..........................................................................................................................16七、调试 (17) 7.1调试apk...........................................................................................................................177.2调试linux 内核. (17)

Android开发规范参考文档

Android开发参考文档 一、Android编码规范 1. java代码中不出现中文,最多注释中可以出现中文.xml代码中注释 2. 成员变量,局部变量、静态成员变量命名、常量(宏)命名 1). 成员变量: activity中的成员变量以m开头,后面的单词首字母大写(如Button mBackButton; String mName);实体类和自定义View的成员变量可以不以m开头(如ImageView imageView,String name), 2). 局部变量命名:只能包含字母,组合变量单词首字母出第一个外,都为大写,其他字母都为小写 3). 常量(宏)命名: 只能包含字母和_,字母全部大写,单词之间用_隔开UMENG_APP_KEY 3. Application命名 项目名称+App,如SlimApp,里面可以存放全局变量,但是杜绝存放过大的实体对象4. activity和其中的view变量命名 activity命名模式为:逻辑名称+Activity view命名模式为:逻辑名称+View 建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view 5. layout及其id命名规则 layout命名模式:activity_逻辑名称,或者把对应的activity的名字用“_”把单词分开。

命名模式为:view缩写_模块名称_view的逻辑名称, 用单词首字母进行缩写 view的缩写详情如下 LayoutView:lv RelativeView:rv TextView:tv ImageView:iv ImageButton:ib Button:btn 6. strings.xml中的 1). id命名模式: activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称,strings.xml中,使用activity名称注释,将文件内容区分开来 2). strings.xml中使用%1$s实现字符串的通配,合起来写 7. drawable中的图片命名 命名模式:activity名称_逻辑名称/common_逻辑名称/ic_逻辑名称 (逻辑名称: 这是一个什么样的图片,展示功能是什么) 8. styles.xml 将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中; 9. 使用layer-list和selector,主要是View onCclick onTouch等事件界面反映

安卓开发环境搭建完全手册

安卓开发环境搭建完全手册 小安:博士,刚才听你说了这么多,我感觉Android平台真是前景无限,决定要从事Android开发,成为一名Android高手。今后请您多多指教! 大致:小安,我代表全体Android开发人员欢迎你加入Android开发的队伍,现在我就告诉你开发Android需要准备些什么。 1.1准备所需软件 1.1.1Android开发需要的工具 1)JDK5或JDK6 需要注意的是仅有JRE是不够的。JRE是Java的运行环境,而JDK不仅包含了JRE,还包含了我们开发Java程序所需要的工具集合。 JDK可以到:https://www.360docs.net/doc/433698815.html,/javase/downloads/index.jsp页面下载。 2)Eclipse3.5 使用MyEclipse也可以,但由于MyEclipse是收费的并且插件较多影响运行速度,因此不建议采用。Eclipse是一个开放源代码的、基于Java的可扩展的集成开发环境(IDE)。Eclipse中可以集成进多种插件,以完成特定语言的开发。 下载地址:https://www.360docs.net/doc/433698815.html,/downloads/页面中的EclipseIDEforJavaEEDevelopers链接。 3)Android SDK: SDK是我们开发Android应用程序的软件开发工具包。 下载地址:https://www.360docs.net/doc/433698815.html,/android/android-sdk_r05-windows.zip 4)Eclipse的插件ADT(Android Development Tools)

Android开发工具(ADT)是一个为EclipseIDE设计的旨在提供一个强大的、集成的环境来建立Android 应用程序的插件。ADT扩展了Eclipse的功能,可以快速建立新的Android项目,创建一个应用程序界面。它添加了基于Android框架API的组件,使用AndroidSDK工具调试你的应用程序,甚至导出签名(或未签名)APKs以分发你的应用程序。在Eclipse中强烈建议使用ADT进行开发,ADT提供了令人难以置信的提高开发Android应用程序的效率。 下载地址:https://www.360docs.net/doc/433698815.html,/android/ADT-0.9.5.zip 准备好这些工具,我们就可以安装这些软件来搭建Android的开发环境了。有一点需要注意,以上的链接部分会由于官方的更新而产生变动,有时下载到的版本不同,但下载的方式如此,如果遇到问题可以参考官方帮助文档 1.2安装所需的软件 1.2.1.安装JDK6 1.找到JDK安装文件,双击运行,界面如下:

Android开发入门文档 v1.1

RK28平台技术文档 Android 开发入门 部 门: 内核组 版 本: V1.1 作 者: 陈美友 文件状态: [√] 草稿 [ ] 正式发布 [ ] 正在修改 日 期: 2008-12-1 关键字 Linux 、Android 、Native C/C++、编译、下载 概 述 本文档主要讲述了Android 的下载、编译,以 及本地C/C++程序的开发、Android 应用程序 的开发等… 本文档适用了Android 开发的初学者

目录 下载ANDROID源码 (3) 编译ANDROID源码: (4) 编译ANDROID中的LINUX内核: (5) 编译NATIVE C/C++程序 (6) 运行NATIVE C/C++应用程序 (7) 在WINDOWS XP操作系统上构建ANDROID应用程序开发环境 (8) 编写ANDROID应用程序 (9) ANDROID SDK文件夹结构分析 (9) ANDROID源代码结构 (10) ANDROID应用程序生成 (10)

注: 如果你要创建Android的SDK,那么你必须安装JDK5,不要安装JDK6 $sudo apt-get install sun-java5-jdk 如果你使用apt-get下载安装程序时,发现某些安装包无法下载的情况, 那么你可以从网络上其它地方用其它的工具下载安装包,然后进行安装。我 通常是通过Windows上的迅雷下载,然后通过VMware中的文件共享传到Linux系统中。 我的电脑: 主系统:Windows XP 模拟器安装在Windows XP上 VMware中安装Linux:Ubuntu8.10 Android源码存放路径:~/mydroid 下载Android源码 在这里面以Ubuntu(x86)操作系统为例,说明下载Android的步骤: 下载必要工具: 下载GIT工具: $ sudo apt-get install git-core gnupg 下载JDK6: $ sudo apt-get install sun-java6-jdk 下载下列工具包:flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 下载Valgrind工具(可选): $ sudo apt-get install valgrind 安装Repo工具: 创建目录存放Repo: $ cd ~ $ mkdir bin $ export PATH=~/bin:$PATH 下载Repo: $ curl https://www.360docs.net/doc/433698815.html,/repo >~/bin/repo

Java与Android开发学习指南

Java与Android开发学习指南 对于现在的IT界,最为火热的依然属于的移动互联网的开发。 2012年我们在不断进步,并且不断领先。

本套视频将采用最新的JDK 1.7,同时使用JUNO Eclipse进行开发讲解。 例如:实体层开发,需要类和表的映射,对于显示层的部分操作需要一些转换或处理等等。 马上这份笔记的完善版会经过清华大学出版社在2013年的上半年进行推出,而这本课堂笔记将和Java开发实战经典一起作为MLDN的入门书籍。 99%的课程,都为了方便学员复习提供了复习的视频资料。

https://www.360docs.net/doc/433698815.html,/,在线课程。 同学一起去根据需求设计业务; 根据业务的功能讨论设计数据库; 后台的开发。前台的实现,远程接口的开发。 从各个公司而言,面试的要求是提高了。 对于代码而言,写代码不麻烦,最麻烦的是调试程序。 目的:是方便更多同学可以轻松的进入到Java开发行业,毕竟这个行业是相对稳定的。 2013年,而Java 是在1995年的时候出现。 最早的时候更多的是关注于服务器端的开发,但是对于客户端,开发的复杂度是很高的,并且受到环境的限制,所以最早的一些ERP系统,只能在电脑上完成,而有了Android/IOS之后,发现移动办公成为了可能。 不管如何操作,业务是最终必须要掌握的。

在整个市场70%的份额都被Android拿走了。这块蛋糕很大。 20左右是占了IOS。 历史: 2003年的时候,当时的手机系统:Symbian、Linux、Windows CE、MTK 2009年的时候,手机系统:Android(Linux)、IOS、Symbian、Windows Phone。项目的整体把握:项目的核心业务设计、架构。 最早的时候如果某一款软件需要被安放在手机里,需要找开发商,给他钱。。。 改了:开发商给钱推广。

Android开发说明文档

Android开发说明文档 一、开发环境的搭建过程: 第一步安装JDK,并在环境变量中配置相应的参数。 第二步安装开发工具,常用的开发工具有两种,一种是eclipse开发工具开发时需要导入ADT插件,一种是motodevstudio开发时不需要任何插 件。 第三步安装sdk(android开发环境),并在环境变量中配置相应的参数。 第四步测试环境是否搭建好,以此用命令javac、android –h进行测试,如果命令窗口中出现相应的说明,则证明开发环境搭建成功。 二、实现手机拍照功能: 1.UI界面设计 UI界面总共有两个,一个是初始化界面,一个是拍照界面。 初始化界面设计,如下图所示; 拍照界面设计,在此界面中,设计了两个按钮,一个是拍照按钮,一个是对焦按钮,拍照按钮用于进行对区域范围景色的拍摄,对焦按钮 是对所在视野区域焦距进行调节,拍摄窗口是横向显示方式,拍摄暂停 画面是花色的;

2.功能实现 当点击拍照按钮进入拍照界面,拍照界面显示当前的视野,然后点击对焦按钮进行焦距调整,然后点击拍照按钮进行拍照,当出现花色时证明拍照完成,拍照完成的图片保存在sd卡的根目录下。 三、实现百度地图获取地址信息: 1.获取百度api的key 在用百度账号进入,设置自己的key值,将key值添加到自己程序里的publicstaticfinal String strKey="iDneBU6NBrm9wyLxdOODPTM5";这段代码中。 2.UI界面设计 在此界面中用LinearLayout布局管理器,在此界面中设置六个编辑框用于获取当前地址所在信息,具体如下图所示。

最全的AndroidOpenGL开发文档

Android 3D 游戏开发教程 (Open Graphics Library) 目前最全的Android OpenGL文档 这几篇Android 3D游戏开发的文章原文出自一位德国人Martin 在https://www.360docs.net/doc/433698815.html,写的文章,由lixinso翻译为中文。 拷贝于博客:https://www.360docs.net/doc/433698815.html,/lixinso/archive/2010/01/30/5272927.aspx 第一部分首先介绍OpenGL相关的术语,并引导你开始3D开发的第一步。 这个关于3D游戏的系列的叫做V ortex . 这个教程主要focus在3D编程上,其他的东西比如菜单和程序生命周期虽然是代码的一部分,但是在这里不会被提到。 首先开始介绍OpenGL的术语。 顶点V ertex 顶点是3D空间中的一个点,也是许多对象的基础元素。在OpenGL中你可以生命少至二维坐标(X,Y),多至四维(X,Y,Z,W). w轴是可选的,默认的值是1.0. Z轴也是可选的,默认为0. 在这个系列中,我们将要用到3个主要的坐标X,Y,Z,因为W一般都是被用来作为占位符。vertex的复数是vertices(这对非英语母语的人来说比较重要,因为这容易产生歧义)。所有的对象都是用vertices作为它们的点,因为点就是vertex。 三角形Triangle 三角形需要三个点才能创建。因此在OpenGL中,我们使用3个顶点来创建一个三角形。多边形Polygon 多边形是至少有3个连接着的点组成的一个对象。三角形也是一个多边形。 图元Primitives 一个Primitive是一个三维的对象,使用三角形或者多边形创建。形象的说,一个有50000个顶点的非常精细的模型是一个Primitive,同样一个只有500个顶点的低模也叫做一个Primitive。 现在我们可以开始变成了。 创建一个工程交V ortex,activity也是这个名字。我们的工程应该大概是这个样子的:package com.droidnova.android.games.vortex; import android.app.Activity; import android.os.Bundle; public class V ortex extends Activity { private static final String LOG_TAG = V ortex.class.getSimpleName(); private V ortexV iew _vortexV iew; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); _vortexV iew = new V ortexView(this); setContentView(_vortexView);

Android开发技术文档

Android 开发最佳实践 从Futurice公司Android开发者中学到的经验。遵循以下准则,避免重复发明轮子。若您对开发iOS或Windows Phone 有兴趣,请看iOS Good Practices和Windows client Good Practices这两篇文章。 摘要 ?使用 Gradle 和它推荐的工程结构 ?把密码和敏感数据放在gradle.properties ?不要自己写 HTTP 客户端,使用Volley或OkHttp库 ?使用Jackson库解析JSON数据 ?避免使用Guava同时使用一些类库来避免65k method limit(一个Android程序中最多能执行65536个方法) ?使用 Fragments来呈现UI视图 ?使用 Activities 只是为了管理 Fragments ?Layout 布局是 XMLs代码,组织好它们 ?在layoutout XMLs布局时,使用styles文件来避免使用重复的属性 ?使用多个style文件来避免单一的一个大style文件 ?保持你的colors.xml 简短DRY(不要重复自己),只是定义调色板 ?总是使用dimens.xml DRY(不要重复自己),定义通用常数 ?不要做一个深层次的ViewGroup ?在使用WebViews时避免在客户端做处理,当心内存泄露 ?使用Robolectric单元测试,Robotium 做UI测试 ?使用Genymotion 作为你的模拟器 ?总是使用ProGuard 和 DexGuard混淆来项目 Android SDK 将你的Android SDK放在你的home目录或其他应用程序无关的位置。当安装有些包含SDK的IDE的时候,可能会将SDK放在IDE同一目录下,当你需要升级(或重新安装)IDE或更换的IDE时,会非常麻烦。此外,若果你的IDE 是在普通用户,不是在root下运行,还要避免吧SDK放到一下需要sudo权限的系统级别目录下。 构建系统

Android开发权威指南

《Android开发权威指南》内容上涵盖了用最新的Android版本开发的大部分场景。全书分4个部分,分别从Android基础介绍、环境搭建、SDK介绍,到应用剖析、组件介绍、综合实例演示,以及符合潮流的、最新的移动开发技术,如HTML5、OpenGL ES、NDK 编程、Android测试驱动开发等几个方面讲述。从技术实现上,讲解了6大完整综合案例及源代码分析,分别是新浪微博客户端、蓝牙聊天、全键盘输入法、月球登陆(游戏)、贪吃蛇(游戏)、笑脸连连看(游戏)。 《Android开发权威指南》注重对实际动手能力的指导,在遵循技术研发知识体系严密性的同时,在容易产生错误、不易理解的环节上配备了翔实的开发情景截图;并将重要的知识点和开发技巧以“多学一招”、“扩展学习”、“技巧点拨”等的活泼形式呈现给读者。在程序实例的讲解方面,主要将实例安插在Android开发的精髓知识章节,这为读者学习与实践结合提供了很好的指导。 《Android开发权威指南》配套光盘包含开发视频及全部源程序,指导读者快速、无障碍地学通Android实战开发技术。 《Android开发权威指南》适合具备一定软件开发经验、想快速进入Android开发领域的程序员,具备一些手机开发经验的开发者和Android开发爱好者学习使用;也适合作为相关培训学校的Android培训教材。 图书目录编辑 第一部分准备篇 第1章初识庐山真面目——Android开发简介 2 1.1Android的基本概念 2 1.1.1Android简介 2 1.1.2Android的版本 4 1.1.3Android的系统构架 5 1.1.4Android的应用程序框架 6 1.2JIL Widget介绍7 1.3小结8 第2章工欲善其事,必先利其器——搭建和使用Android开发环境9 2.1开发包及工具的安装9 2.1.1开发Android程序都需要些什么9 2.1.2安装JDK和配置Java开发环境10 2.1.3Eclipse的安装与汉化11 2.1.4安装AndroidSDK12 2.1.5安装Eclipse插件ADT13 2.2真实体验——编写第一个Android程序(随机绘制圆饼)15 2.2.1创建Android工程15 2.2.2在模拟器中运行Android程序17 2.2.3界面控件的布局19 2.2.4编写代码20

Android开发之旅

Android开发之旅:环境搭建及HelloWorld 博客地址:https://www.360docs.net/doc/433698815.html,/icaihong Android知识团:https://www.360docs.net/doc/433698815.html,/team/view/Android绿芽 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教。 在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld。本文的主题如下: 1、环境搭建 1.1、JDK安装 1.2、Eclipse安装 1.3、Android SDK安装 1.4、ADT安装 1.5、创建AVD 2、HelloWorld 1、环境搭建 1.1、JDK安装

如果你还没有JDK的话,可以去这里下载,接下来的工作就是安装提示一步一步走。设置环境变量步骤如下: 1.我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: 2.JAVA_HOME值为:D:\Program Files\Java\jdk1.6.0_18(你安装JDK的目录) 3.CLASSPATH值 为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOM E%\bin; 4.Path: 在开始追加%JAVA_HOME%\bin; 5.NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了: 图1、验证JDK安装是否成功 1.2、Eclipse安装 如果你还么有Eclipse的话,可以去这里下载,下载如下图所示的Eclipse IDE for Java Developers(92M)的win 32bit版:

Android项目需求文档模板

需求文档说明书 一、前言 (3) 1.1项目介绍 (3) 1.2名词解释 (3) 1.3参考资料 (3) 二、需求概述 (3) 三、用户特点 (4) 3.1用户用例图 (4) 3.2适用人群 (4) 四、假定和约束 (4) 五、需求规定 (4) 5.1对功能的规定 (4) 5.2对性能的规定 (4) 5.3输入输出要求 (4) 5.3数据管理能力要求 (4) 5.3故障处理要求 (4) 5.3其它专门要求 (4) 六、功能结构图 ................................................................ 错误!未定义书签。 6.1功能介绍 (7) 6.2功能业务总流程图 (7) 七、功能需求分析 ............................................................ 错误!未定义书签。 7.1数据流图 (8) 7.1.1顶层数据流图 (8) 7.1.2功能级数据流图 (9) 7.1.3详细数据流图 (10) 7.2功能模块 (11) 7.2.1业务功能描述 (11) 7.2.2业务流程图描述 (11)

7.2.3相关角色及其执行的活动 (11) 7.2.4流程涉及步骤说明 (12) 7.2.5功能模块流程图 (13) 7.2.6流程涉及相关数据及规则 (13) 八、系统使用的软件与硬件环境说明............................... 错误!未定义书签。 8.1核心技术 (14) 8.2硬件环境与服务器环境: (14) 8.3客户端操作系统: (14) 九、原型界面.................................................................... 错误!未定义书签。 文档管理信息表 文档修改记录表

Android开发小知识_Android源代码下载指南(图解)

Android源代码下载指南(图解) Android学习到一定程度,就一定要多读代码多思考,Android源代码就是非常好的学习材料,本讲的内容很简单,就是把Android的源码先下载回来。我们知道Android的源代码是用Git这个分布式版本控制工具管理的,下载起来比较麻烦,我们在这里用图解的方式一步一步来,你肯定能学会。 第一步、安装VMWare我假设你在Windows下,而Android源代码在Linux下下载会更方面些。那么我们就装一个虚拟机来创造一个Linux环境。不熟悉的同学去Google一下“VMware Workstation 7.1安装” 第二步:安装Ubuntu10.04这一步不熟悉的同学去搜索”在VMware中安装Ubuntu10.04” 需要提醒一下,最好在图形界面方式安装,安装过程比较慢,需要等待的时候要有点耐心,我在95%的时候等了近20分钟^_^ 。 第三步:进入Linux ,打开终端哦,我还是配张图吧,蛋腚,我知道这个你会的^_^ 第四步:安装git和curl 在终端窗口敲下面的命令,下同

view source print? 1 sudo apt-get install git-core curl 如上图第一行,下面一路回车,安装完毕。 第五步:安装repo脚本 view source print? 1 curl https://www.360docs.net/doc/433698815.html,/repo >~/repo

第六步:给repo可执行权限配图还是上面那张,仔细看一下 view source print? 1 chmod a+x ~/repo 第七步:新建一个目录mydroid , 然后进入该目录配图还是上面那张,仔细看一下 view source print? 1 mkdir mydroid view source print? 1 cd mydroid 第八步:repo初始化配图还是上面那张,仔细看一下 view source

Android开发工具手册

Android 开发工具用户手册 Version 1.0 2014-07-28

历史记录 Ver Data Author Brief Publish Memo 1.0 2014-07-28 LY

目录 1. 主要功能 (4) 1.1. 导入分区配置 (4) 1.2. 导出分区配置 (5) 1.3. 烧写一个或多个分区镜像 (6) 1.4. 切换 (6) 1.5. 低格 (6) 1.6. 烧录update.img (7) 1.7. 擦除Flash (7) 1.8. 解包update.img (7) 2. 常见问题 (8) 2.1. 下载项不存在 (8) 2.2. 加载固件失败 (8) 2.3. 校验芯片失败 (8) 2.4. 下载Boot失败 (9) 2.5. 读取设备参数失败 (9) 2.6. 下载固件或者分区镜像失败 (9) 2.7. 校验固件或者分区镜像失败 (9) 3. 注意事项 (9)

1.主要功能 1.1. 导入分区配置 每次随新工具发布的分区配置文件内容如上图,大部分情况下与项目的分区配置存在一定程度差异,此时用户可以通过在分区配置区域空白处右击鼠标,选择“导入配置”,加载之前保存的项目分区配置文件。如果想在工具启动时加载指定的分区配置文件,可以通过修改Config.ini文件中DEFAULT_IMAGE_CONFIG项。

1.2. 导出分区配置 用户完成分区配置后,可以将分区配置通过导出功能进行保存,在分区配置区域空白处点击“导出配置”,输入保存的文件名和目录,如果替换掉工具目录下的config.cfg文件,则可以在工具启动时加载当前保存的配置。

Android开发文档

Android Dev Doc Android 开发多使用内部类使用方便且效率高 UI方面的知识 一、在编写layout的xml文件时,一定要仔细!如果在报错的时候,如何解决? 解决:将xml仔细检查并保存后再运行。 二、在运行程序时,还未运行onCreate()方法之前就报错(MyAndroid(Project))! 原因:在用eclipse 新建的项目的AndroidManifest.xml 文件中的application节点中android:lable写了。去掉后就无错。(待验证!) 三、onCreateContextMenu -> 创建长按菜单键显示的菜单!处理菜单选择事件方法-> onContextItemSelected 四、在对数据库操作时,一定要记住open.. 五、Fragments 类似于Activity 生命周期有点类似。。。一个Activity中可以有很多个 Fragments,一个Fragments可以被多个Activity使用,要实现Fragments也必须去跟Activity 一样去集成父类。 六、两种方式将Layout中的XML转换为View https://www.360docs.net/doc/433698815.html,youtInflater inflater = (强转)getSystemService(https://www.360docs.net/doc/433698815.html,YOUT_INFLATER_SERVICE) inflater.inflater(layoutId,null); https://www.360docs.net/doc/433698815.html,youtInflater inflater = LayoutInflater.from(this); final View textEntryView = inflater.inflate(https://www.360docs.net/doc/433698815.html,yout.alert_dialog_text_entry, null); 七、Dialog的机制:当Activity中调用showDialog(int id)时会去回调onCreateDialog() 回调 执行完毕后执行onPrepareDialog()。 八、利用线程来实现ProgressBar 1.新建一个匿名类实现Runable接口,run方法里面来for循环progressBar的max value 2.在for内利用android.os.Handler类的实例的post方法来对progressBar实例的操作 (其中post的参数又是一个Runable的实现类-利用匿名类来实现run方法,在方法 内对progressBar的实例操作)。->注意:progressbar 的max越大越能看出效果。 九、得到NotificationManager 以及Notification的使用 1.在Activity中nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 2.new Notification(显示图片的ID,显示的文本,Notification显示的时间) 3.Notification的使用步骤: A.所有的Notification都是由NotificationManager来管理的,因此必须得到 NotificationManager的实例 B.构造一个Notification(注意setLatestEventInfo这个方法是用来:1:当展开 Notification时如何呈现Notification 2:当用户单击时如何处理Notification) C.利用NotificationManager的实例来启动Notification 4. 十、D

安卓开发初级教程

Android程序开发初级教程(一) 开始 Hello Android 平台简介 令人激动的Google手机操作系统平台-Android正式发布了,这是一个开放源代码的操作系统,内核为Linux. 作为开发者,我们所关心的是这个平台的架构以及所支持的开发语言。下面是这个平台的架构模型: 这个平台有以下功能:

+ Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的 软件都是平等的。 + Dalvik virtul machine: 一个基于Linux的虚拟机。 + Integrated browser: 一个基于开源的WebKit引擎的浏览器,在应用程序层。 + Optimized graphics: 包含一个自定义的2D图形库和基于OpenGL ES 1.0 标 准的3D实现。 + SQLite: 数据库 + Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) + GSM Telephony: GSM 移动网络, 硬件支持。 + Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。 + Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。 +Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了Eclipse的插件。 下面我们就来亲身体验一下Android程序的开发之旅。 先介绍一下开发环境,下面是对系统及相关软件的版本要求: 操作系统: Windows XP or Vista Mac OS X 10.4.8 or later (x86 only)

Android开发和调试中文文档

Android中文文档:开发和调试 在eclipse上开发Android应用程序 在用eclipse IDE开发android应用程序之前,你首先要创建一个Android工程,并且建立一个启动配置,在此之后你才可以开始编写,运行,以及调试你的应用程序。 以下章节是假设你已经在eclipse环境中安装了ADT插件,如果你没有安装,请安装之后再使用以下说明。参考安装eclipse 插件(ADT) 创建一个android工程 ADT提供了一个新的工程向导,你可以快速的创建一个新的工程或者在现有代码上创建工程。创建工程的步骤如下: 选择File > New > Project 选择 Android > Android Project, 然后按下 Next 选择项目内容: 选择 Create new project in workspace,为编码创建一个全新的工程。 输入工程名称(project name),基础软件包的名称(the base package name),以及Activity 类的名称。以创建stub .java文件等文件和程序名字。 选择Create project from existing source ,为已有代码创建一个工程。如果你想编译运行SDK中提供的示例程序,可以使用这个选项。示例程序的存放在SDK的samples/目录下。 浏览包含已有代码的目录,点击ok,如果目录中包含有可用的android manifest 文件,ADT 将为你填写合适的软件包,activity,和应用程序名称。 按下Finish. ADT插件会根据你的工程类型创建合适的文件和文件夹,如下: src/ 包含stub .java Activity文件的文件夹. res/ 资源文件夹. AndroidManifest.xml 工程清单. 创建一个启动项 能够在eclipse上运行调试应用程序之前,你必须为它创建一个启动项。启动项指定哪个工程将被启动,哪个activity开始工作,以及使用哪些模拟器选项等。 按照以下步骤为Eclipse版本的应用程序创建合适的启动项: 打开启动项管理工具。 在 Eclipse 3.3 (Europa)的版本中,酌情选择 Run > Open Run Dialog... or Run > Open Debug Dialog... 。

Android Studio App开发开发文档

使用Android Studio开发APP 一、简介: 二、利用Android Studio开发APP 1、开发环境搭建 (1)安装配置Java JDK (2)暗转Android Studio软件 软件下载链接地址: https://https://www.360docs.net/doc/433698815.html,/dl/android/studio/install/3.1.2.0/android-studio-ide-173.4720617-win dows.exe (3)可以安装一个APP模拟器调试 安装JDK(Java Development Kit) JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。进行java开发,首先要安装,安装了后还要进行环境变量配置 1、环境变量配置: (1)系统变量→新建JAVA_HOME变量, 变量值填写的安装目录(例如E:\Java\jdk1.7.0)。 (2)系统变量→寻找Path变量→编辑, 在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)。 (3)系统变量→新建CLASSPATH变量 变量值填写.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (注意最前面有一点)。 系统变量配置完毕。 2、检验 检验是否配置成功运行输入-version(java和-version之间有空格) “开始”-->“运行”-->输入“”-->"Enter",如果能正常打印用法说明配置成功! 三、开发一个Demo 参考:https://https://www.360docs.net/doc/433698815.html,/xiadewang/p/7820377.html 开发步骤图如下:

相关文档
最新文档