Ⅰ 请问android中4大组件有哪些他们的作用是什么
Activity
官方解释:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它主要为保持各界面的状态做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。
解释说明:我们也可以简单的理解为当前的操作界面。
Service
官方解释:Service后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口。
解释说明:例如当我们打开音乐播放器后我们想让该音乐播放器至于后台运行。这时我们就可以启动服务来实现。
ContentProvider
官方解释:ContentProvider是Android中提供的第三方应用数据的访问方案,可以派生ContentProvider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部存储的存储细节,向外提供统一的数据接口模型,大大简化上层应用对数据的整合提供了更方便的途径。
解释说明:我们可以简单的理解为在我们的应用程序中我们在一块区域定制了一些规则来存储应用程序的相关信息。如果第三方应用程序想要访问到我们应用程序中的信息就需要满足我们定制的规则来进行获取。
BroadcastReceiver
官方解释:BroadcastReceiver接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播机制。
解释说明:这个机制可以理解为电视广播,我们通过广播发送一个节目。人们可以通过收音机调到对应的频率来进行接受广播而获取相应的信息。我们的应用程序可以通过广播发送信息,也可以通过一定的条件筛选来获取到被人发送的广播信息。而且广播的作用范围不局限于本应用程序内进行信息传递。
可以在秒秒学上看看Android的课程,讲解的可以,希望对你有帮助。
Ⅱ android ui组件有哪些
常用的有
TextView EditText Button ImageView Dialog ListView GridView
以及用来包含这些的Layout
常用的Layout有LinearLayout RelativeLayout FrameLayout
单纯的创建一般都是采用new XXX(context);这样的方式,或是在xml里进行配置
<Button
android:width = "match_parent"
android:height="wrap_content"
/>
多看一些android的视频和sdk中自带的apiDemo会更容易理解
Ⅲ 最新的Android控件有哪些
1.MaterialStepperView
它是用Material Design实现Steppers的。
目前,Stepper只有垂直视图,但将来会有更多的风格。你可以尝试一下,如下图:
你可以自定义normal/active两个状态的颜色,完成图标,开启动画并设置动画时长。可通过Github上的设置项和样式查阅所有设置项。该库支持API 17+,详情请查阅wiki文档。
2. MultiSnapRecyclerView
这是分屏滚动的Android库。
MultiSnapRecyclerView为RecyclerView提供了分屏功能。
目前提供的功能有:
start, end和center三个位置的吸附,
snap count 指定要分屏的数量,
支持水平和垂直分屏,
滚动时的回调。
3. Garland View for Android
该库可实现如下的布局:
GarlandView 外部是一个水平滚动的视图,视图内的每一个子视图可垂直滚动。
你可以在README中找到其他重要信息。还有一个示例App。该库支持API 19及更高版本。
4. VegaLayoutManager
这是一个自定义的布局管理器——滚动时缩小并淡出头部。这是受到Dribble项目的启发。
5. ExpandableLayout
这个库的名字不言而喻,它是一个基于LinearLayout的可扩展的布局。
README里含有你启动时需要的所有信息,另外,还有一个示例App可以帮助你快速跳转到代码中。
6. SwipeBackLayout
SwipeBackLayout允许你使用手势返回上一个界面。
你可以设置滑动方向,如从左到右、从右到左、从顶部到底部、从底部到顶部。
你还可以设置是否只能从边缘滑动。
SwipeBackLayout只能包含一个子布局,例如:
LinearLayout,RelativeLayout,FrameLayout,TableLayout等。
ScrollView,HorizontalScrollView,NestedScrollView等。
RecyclerView,AbsListView(ListView)等子类。
ViewPager,WebView等。
该项目里面有一个详细说明的文档、示例APP和一个APK。
Ⅳ Android四大组件是什么讲讲你对它们的理解
Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。
Activity
做一个完整的Android程序,不想用到Activity,真的是比较困难的一件事情,除非是想做绿叶想疯了。因为Activity是Android程序与用户交互的窗口,在我看来,从这个层面的视角来看,Android的Activity特像网站的页面。
Activity,在四大组件中,无疑是最复杂的,这年头,一样东西和界面挂上了勾,都简化不了,想一想,独立做一个应用有多少时间沦落在了界面上,就能琢磨清楚了。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。对于开发者而言,就需要派生一个Activity的子类,然后埋头苦干上述事情。对于Activity的更多细节,先可以参见:reference/android/app/Activity.html。后续,会献上更为详尽的剖析。
Service
服务,从最直白的视角来看,就是剥离了界面的Activity,它们在很多Android的概念方面比较接近,都是封装有一个完整的功能逻辑实现,只不过Service不抛头露脸,只是默默无声的做坚实的后盾。
但其实,换个角度来看,Android中的服务,和我们通常说的Windows服务,Web的后台服务又有一些相近,它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。用运行模式来看,Activity是跳,从一个跳到一个,呃...,这有点像模态对话框(或者还像web页面好了...),给一个输入(抑或没有...),然后不管不顾的让它运行,离开时返回输出(同抑或没有...)。
而Service不是,它是等,等着上层连接上它,然后产生一段持久而缠绵的通信,这就像一个用了Ajax页面,看着没啥变化,偷偷摸摸的和Service不知眉来眼去多少回了。
但和一般的Service还是有所不同,Android的Service和所有四大组件一样,其进程模型都是可以配置的,调用方和发布方都可以有权利来选择是把这个组件运行在同一个进程下,还是不同的进程下。这句话,可以拿把指甲刀刻进脑海中去,它凸显了Android的运行特征。如果一个 Service,是有期望运行在于调用方不同进程的时候,就需要利用Android提供的RPC机制,为其部署一套进程间通信的策略。
Android的RPC实现,如上图所示(好吧,也是从SDK中拿来主义的...),无甚稀奇,基于代理模式的一个实现,在调用端和服务端都去生成一个代理类,做一些序列化和反序列化的事情,使得调用端和服务器端都可以像调用一个本地接口一样使用RPC接口。
Android中用来做数据序列化的类是Parcel,参见:/reference/android/os/Parcel.html,封装了序列化的细节,向外提供了足够对象化的访问接口,Android号称实现非常高效。
还有就是AIDL (Android Interface Definition Language) ,一种接口定义的语言,服务的RPC接口,可以用AIDL来描述,这样,ADT就可以帮助你自动生成一整套的代理模式需要用到的类,都是想起来很乏力写起来很苦力的那种。更多内容,可以再看看:guide/developing/tools/aidl.html,如果有兴致,可以找些其他PRC实现的资料lou几眼。
关于Service的实现,还强推参看API Demos这个Sample里面的RemoteService实现。它完整的展示了实现一个Service需要做的事情:那就是定义好需要接受的Intent,提供同步或异步的接口,在上层绑定了它后,通过这些接口(很多时候都是RPC的...)进行通信。在RPC接口中使用的数据、回调接口对象,如果不是标准的系统实现(系统可序列化的),则需要自定义aidl,所有一切,在这个Sample里都有表达,强荐。
Service从实现角度看,最特别的就是这些RPC的实现了,其他内容,都会接近于Activity的一些实现,也许不再会详述了。
Broadcast Receiver
在实际应用中,我们常需要等,等待系统抑或其他应用发出一道指令,为自己的应用擦亮明灯指明方向。而这种等待,在很多的平台上,都会需要付出不小的代价。
比如,在Symbian中,你要等待一个来电消息,显示归属地之类的,必须让自己的应用忍辱负重偷偷摸摸的开机启动,消隐图标隐藏任务项,潜伏在后台,监控着相关事件,等待转瞬即逝的出手机会。这是一件很发指的事情,不但白白耗费了系统资源,还留了个流氓软件的骂名,这真是卖力不讨好的正面典型。
在Android中,充分考虑了广泛的这类需求,于是就有了Broadcast Receiver这样的一个组件。每个Broadcast Receiver都可以接收一种或若干种Intent作为触发事件(有不知道Intent的么,后面会知道了...),当发生这样事件的时候,系统会负责唤醒或传递消息到该Broadcast Receiver,任其处置。在此之前和这以后,Broadcast Receiver是否在运行都变得不重要了,及其绿色环保。
这个实现机制,显然是基于一种注册方式的,Broadcast Receiver将其特征描述并注册在系统中,根据注册时机,可以分为两类,被我冠名为冷热插拔。所谓冷插拔,就是Broadcast Receiver的相关信息写在配置文件中(求配置文件详情?稍安,后续奉上...),系统会负责在相关事件发生的时候及时通知到该Broadcast Receiver,这种模式适合于这样的场景。某事件方式 -> 通知Broadcast -> 启动相关处理应用。比如,监听来电、邮件、短信之类的,都隶属于这种模式。而热插拔,顾名思义,插拔这样的事情,都是由应用自己来处理的,通常是在 OnResume事件中通过registerReceiver进行注册,在OnPause等事件中反注册,通过这种方式使其能够在运行期间保持对相关事件的关注。比如,一款优秀的词典软件(比如,有道词典...),可能会有在运行期间关注网络状况变化的需求,使其可以在有廉价网络的时候优先使用网络查询词汇,在其他情况下,首先通过本地词库来查词,从而兼顾腰包和体验,一举两得一石二鸟一箭双雕(注,真实在有道词典中有这样的能力,但不是通过 Broadcast Receiver实现的,仅以为例...)。而这样的监听,只需要在其工作状态下保持就好,不运行的时候,管你是天大的网路变化,与我何干。其模式可以归结为:启动应用 -> 监听事件 -> 发生时进行处理。
除了接受消息的一方有多种模式,发送者也有很重要的选择权。通常,发送这有两类,一个就是系统本身,我们称之为系统Broadcast消息,在reference/android/content/Intent.html 的Standard Broadcast Actions,可以求到相关消息的详情。除了系统,自定义的应用可以放出Broadcast消息,通过的接口可以是 Context.sendBroadcast,抑或是Context.sendOrderedBroadcast。前者发出的称为Normal broadcast,所有关注该消息的Receiver,都有机会获得并进行处理;后者放出的称作Ordered broadcasts,顾名思义,接受者需要按资排辈,排在后面的只能吃前面吃剩下的,前面的心情不好私吞了,后面的只能喝西北风了。
当Broadcast Receiver接收到相关的消息,它们通常做一些简单的处理,然后转化称为一条Notification,一次振铃,一次震动,抑或是启动一个 Activity进行进一步的交互和处理。所以,虽然Broadcast整个逻辑不复杂,却是足够有用和好用,它统一了Android的事件广播模型,让很多平台都相形见绌了。更多Broadcast Receiver相关内容,参见:/reference/android/content/BroadcastReceiver.html。
Content Provider
Content Provider,听着就和数据相关,没错,这就是Android提供的第三方应用数据的访问方案。在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的,但有时候,沟通是必要的,不仅对第三方很重要,对应用自己也很重要。
比如,一个联系人管理的应用。如果不允许第三方的应用对其联系人数据库进行增删该查,整个应用就失去了可扩展力,必将被其他应用抛弃,然后另立门户,自个玩自个的去了。
Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生ContentProvider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。所有东西看着像REST的样子,但实际上,它比REST 更为灵活。和REST类似,uri也可以有两种类型,一种是带id的,另一种是列
表的,但实现者不需要按照这个模式来做,给你id的uri你也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。
另外,Content Provider不和REST一样只有uri可用,还可以接受Projection,Selection,OrderBy等参数,这样,就可以像数据库那样进行投影,选择和排序。查询到的结果,以Cursor(参见:reference/android/database/Cursor.html )的形式进行返回,调用者可以移动Cursor来访问各列的数据。
Content Provider屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,这样的抽象层次,大大简化了上层应用的书写,也对数据的整合提供了更方便的途径。Content Provider内部,常用数据库来实现,Android提供了强大的Sqlite支持,但很多时候,你也可以封装文件或其他混合的数据。
在Android中,ContentResolver是用来发起Content Provider的定位和访问的。不过它仅提供了同步访问的Content Provider的接口。但通常,Content Provider需要访问的可能是数据库等大数据源,效率上不足够快,会导致调用线程的拥塞。因此Android提供了一个AsyncQueryHandler(参见:reference/android/content/AsyncQueryHandler.html),帮助进行异步访问Content Provider。
在各大组件中,Service和Content Provider都是那种需要持续访问的。Service如果是一个耗时的场景,往往会提供异步访问的接口,而Content Provider不论效率如何,都提供的是约定的同步访问接口。我想这遵循的就是场景导向设计的原则,因为Content Provider仅是提供数据访问的,它不能确信具体的使用场景如何,会怎样使用它的数据;而相比之下,Service包含的逻辑更复杂更完整,可以抉择大部分时候使用某接口的场景,从而确定最贴切的接口是同步还是异步,简化了上层调用的逻辑。
Ⅳ Android游戏开发大全的目录
《android游戏开发大全》
第一篇android游戏开发核心技术
第1章android平台简介2
1.1android的来龙去脉2
1.2掀起android的盖头来2
1.2.1选择android的理由2
1.2.2android的应用程序框架3
1.3android开发环境的搭建6
1.3.1sdk的下载及安装6
1.3.2eclipse集成开发环境的搭建6
1.3.3虚拟设备的创建与模拟器的运行9
1.3.4第一个android程序11
1.3.5android程序的监控与调试14
1.4小结15
第2章android游戏开发之前台渲染16
2.1创建android用户界面16
2.1.1布局管理16
2.1.2常用控件及其事件处理22
2.2图形与动画在android中的实现24
2.2.1简单图形的绘制24
.2.2.2贴图的艺术26
2.2.3自定义动画的播放27
2.3android平台下的多媒体开发30
2.3.1音频的播放30
2.3.2视频的播放33
2.3.3camera图像采集36
2.4小结38
第3章android游戏开发之交互式通信39
3.1android应用程序的基本组件39
3.1.1activity组件39
3.1.2service组件41
3.1.3broadcast receiver组件42
3.1.4content provider组件43
3.1.5androidmanifest.xml文件简介43
3.2应用程序的内部通信47
3.2.1消息的处理者——handler类简介47
3.2.2使用handler进行内部通信48
3.3应用程序组件之间的通信50
3.3.1intent类简介50
3.3.2应用程序组件——intentfilter类简介52
3.3.3示例1:与android系统组件通信53
3.3.4示例2:应用程序组件间通信示例activity部分的开发54
3.3.5示例3:应用程序组件间通信示例service部分的开发56
3.4小结59
第4章android游戏开发之数据存储和传感器60
4.1在android平台上实现数据存储60
4.1.1私有文件夹文件的写入与读取60
4.1.2读取resources和assets中的文件63
4.1.3轻量级数据库sqlite简介65
4.1.4sqlite的使用示例69
4.1.5数据共享者——content provider的使用72
4.1.6简单的数据存储——preferences的使用76
4.2android平台下传感器应用的开发78
4.2.1传感器应用开发流程78
4.2.2常用传感器简介79
4.2.3传感器应用开发示例81
4.2.4使用sensorsimulator模拟传感器变化83
4.2.5使用新版本的api开发传感器应用86
4.3小结88
第5章android游戏开发之网络编程89
5.1基于socket套接字的网络编程89
5.2基于http协议的网络编程93
5.2.1通过url获取网络资源93
5.2.2在android中解析xml95
5.3android平台下的google map95
5.3.1定位类genpoint与显示地图类mapview的搭配使用95
5.3.2位置监听器——locationlistener的使用99
5.4其他网络通信方式101
5.4.1使用wifi进行开发101
5.4.2借助于蓝牙(bluetooth)技术进行开发102
5.5小结102
第6章不一样的游戏,一样的精彩103
6.1射击类游戏103
6.1.1游戏玩法103
6.1.2视觉效果104
6.1.3游戏内容设计104
6.2竞速类游戏104
6.2.1游戏玩法105
6.2.2视觉效果105
6.2.3游戏内容设计106
6.3益智类游戏106
6.3.1游戏玩法106
6.3.2视觉效果107
6.3.3游戏内容设计107
6.4角色扮演游戏107
6.4.1游戏玩法108
6.4.2视觉效果108
6.4.3游戏内容设计109
6.5闯关动作类游戏109
6.5.1游戏玩法109
6.5.2视觉效果110
6.5.3游戏内容设计110
6.6冒险游戏110
6.6.1游戏玩法110
6.6.2视觉效果111
6.6.3游戏内容设计112
6.7策略游戏112
6.7.1游戏玩法112
6.7.2视觉效果113
6.7.3游戏内容设计113
6.8养成类游戏113
6.8.1游戏玩法114
6.8.2视觉效果114
6.8.3游戏内容设计114
6.9经营类游戏115
6.9.1游戏玩法115
6.9.2视觉效果115
6.9.3游戏内容设计116
6.10体育类游戏116
6.10.1游戏玩法116
6.10.2视觉效果117
6.10.3游戏内容设计117
6.11小结117
第7章游戏背后的数学与物理118
7.1编程中经常用到的数理知识118
7.1.1数学方面118
7.1.2物理方面120
7.2物理小球在游戏中的应用121
7.2.1开发运动体movable类的代码121
7.2.2开发物理引擎ballthread类的代码123
7.2.3视图类——开发ballview类的代码126
7.2.4绘制线程——开发drawthread类的代码129
7.2.5开发activity部分的代码131
7.3粒子系统132
7.3.1粒子对象类——开发粒子对象particle类和粒子集合particleset类132
7.3.2开发焰火粒子系统的物理引擎particlethread类的代码134
7.3.3视图类——开发视图类particleview及其相关类135
7.3.4开发程序activity部分的代码137
7.3.5将焰火粒子系统改为瀑布粒子系统138
7.4碰撞检测技术139
7.4.1碰撞检测技术基础139
7.4.2游戏中实体对象之间的碰撞检测140
7.4.3游戏实体对象与环境之间的碰撞检测143
7.5小结144
第8章游戏中的人工智能145
8.1让怪物聪明起来——android中的路径搜索145
8.1.1路径搜索示例基本框架的搭建145
8.1.2路径搜索示例的控制面板实现147
8.1.3路径搜索示例gameview的实现151
8.1.4深度优先路径搜索dfs154
8.1.5广度优先路径搜索bfs156
8.1.6路径搜索算法——dijkstra159
8.1.7用a*算法优化搜索162
8.2有限状态机164
8.2.1何为有限状态机164
8.2.2有限状态机的简单实现165
8.2.3有限状态机的oo实现170
8.3小结172
第9章游戏开发小秘技173
9.1地图编辑器与关卡设计173
9.1.1关卡地图的重要性173
9.1.2图片分割界面的实现175
9.1.3地图设计界面的实现179
9.2游戏中的模糊逻辑185
9.2.1模糊的才是真实的185
9.2.2如何在android中将游戏模糊化186
9.3游戏的基本优化技巧188
9.3.1代码上的小艺术188
9.3.2android中的查找表技术190
9.3.3游戏的感觉和性能问题192
9.4小结193
第10章游戏的心脏——物理引擎194
10.1物理引擎很重要194
10.1.1什么是物理引擎194
10.1.2常见的物理引擎194
10.22d的王者jbox2d197
10.2.1基本的物理学概念197
10.2.2jbox2d中常用类的介绍199
10.3球体撞击木块金字塔案例203
10.3.1案例运行效果204
10.3.2案例的基本框架结构204
10.3.3常量类——constant205
10.3.4抽象类——mybody206
10.3.5圆形刚体类——mycirclecolor206
10.3.6生成刚体形状的工具类——box2til207
10.3.7颜色工具类——colorutil208
10.3.8主控制类——mybox2dactivity209
10.3.9显示界面类——gameview211
10.3.10绘制线程类——drawthread212
10.4简易打砖块案例213
10.4.1一般碰撞版213
10.4.2碰撞后消失版215
10.5旋转关节跷跷板案例220
10.5.1旋转关节介绍220
10.5.2多边形刚体类mypolygoncolor的开发220
10.5.3生成刚体形状的工具类——box2til221
10.5.4将场景中的刚体摆放到位222
10.5.5增加旋转关节223
10.6旋转关节链条摆案例225
10.6.1案例运行效果225
10.6.2案例的机械结构225
10.6.3主控制类——mybox2dactivity226
10.7组合机械结构案例227
10.7.1案例的运行效果227
10.7.2整体场景的机械结构228
10.7.3案例的基本框架结构229
10.7.4圆形刚体类——mycirclecolor229
10.7.5生成刚体形状的工具类——box2til230
10.7.6主控制类——mybox2dactivity230
10.7.7游戏界面类——gameview232
10.7.8绘制线程类——drawthread233
10.8小结233
第11章opengl es应用开发基础234
11.1opengl es概述及3d基本图形绘制234
11.1.1opengl及opengl es简介234
11.1.23d基本知识235
11.1.3使用索引的不同绘制方式236
11.1.4用索引法绘制三角形的案例238
11.1.5不使用索引数据绘制244
11.2正交投影和透视投影245
11.2.1正交投影246
11.2.2透视投影246
11.2.3两种投影方式的原理及视口247
11.2.4两种投影方式的案例248
11.3光照与材质250
11.3.1光照的3种组成元素250
11.3.2定向光与定位光252
11.3.3法向量253
11.3.4材质254
11.3.5两种光源的案例255
11.4纹理及纹理映射257
11.4.1纹理映射基本原理257
11.4.2使用纹理映射的案例258
11.4.3几种纹理拉伸方式261
11.4.4几种纹理过滤方式262
11.5摄像机和雾特效263
11.5.1摄像机的设置264
11.5.2设置合理的视角264
11.5.3雾特效的开发266
11.6典型几何体的开发267
11.6.1圆柱268
11.6.2圆锥273
11.6.3球276
11.6.4椭圆体278
11.6.5胶囊体281
11.6.6几何体大集合284
11.7小结286
第二篇android游戏开发实战综合案例
第12章滚屏动作游戏——太空保卫战288
12.1游戏的背景及功能概述288
12.1.1背景概述288
12.1.2功能简介288
12.2游戏的策划及准备工作290
12.2.1游戏的策划290
12.2.2android平台下游戏的准备工作291
12.3游戏的架构292
12.3.1各个类的简要介绍292
12.3.2游戏的框架简介293
12.4辅助界面相关类的实现294
12.4.1主控制类——planeactivity的实现294
12.4.2欢迎界面welcomeview类296
12.4.3其他辅助界面的介绍300
12.5游戏界面的框架设计303
12.6游戏实体相关类的实现306
12.6.1飞机plane类的实现306
12.6.2敌方飞机enemyplane类的实现309
12.6.3子弹bullet类的实现311
12.6.4其他相关类的实现312
12.7游戏界面的完善314
12.7.1地图类maps的实现314
12.7.2背景滚动类gameviewback groundthread的实现316
12.7.3物体移动线程movethread的实现317
12.7.4键盘监听线程keythread的实现319
12.7.5图片初始化方法initbitmap的实现320
12.7.6绘制方法ondraw的实现322
12.8游戏的优化与改进324
第13章棋牌游戏——中国象棋人机对弈325
13.1游戏的背景及功能概述325
13.1.1背景概述325
13.1.2功能介绍325
13.2游戏的策划及准备工作327
13.2.1游戏的策划327
13.2.2android平台下游戏的准备工作327
13.3游戏的架构329
13.3.1各个类简要介绍329
13.3.2游戏框架简介330
13.4主控制类——chess_djb_activity331
13.5辅助界面相关类334
13.6游戏界面相关类336
13.6.1游戏界面绘制类gameview336
13.6.2游戏界面常量类viewconstant353
13.7走法引擎相关类354
13.7.1常量类constant354
13.7.2工具类chess_loatil359
13.7.3走法引擎主类loatil360
13.7.4走法的排序规则类mycomparator371
13.7.5记录走棋步骤类stackplaychess371
13.8游戏的优化与改进371
第14章物理传感器游戏——小球快跑(3d版)372
14.1游戏背景及功能概述372
14.1.1背景概述372
14.1.2功能简介372
14.2游戏的策划及准备工作374
14.2.1游戏的策划374
14.2.2小球快跑游戏开发的准备工作375
14.3游戏的架构375
14.3.1游戏的总体架构376
14.3.2游戏的类结构376
14.4主控制类——driftball类的开发378
14.4.1driftball类的代码框架378
14.4.2driftball类的主要成员方法的实现379
14.5游戏主菜单的开发381
14.5.1欢迎界面类——welcome view类的代码框架381
14.5.2welcomeview类主要成员方法382
14.5.3welcomethread类的开发383
14.5.4菜单界面的用户交互事件处理384
14.6游戏界面模块的开发385
14.6.1游戏界面类——gameview的成员变量385
14.6.2gameview的成员方法简介387
14.6.3游戏界面绘制线程——gamethread类的代码框架387
14.6.4gamemenuthread类的开发388
14.6.5用户交互事件处理389
14.7游戏中各个图层的开发391
14.7.1地图图层的开发391
14.7.2其他图层的开发与实现392
14.8游戏后台逻辑的开发395
14.8.1小球的运动控制395
14.8.2小球的碰撞检测396
14.8.3大炮相关类cannon和missile的开发400
14.9传感器计算模块的开发403
14.9.1手机姿态变化监听器——balllistener类的开发403
14.9.2工具类——rotateutil类的代码框架404
14.9.3工具类——rotateutil类的开发406
14.10游戏的优化与改进408
第15章塔防游戏——精灵塔防410
15.1游戏的背景及功能概述410
15.1.1背景概述410
15.1.2功能介绍410
15.2游戏的策划及准备工作413
15.2.1游戏的策划413
15.2.2android平台下游戏开发的准备工作414
15.3游戏的架构415
15.3.1各个类的简要介绍416
15.3.2游戏框架简介417
15.4主控制类tafanggameactivity和数据库类dbutil418
15.4.1主控制类——tafanggame activity主要框架418
15.4.2主控制类——tafanggame activity中部分数据库的实现421
15.4.3主控制类——tafanggame activity中对话框的开发423
15.4.4数据库类dbutil的开发427
11.5界面相关类428
15.5.1欢迎界面welcomeview类的介绍428
15.5.2主界面mainmenusurfaceview类的介绍430
15.5.3音效设置界面musicsurfaceview类的介绍434
15.5.4游戏结束界面gameoverview类和帮助界面helpview类的介绍435
15.5.5积分榜界面highjifensurfaceview类的介绍435
15.6游戏界面gameview及相关类438
15.6.1精灵怪物target类439
15.6.2箭塔singlejianta类443
15.6.3箭shell类444
15.6.4精灵怪物的出击现场——targetnumthread447
15.6.5箭塔控制发射线程——shellnumthread449
15.6.6游戏地图矩阵模拟化451
15.6.7摆放箭塔守护城池452
15.6.8游戏中的2.5d效果455
15.6.9弹指间怪物灰飞烟灭——游戏水晶455
15.7游戏的优化和改进459
第16章策略游戏——回到战国460
16.1游戏的背景及功能概述460
16.1.1背景概述460
16.1.2功能简介460
16.2游戏的策划及准备工作465
16.2.1游戏的策划465
16.2.2android平台下游戏的准备工作465
16.3游戏的架构467
16.3.1游戏的模块架构467
16.3.2游戏各个类的简要介绍468
16.4地图设计器的开发470
16.4.1底层地图设计器的开发470
16.4.2上层地图设计器的开发474
16.5activity和游戏工具类的开发475
16.5.1主控制类——hdzgactivity的介绍475
16.5.2公式封装类——gameformula的介绍478
16.5.3常量工具类constantutil的介绍479
16.6数据存取模块的开发481
16.6.1城池信息以及地图层信息的封装类481
16.6.2数据存取相关类的介绍485
16.7英雄角色模块的开发488
16.7.1hero类的代码框架488
16.7.2英雄运动线程——herogo thread类的开发491
16.7.3辅助线程——herobackdata thread类的开发493
16.8表示层界面模块的开发493
16.8.1滚屏类——screenrollview类的开发494
16.8.2滚屏线程——screenroll thread的开发495
16.8.3游戏界面gameview的框架介绍496
16.8.4游戏界面绘制方法ondraw的介绍498
16.8.5游戏界面屏幕监听方法ontouch的介绍500
16.8.6游戏界面后台线程game viewthread的介绍502
16.9管理面板模块的开发503
16.9.1人物属性面板类manpanel view的开发503
16.9.2城池管理面板类citymanage view的开发508
16.10地图中可遇实体模块的开发511
16.10.1绘制类——mydrawable的开发511
16.10.2抽象类——mymeetabledrawable的开发513
16.10.3森林类——forestdrawable的开发514
16.10.4可遇实体对象的调用流程516
16.11英雄技能模块的开发518
16.11.1技能抽象类——skill的开发518
16.11.2伐木技能类——lumber skill的开发519
16.11.3随心步技能类——suixinbuskill的开发520
16.12游戏提示模块的开发520
16.12.1提示模块抽象类——gamealert的开发520
16.12.2点击确定按钮显示的信息类——plainalert的开发521
16.12.3显示粮草危机信息类——foodalert的开发522
16.12.4辅助线程herobackdatathread中对foodalert的调用524
16.13游戏的优化与改进525
第17章体育游戏——2d迷你桌球527
17.12d桌球的背景及功能概述527
17.1.1背景概述527
17.1.2功能简介527
17.2游戏的策划及准备工作530
17.2.1游戏的策划530
17.2.2android平台下游戏的准备工作530
17.3游戏的架构531
17.3.1游戏的框架简介531
17.3.2各个类的简要介绍532
17.4公共类的实现534
17.4.1主控制类——gameactivity的代码框架534
17.4.2gameactivity类主要成员变量及方法的实现536
17.4.3常量类——constant的实现540
17.5辅助界面相关类的实现542
17.5.1欢迎动画界面welcomeview类的实现542
17.5.2主菜单界面mainmenuview的代码框架544
17.5.3主界面类——mainmenu view部分成员方法的实现545
17.5.4主界面动画线程类view drawthread的实现548
17.5.5排行榜界面highscore view的代码框架549
17.5.6highscoreview类的部分方法的实现550
17.6游戏界面相关类的实现552
17.6.1游戏界面gameview类的代码框架552
17.6.2gameview类部分成员方法的实现553
17.6.3键盘监听线程keythread类的实现557
17.6.4球运动的线程ballgothread类的实现558
17.7情景相关类的实现559
17.7.1球台table类的实现559
17.7.2桌球ball类的代码框架561
17.7.3ball类部分成员方法的实现563
17.7.4球杆cue类的实现566
17.8自定义控件及工具类的实现568
17.8.1球与球碰撞检测的工具类collisionutil的实现568
17.8.2定时器timer类的实现571
17.8.3主菜单按钮mainmenu button类的实现572
17.8.4获取日期的工具dateutil 类的实现573
17.9游戏的优化与改进574
第18章益智游戏——3d版推箱子575
18.13d版推箱子的背景及功能概述575
18.1.1背景概述575
18.1.2功能简介575
18.2游戏的策划及准备工作579
18.2.1游戏的策划579
18.2.2android平台下游戏开发的准备工作579
18.3游戏的架构580
18.3.1游戏的框架简介580
18.3.2各个类的简要介绍581
18.4公共类的实现582
18.4.1主控制类——myactivity的代码框架582
18.4.2myactivity类成员方法的实现584
18.4.3常量类constant的实现585
18.5辅助界面相关类的实现587
18.5.1欢迎动画界面welcomeview类的实现587
18.5.2主菜单界面mainview的实现589
18.6游戏界面相关类590
18.6.1游戏界面mysurfaceview类的设计与实现590
18.6.2键盘监听线程keythread599
18.7自定义控件及工具类600
18.7.1缩放图片的方法picloatil600
18.7.2主菜单上的按钮类mainmenubutton601
18.8情景相关类的实现602
18.8.1机器人类的代码框架602
18.8.2机器人类成员方法的实现603
18.8.3机器人组类robotgroup类的实现605
18.8.4机器人组类成员方法的实现606
18.8.5圆面circle类的实现607
18.8.6矩形纹理类texturerect的实现609
18.8.7纹理矩形组类texturerect group的实现610
18.8.8墙类wall的实现611
18.8.9墙wall类成员方法的实现612
18.8.10箱子cube类的实现616
18.8.11箱子组cubegroup类的实现618
18.8.12箱子移动cubego类的代码框架619
18.8.13箱子移动cubego类的成员方法的实现620
18.8.14地板类floor的实现621
18.9推箱子地图设计器的开发623
18.10游戏的优化与改进624
第19章物理引擎游戏——盛怒的老鼠625
19.1游戏背景及功能概述625
19.1.1游戏开发背景625
19.1.2游戏功能概述625
19.2游戏策划及准备工作628
19.2.1游戏策划628
19.2.2游戏开发的准备工作628
19.3游戏的框架630
19.3.1游戏主要用到的技术631
19.3.2游戏各个类的介绍631
19.3.3游戏的基本框架633
19.4公共类634
19.4.1主控制类——mybox2dactivity634
19.4.2常量类constant635
19.5主界面的设计与实现644
19.5.1鼠头和猫头类taj644
19.5.2鼠头和猫头控制线程——tjthread646
19.5.3主界面mainmenuview646
19.5.4刷帧线程mainmenudrawthread653
19.6工具类654
19.6.1加载及缩放图片的工具类picloatil654
19.6.2生成刚体工具类box2til655
19.6.3声音工具类sountil656
19.7刚体相关类657
19.7.1多边形类mypolygonimg657
19.7.2猫头类bodycat659
19.7.3冰块类bodyice660
19.7.4木条类bodywood661
19.7.5刚体类型枚举类bodytype661
19.7.6刚体查询工具类bodysearchutil662
19.8游戏界面相关类663
19.8.1皮筋类pijin663
19.8.2记录分数类score664
19.8.3刷帧线程drawthread665
19.8.4游戏界面类gameview668
19.9游戏优化与改进673
Ⅵ android四大组件是什么各有有什么作用
Android四大组件分别为activity、service、content provider、broadcast receiver。
一、android四大组件详解
1、activity
(1)一个Activity通常就是一个单独的屏幕(窗口)。
(2)Activity之间通过Intent进行通信。
(3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。
2、service
(1)service用于在后台完成用户指定的操作。service分为两种:
(a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。
(2)startService()与bindService()区别:
(a)started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。
(b)使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
(3)开发人员需要在应用程序配置文件中声明全部的service,使用<service></service>标签。
(4)Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。
3、content provider
(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
(2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
(3)ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
(4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
(5)ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。
4、broadcast receiver
(1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
(2)广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。
(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在
Ⅶ Android基础技术及基本控件
安卓基础技术主要是讲解一些安卓系统运行的原理,还有一些基本的组件,所有的安卓应用程序都是在这些组件构成的,基本控件主要就是一些类似按钮,进度条,滚动条这些图形界面组件,还有一些是用户自定义的组件。
Ⅷ 常用android图形用户界面组件有哪些怎样创建
常用的有
TextView EditText Button ImageView Dialog ListView GridView
以及用来包含这些的Layout
常用的Layout有LinearLayout RelativeLayout FrameLayout
单纯的创建一般都是采用new XXX(context);这样的方式,或是在xml里进行配置
<Button
android:width = "match_parent"
android:height="wrap_content"
/>
多看一些android的视频和sdk中自带的apiDemo会更容易理解
Ⅸ android列表常用控件有哪些
一、概述 Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手写一个了。其实实现起来不算很难, 本文实现的方案是采用TextView +ImageView+PopupWindow的组合方案。 先来看看我们的自己写的控件效果图吧:(源码在文章下面最后给出哈!) 二、自定义下拉列表框控件的实现 1. 自定义控件用到的布局文件和资源: 结果框的布局页面:dropdownlist_view.xml: <?xml version="1.0" encoding="utf-8"?>