导航:首页 > 操作系统 > opengles20android

opengles20android

发布时间:2025-06-20 20:30:53

① 游戏开发需要学什么

游戏开发需要学图形引擎,声音引擎,物理引擎,游戏引擎,人工智能或游戏逻辑,游戏GUI界面(菜单),游戏开发工具,支持局域网对战的网络引擎开发,支持互联网对战的网络引擎开发。

选择培训学习游戏开发课程,还可以学到深入的图形学课程,讲解包括OpenGL渲染管线,着色器,高光计算、菲尼尔色散、雾方程式等高阶课程。对于从事过Unity游戏开发的人员也具有相当的学习价值。

② 如何在android上使用OpenGL ES 2.0绘制点

如何在Android使用OpenGL
ES
2.0绘制点,看上去并不是一个复杂的问题,但是上网一搜,满眼都是绘制点的代码。
如果你看到类似如下代码,基本上你已经掉坑里了。
···
c
glBeging();
...
glDrawPoint(...);
...
glEnd();
```
如上是使用OpenGL
ES
1.0绘制点的代码。因为架构不同,在OPENGL
ES
2.0的世界里,这一套已经彻底不管用了。
在OpenGL
ES
2.0里绘制点,要使用Shader,使用Shader,用Shader。。。。。。
具体怎么绘制呢,首先你要搞清楚,如何用Shader绘制一个普通带颜色的三角形。我这里假设你已经会了。
三角形显示出来的那一刻,你一定会有这样的代码:
GLES20.glDrawArrays(GLES20.GL_TRIANGLES,
0,
vertexCount);
那么,只显示三角形的三个顶点该怎么办,说来简单,这行代码改成
GLES20.glDrawArrays(GLES20.GL_POINTS,
0,
vertexCount);
即可。
但是,理想和现实的差距总是很大,改完后三角形消失了但是顶点没有出现。正常OpenGL
2.0环境下应该怎么做呢?
1)首先调用
GL20.glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
这样在Shader中可以访问glPointSize;
2)然后类似准备每个顶点色彩那样准备顶点的大小的数值,三角形是三个顶点,就准备3个float。把顶点数据像色彩数据那样,绑定到VOB,再绑定到Shader的参数中。基本上就是照准备色彩那样准备顶点大小数据,不同之处在于每个色彩4个float,每个顶点尺寸1个float。
3)最后,把你的顶点Shader文件改好,增加顶点大小的输入参数和gl_PointSize赋值。
4)另外,如果你打算显示圆形顶点,而不是方形的,还要用GL20.glEnable()函数设置其他参数,具体可查OpenGL官网。
比如:
uniform
mat4
matrix;
attribute
vec4
aVertex;
attribute
vec4
aColor;
attribute
float
aPointSize;
varying
vec4
vColor;
void
main(){
vColor
=
aColor;
gl_Position
=
matrix
*
aVertex;
gl_PointSize
=
aPointSize;
}
这样,基本上就搞定了。
现在,坑爹的问题来了,在Android上你找不到GLES20.GL_VERTEX_PROGRAM_POINT_SIZE的常量,谷歌似乎认为在手机的3D环境下绘制点没多大必要性,所以并没有加上这个参数,好在缺省情况下,模拟器中Shader中的gl_PointSize是打开的(Android
4.4.x)。所以你可以跳过第一步,直接传递点大小的参数,并把Shader改好就成。
那么,为什么你不写gl_PointSize
=
aPointSize,点就显示不出来呢。我估计缺省情况下,gl_PointSize
=
0.0f,所以显示不出来。
如果你显示点的大小总是固定不变的,你甚至可以把传递顶点大小数值的步骤也省略掉,直接在Shader中写上gl_PointSize
=
10.0f;即可。
阅读本文,当你打算在Android上用OPENGL
ES
2.0显示点时,即可跳过谷歌的那些坑了。我想,手机GPU硬件厂商的开发包应该对OpenGL
ES
2.0支持的更好些,比如高通的AdrenoSDK,建议大家下载尝试。

③ 安卓模拟器 运行出错Could not initialize OpenglES emulation, using software renderer

是你使用的SDK版本和ADT版本过高,目前20以下的都比较稳定,20以上的需要更新window系统软件(我用的是window7,xp我还没有发现这个问题),在控制面板\系统和安全\Windows Update 更新系统软件,问题解决,希望对你有所帮助。

④ 安卓4.o和2.3的区别

可以刷机的手机都可以刷4.0的,以后还有更高的版本

自10月19日上午,谷歌在香港正式发布代号为“冰淇淋三明治”的新一代Andriod 4.0系统到11月底源代码的高调公布,那么相比Android 2.3都有那些改进呢,Android 4.0在系统上的9大改进:

1.新的UI界面更加的人性化

相信关注安卓系统的朋友都看过了早些时候网上发布的Android4 .0系统界面。这次看看发布会上的照片吧。

2.新的通知系统

Android 4.0的通知系统有了很大的改进,用户可以自己决定哪些应用可以发送通知。

Android 4.0的通知系统现在可以直接向侧面滑动删去通知条目,这样的操作也出现在应用管理列表中。

3.语音输入系统和面部识别功能

Duarte说新系统的键盘在纠错、精度方面有了很大改进。他还演示了语音输入系统,说“smiley face”直接在输入框中插入一个笑脸。

face unlock现场演示失败了...(莫非因为人太难看了?...)

4.新的安卓浏览器

Android 4.0的浏览器现在直接支持将完整网页离线保存。比第三方应用更好的是该功能现在与默认浏览器完全集成。实现实时预览功能,单一手势关闭所有浏览器标签,快速访问台式机版网站。能够自动与Chrome浏览器实现数据同步。

5.大幅强化了GMail

Android 4.0的Gmail大幅强化,浏览邮件时左右滑动直接切换上一封/下一封邮件。同时增加了离线搜索功能,可访问过去30天内收到的邮件。新的 GMail 界面,完全集成会话模式,大幅强化了GMail。

6.数据使用管理功能

Android 4.0集成的数据追踪系统可以追踪、分析移动数据流量,设置移动数据使用上限,它集成于系统内部,功能非常齐全,第三方的数据流量管理工具前途堪忧。

每月总是怕流量超过的朋友这回不用担心了,流量管理工具还能具体查看每个应用产生的流量。

7.拍照模式的强化

Android 4.0所拍照片只需三次点击就能分享到G+、Facebook、Twitter等任意SNS服务,如果国行引入的话肯定会增加人人网,新浪微博等分享。

Android 4.0新的照片应用现在可以像Instagram一样加滤镜,并且还能加相框、进行全景拍摄。并且相机可以识别人脸,集成 Zero Shutter 技术,快门反应极快,连拍很快。

8.新加入的people应用

People应用是通讯录的进化,以联系人照片为核心,界面偏重滑动而非点击。

People应用集成了其它通信工具,比如Twitter、Linkedin、Google+,不出意外的话还会支持自己添加第三方服务。

people应用与Gmail整合,点击邮件里的头像就能弹出附有大照片的快捷联系方式,通过Gmail、信息、第三方服务快速联系对方。

9.Android Beam应用

Android Beam是基于NFC的分享方式,两部支持NFC的Android手机背靠背碰一下就能分享机上内容。该功能还会向第三方开放。

10.其他一些功能

Android 4.0可以通过长按电源键和音量键截图,不再需要其它软件。

加入新型“Roboto”字体,适用于高清显示屏,实时墙纸功能。

⑤ 手机操作系统的Android


Android 英文原意为“机器人”,Andy Rubin于2003 年在美国创办了一家名为Android 的公司,其主要经营业务为手机软件和手机操作系统。Google 斥资4 000 万美元收购了Android 公司。Android OS[7] 是Google(谷歌)与由包括中国移动、摩托罗拉、高通、宏达和T-Mobile 在内的30 多家技术和无线应用的领军企业组成的开放手机联盟合作开发的基于linux 的开放源代码的开源手机操作系统。并于2007 年11 月5 日正式推出了其基于Linux 2.6 标准内核的开源手机操作系统,命名为Android,是首个为移动终端开发的真正的开放的和完整的移动软件,支持厂商有摩托罗拉、HTC、三星、LG、索尼爱立信,联想,中兴等。
Android 平台最大优势是开发性,允许任何移动终端厂商、用户和应用开发商加入到Android 联盟中来,允许众多的厂商推出功能各具特色的应用产品。平台提供给第三方开发商宽泛、自由的开发环境,由此会诞生丰富的、实用性好、新颖、别致的应用。产品具备触摸屏、高级图形显示和上网功能,界面友好,是移动终端的Web 应用平台。 Android版本概览 版本号 名称 发布时间 特性 Android1.1 未命名 2008年9月 内置应用商店;支持html网页浏览 Android 1.5 Cupcake
纸杯蛋糕 2009年4月30日 来电照片显示;采用webkit浏览器;支持复制粘贴操作;屏幕虚拟键盘 Android 1.6 Donut
甜甜圈 2009年9月15日 重新设计的Android Market手势;支持CDMA网络;文字转语音系统;查看应用程序耗电;支持虚拟私人网络(VPN);支持更多屏幕分辨率;支持OpenCore2媒体引擎 Android2.0/2.0.1/2.1 Eclair
松饼 2009年10月26日 优化硬件速度;支持更多分辨率;优化UI;新的浏览器的用户接口和支持HTML5;新的联系人名单;改进Google Maps;支持Microsoft Exchange;支持相机闪光灯;改进虚拟键盘;支持蓝牙2.1;支持动态桌面的设计 Android 2.2/2.2.1 Froyo
冻酸奶 2010年5月20日 3G网络共享功能;Flash的支持;App2sd功能;全新的软件商店;更多的Web应用API接口的开发 Android 2.3 Gingerbread
姜饼 2010年12月7日 优化垃圾回收和优化处理事件;原生代码可直接存取输入和感应器事件、EGL/OpenGLES、OpenSL ES;新的管理窗口和生命周期框架;支持VP8和WebM视频格式,提供AAC和AMR宽频编码,提供了新的音频效果;支持前置摄像头、SIP/VOIP和NFC;一键文字选择复制粘帖;改进电源管理系统;新的应用管理方式 Android 3.0 Honeycomb
蜂巢 2011年2月2日 优化针对平板 ;全新设计的UI增强网页浏览功能 ;n-app purchases功能 Android 3.1 Honeycomb
蜂巢 2011年5月11日 优化Gmail;全面支持Google Maps;将Android手机系统跟平板系统再次合并;任务管理器可滚动,支持USB输入设备(键盘、鼠标等) ;支持Google TV.支持XBOX 360无线手柄;widget支持优化 Android 3.2 Honeycomb
蜂巢 2011年7月13日 支持7英寸设备;引入了应用显示缩放功能 Android 4.0 Ice Cream Sandwich冰激凌三明治 2011年10月19日 全新的UI;新Chrome Lite浏览器,有离线阅读,16标签页,隐身浏览模式;截图功能;Gmail加入手势、离线搜索功能,UI优化;新功能People:以联系人照片为核心,集成了Twitter、Linkedin、Google+等通讯工具;新增流量管理工具,可查看每个应用产生的流量,限制和禁用流量 Android 4.1 Jelly Bean
果冻豆 2012年6月28日 特效动画帧速提高至60fps,增加三倍缓冲;增强通知栏;全新搜索UI、智能语音搜索和Google Now;桌面插件自动调整大小;语言和输入法扩展;新的输入类型和功能;新的连接类型 Android 4.2 Jelly Bean
果冻豆 2012年10月30日 键盘手势输入功能;改进锁屏功能,锁屏状态下支持桌面挂件和直接打开照相功能;可扩展通知,允许用户直接打开应用;Gmail邮件可缩放显示;用户连点三次可放大整个显示频,两根手指进行旋转和缩放,专为盲人用户设计的语音输出和手势模式导航 Android 4.3 Jelly Bean
果冻豆 2013年7月25日 多用户登录;智能蓝牙;OpenGL ES3.0;数字版权加密(DRMs) Android 4.4 KitKat
奇巧 2013年9月4日 支持两种编译模式;RAM优化;新图标、锁屏、启动动画和配色方案;新的拨号和智能来电显示;加强主动式语音功能;集成Hangouts IM软件;全屏模式;支持Emoji键盘;轻松访问在线存储;无线打印;屏幕录像功能;内置字幕管理功能;计步器应用;低功耗音频和定位模式;新的接触式支付系统;以及新的蓝牙配置文件和红外兼容性。 Android 5.0 Lollipop
棒棒糖 2014年10月15日谷歌将为自家的语音服务Google Now 加入一个名为 OK Google Everywhere 的全新功能。 Android 5.0 将会加入更多的健身功能。 整合碎片化。 支持64位处理器。 使用ART虚拟机。 Android6.0Marshmallow
棉花糖 2015年5月28日1。锁屏下语音搜索。
2.指纹识别。
3.更完整的应用权限管理。
4.Doze电量管理。
5.Now on Tap功能。
6.App Links。 1、Smartisan OS
Smartisan OS是由罗永浩带领的锤子科技团队基于Android深度定制的手机操作系统。
2015年1月18日,在2015极客公园创新大会上,锤子科技(北京)有限公司的Smartisan OS智能手机操作系统获得“2014 中国互联网年度创新产品大奖”和“最佳用户体验奖”两个奖项。
SmartisanOS和其他第三方ROM相比变革最大的是在UI交互设计方面 ,Smartisan OS与其他定制UI最大的不同之处是Smartisan OS的视觉美感。视觉美感分为很多层面:图标设计、交互设计、字体选用等等。
在图标设计方面,现今扁平化的风潮让用户产生了审美疲劳,而Smartisan OS的工程师们重绘了大量第三方应用图标,以拟物化为主,这与市场上所有的其他安卓系统有着明显的区别,Smartisan OS的图标重绘水平在全世界范围内,也属顶尖。
此外,Smartisan OS的交互动画非常精致,充满了拟物化的设计元素。
Smartisan OS的字体渲染做得非常漂亮。据官方的说法,他们是改进了安卓的底层渲染机制,这才让字体渲染能够达到他们满意的效果。
“多宫格”模式找应用是Smartisan OS最大的卖点,其独有的各种“宫格”显示模式,使得移动图标很方便,也更多地用于查找应用程序。相比于大部分ROM找应用必须要滑来滑去,Smartisan OS直接按菜单键即可呼出“多宫格”模式,可以预览所有的App。而且由于Smartisan OS采用的是拟物化的图标设计,所以即使是缩小到81宫格模式下,各个图标的视觉特征也十分明显,很方便查找。
2、IUNI OS
IUNI OS最早的内部代号叫Aurora, 英文里的“极光”一词。负责人刘世超表示,IUNI OS中的OS主要是指“OUR SERVICE”,其本义是通过深度定制的安卓操作系统,为用户提供独特的体验与服务。这种独特性主要体现在四个方面,即优雅文艺的设计风格、精简轻快的实用功能、精致悦动的交互体验以及纯净精良的服务传递。
支持厂商:IUNI
3、Sense
HTC自主研发的Sense,是一款基于Android系统研发的智能手机系统。
支持厂商:HTC
4、LG Optimus
基于标准Android修改的LG Optimus系统
支持厂商:LG
5、CyanogenMod
CyanogenMod是一个基于开源Android系统,供某些手机使用的二级市场固件。它提供一些在官方Android系统或手机厂商没有提供的功能 ,例如:支持Free Lossless Audio Codec- FLAC (无损音频压缩编码)音频格式的音乐,多点触控, 从SD外置存储器运行程序,压缩缓存,大量APN的名单,重新启动功能,Wi-Fi无线网络支持,蓝牙,USB网络分享等。CyanogenMod也是第一个使用BFS作任务管理器的操作系统。CyanogenMod声称提供比官方固件版本更高性能和更可靠。
6、小米MIUI系统
MIUI是小米公司旗下基于Android系统深度优化、定制、开发的第三方手机操作系统,能够带给国内用户更为贴心的Android智能手机体验。从2010年8月16日首个内测版发布至今,MIUI已经拥有国内外1亿的发烧友用户,享誉中国、英国、德国、西班牙、意大利、澳大利亚、美国、俄罗斯、荷兰、瑞士、巴西等多个国家。MIUI是一个基于CyanogenMod而深度定制的Android流动操作系统,它大幅修改了Android本地的用户接口并移除了其应用程序列表(Application drawer)以及加入大量来自苹果公司iOS的设计元素,这些改动也引起了民间把它和苹果iOS比较。MIUI系统亦采用了和原装Android不同的系统应用程序,取代了原装的音乐程序、调用程序、相册程序、相机程序及通知栏,添加了原本没有的功能。由于MIUI重新制作了Android的部分系统数据库表并大幅修改了原生系统的应用程序,因此MIUI的数据与Android的数据互不兼容,有可能直接导致的后果是应用程序的不兼容。MIUI是一个由中国一班爱好者一起开发的定制化系统,根据中国用户的需求而作出修改,现正处于Beta测试阶段,在收集用户意见后每逢周五均会提供OTA升级。现时MIUI系统由小米科技负责开发,而小米科技在2011年8月发布推出一部预载MIUI,名为小米手机的智能手机,2012年5月15日发布“青春版小米手机。
2010年8月16日深度定制的Android手机系统MIUI诞生,每周五更新。
2011年8月16日MIUI一周年,同时小米公司也推出第一款小米手机 MiOne
2012年8月16日,小米正式宣布MIUI中文名为“米柚”,并发布基于android4.1的MIUI4.1版本,最大特点如丝般顺滑。更安全的操作系统,内置科大讯飞提供的全球最好的中文语音技术,内置由金山快盘提供的云服务,可以在网页上浏览通讯录,发送短信。通过短信和网络找回手机功能,还有大字体模式。
2012年8月16日也是MIUI二周年,小米手机发布一周年。在今天,雷军在发布小米手机二代时,同时也公布了MIUI的中文名“米柚”,并向我们介绍了MIUI v4.1的功能。
MIUI是小米公司基于Android原生深度优化定制的手机操作系统,对Android系统有超过100项优化和改进。MIUI还是中国首个基于互联网开发模式进行开发的手机操作系统,根据社区发烧友的反馈意见不断进行改进,并在每周更新迭代。从2010年8月16日首个内测版发布至今,MIUI受到了全球23个国家、1亿手机发烧友的追捧。
小米主要特色
1)绿色简约
MIUI提供绿色、干净的ROM空间,不会集成其他繁杂的第三方应用软件
2)独特用户体验设计
MIUI根据中国用户习惯,自主原创了全套的用户体验设计体系。更贴近你的使用习惯和心理习惯,让你上手操作更简单、更贴心。
3)个性操作界面体验
MIUI全球首创“百变主题”以及“百变锁屏”功能,为你带来更为华丽、极致个性的手机操作界面感官体验。
4)更好电话短信体验
MIUI从电话、短信功能细节入手,对Android原生系统进行了多达近百项的深度优化、微创新,努力为用户提供智能手机中最好的电话以及短信使用体验。用户话语权的“活”系统,MIUI团队开发人员与用户打成一片、组建用户荣誉开发组,将系统功能选择权交与用户。根据用户意见、建议选择功能进行开发,并在每周五进行更新、升级。
5)双版本共存
MIUI实行独特的开发版和稳定版共存模式,满足不同用户需求:开发版着重于尝鲜和快速更迭,延续原有的模式,每周五升级,不断测试开发新功能;稳定版则着重稳定性,更新周期更长,大约1到2个月。
7、Emotion UI
Emotion UI是华为基于Android进行开发的情感化用户界面。独创的Me Widget整合常用功能,一步到位;快速便捷的合一桌面,减少二级菜单;缤纷海量的主题,何止让你眼花缭乱。触手可及的智能指导,潇洒脱离小白状态。贴心的语音助手,即刻解放你的双手。随时随地,尽情愉悦体验。
支持厂商:华为
8、Blur
Blur是摩托罗拉(Motorola)基于谷歌Android平台开发的应用界面,除了基本的Android特性之外,Blur最突出的特色是注重网络社交功能。Blur已经集成了很多国外知名社交网络的组件,包括Facebook、Twitter、Gmail、MySpace、Yahoo、Picasa 等,只要用户将Email与社交网络账户绑定,来自于这些社交网络的信息就会自动推送到手机当中。
支持厂商:摩托罗拉
9、Flyme OS
魅族手机操作系统。 全新Flyme OS 1.0是魅族为其新一代智能手机倾力开发的创新之作,凝聚了魅族多年来对智能手机用户体验的深度发掘和在其历代操作系统上演进优化的经验和技术实力,力求为魅族手机提供更强大的应用功能和更卓越的操作感受。Flyme OS 1.0将提供逻辑更清晰、操作线程更短的用户交互,令功能一目了然、易用顺手。系统应用也将结合各项快速操作方式而更加智能

贴心。新系统UI将全面革新,在清新简洁的基础上使界面表现更富个性化,视觉效果超乎想象,操作中新增大量动态效果,令指尖感受更加逼真,界面随心而动。同时,魅族精心研发、积极布局的手机云服务在新系统上也开始了新一轮创新。数据备份、同步,手机遗失查找、定位锁定等云服务将借此获得全面升级,并将新提供手机联系人间的文件云传输等多项新增服务。凭借对系统的全面优化,魅族手机的多媒体影音功能也将更加强大,并将搭载高品质全无损的在线音乐服务。相信Flyme OS 1.0将成为Android4.0时代标志性的深度定制人性化操作系统,更多精彩让我们一同期待魅族未来公布的新系统细节。
10、网络云
网络云智能终端平台是深度整合了网络核心技术与服务的智能终端软件平台。
支持厂商:戴尔,天语,海尔
11、中国移动OMS
Open Mobile System是中国移动通讯集团和Google合作联合开发的一款基于Linux内核Android平台构建的开放式手机操作系统简称OMS,它在原有Android平台基础上针对中国市场做了特殊优化,加入了中移动运营的3G网络TD-SCDMA的支持。在界面和开机画面上和Android有着细微的区别,在针对中国用户的中文录入、简体中文显示都进行了特殊的优化,未来还会加入中国移动自己的产品等功能,Open Mobile System是2008年4月份开始的一个系统定制计划,经过1年的修改调试后预计将在2009年4月份开始正式推向市场,同时首款使用oms系统的是联想oPhone手机。如今的OMS2.5完全兼容android2.2。用户体验得到了很大的提升,已经达到或者超越android原生系统。
搭载OMS系统的手机被称为Ophone,为中国移动的定制机,联想、摩托罗拉、华为等多家企业均有此类手机。

⑥ android面试题会出现什么内容

这是一篇介绍android面试题的文章,下面就让我们一起来了解一下吧!
1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念:
答:dvm是dalivk虚拟机。每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实例。而每一个dvm都是在linux的一个进程。所以说可以认为是同一个概念。
2.android的动画有哪几种?他们的特点和区别是什么?
答:两种,一种是tween动画,一种是frame动画。tween动画,这种实现方式可以使视图组件移动,放大或缩小以及产生透明度的变化。frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
3.handler进制的原理:
答:android提供了handler和looper来满足线程间的通信。Handler先进先出原则。looper用来管理特定线程内对象之间的消息交换(message Exchange).
1)looper:一个线程可以产生一个looper对象,由它来管理此线程里的message queue(消息队列)
2)handler:你可以构造一个handler对象来与looper沟通,以便push新消息到messagequeue里;或者接收looper(从messagequeue里取出)所送来的消息。
3)messagequeue:用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而android启动程序时会为它建立一个message queue.
4.android view的刷新:
答:Android中对View的更新有很多种方式,使用时要区分不同的应用场合。我感觉最要紧的是分清:多线程和双缓冲的使用情况。
1).不使用多线程和双缓冲
这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式地调用View对象中的invalidate()方法即可。系统会自动调用 View的onDraw()方法。
2).使用多线程和不使用双缓冲
这种情况需要开启新的线程,新开的线程就不好访问View对象了。强行访问的话会报:android.view.ViewRoot$:Only the originalthread that created a view hierarchy can touch its views.
这时候你需要创建一个继承了android.os.Handler的子类,并重写handleMessage(Messagemsg)方法。android.os.Handler是能发送和处理消息的,你需要在Activity中发出更新UI的消息,然后再你的Handler(可以使用匿名内部类)中处理消息(因为匿名内部类可以访问父类变量,你可以直接调用View对象中的invalidate()方法 )。也就是说:在新线程创建并发送一个Message,然后再主线程中捕获、处理该消息。
3).使用多线程和双缓冲
Android中SurfaceView是View的子类,她同时也实现了双缓冲。你可以定义一个她的子类并实现SurfaceHolder.Callback接口。由于实现SurfaceHolder.Callback接口,新线程就不需要android.os.Handler帮忙了。SurfaceHolder中lockCanvas()方法可以锁定画布,绘制玩新的图像后调用unlockCanvasAndPost(canvas)解锁(显示),还是比较方便得。
5.说说mvc模式的原理,它在android中的运用:
答:android的官方建议应用程序的开发采用mvc模式。何谓mvc?
mvc是model,view,controller的缩写,mvc包含三个部分:
l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
2视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
3控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给m哦得了处理。
android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定 可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。
2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
6.Activity的生命周期:
答:onCreate: 在这里创建界面,做一些数据 的初始化工作
onStart: 到这一步变成用户可见不可交互的
onResume:变成和用户可交互 的,(在activity 栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)
onPause: 到这一步是可见但不可交互的,系统会停止动画 等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在
onstop: 变得不可见,被下一个activity覆盖了
onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉
7.让Activity变成一个窗口:
答:Activity属性设定:有时候会做个应用程序是漂浮在手机主界面的。这个只需要在设置下Activity的主题theme,即在Manifest.xml定义Activity的地方加一句:
android :theme="@android:style/Theme.Dialog"
如果是作半透明的效果:
android:theme="@android:style/Theme.Translucent"
8.Android中常用的五种布局:
答:LinearLayout线性布局;AbsoluteLayout绝对布局;TableLayout表格布局;RelativeLayout相对布局;FrameLayout帧布局;
9.Android的五种数据存储方式:
答:sharedPreferences;文件;SQLite;contentProvider;网络
10.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系:
答:Handler获取当前线程中的looper对象,looper用来从存有Message的Message Queue里取出message,再由Handler进行message的分发和处理。
11.AIDL的全称是什么?如何工作?能处理哪些类型的数据?
答:AIDL(AndroidInterface Definition Language)android接口描述语言
12.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由:
答:通过直接发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性。代码如下:
Intent intent = new Intent();
Intent.setAction(“android.intent.action.View”);
Uri uriBrowsers = Uri.parse(“http://www.sina.com.cn”);
Intent.setData(uriBrowsers);
//包名、要打开的activity
intent.setClassName(“com.android.browser”,”com.android.browser.BrowserActivity”);
startActivity(intent);
13.什么是ANR,如何避免?
答:ANR的定义:
在android上,如果你的应用程序有一段时间响应不移灵敏,系统会向用户提示“应用程序无响应”(ANR:application Not Responding)对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。
如何避免:
首先来研究下为什么它会在android的应用程序里发生和如何最佳构建应用程序来避免ANR.
android应用程序通常是运行在一个单独的线程(例如:main)里,这就意味你的应用程序所做的事情如果在主线程里占用了大长时间的话,就会引发ANR对话框,因为你的应用程序并没有给自己机会来处理输入事件或者Intent广播。
因此,运行在主线程里的任何访求都尽可能少做事情。特别是,activity应该在它的关键生命周期方法(onCreate()和onResume())里尽可能少的去作创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。然而,不是说你的主线程阻塞在那里等待子线程的完成---也不是调用Thread.wait()或者Thread.sleep()。替代的方法是:主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。以这种方式设计你的应用程序,将能保证你的主线程保持对输入的响应性并能避免由5秒输入事件的超时引发的ANR对话框。这种做法应该在其它显示UI的线程里效仿,因为它们都受相同的超时影响。
IntentReceiver执行时间的特殊限制意味着它应该做:在后台里做小的、琐碎的工作,如保存设定或注册一个Notification。和在主线程里调用的其它方法一样,应用程序应该避免在BroadcastReceiver里做耗时的操作或计算,但也不是在子线程里做这些任务(因为BroadcastReceiver的生命周期短),替代的是,如果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个Service。顺便提及一句,你也应该避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果你的应用程序在响应Intent广播时需要向用户展示什么,你应该使用Notification Manager来实现。
一般来说,在应用程序里,100到200ms是用户能感知阻滞的时间阈值,下面总结了一些技巧来避免ANR,并有助于让你的应用程序看起来有响应性。
如果你的应用程序为响应用户输入正在后台工作的话,可以显示工作的进度(ProgressBar和ProgressDialog对这种情况来说很有用)。特别是游戏,在子线程里做移动的计算。如果你的程序有一个耗时的初始化过程的话,考虑可以显示一个Splash Screen或者快速显示主画面并异步来填充这些信息。在这两种情况下,你都应该显示正在进行的进度,以免用户认为程序被冻结了。
14.什么情况会导致Force Close?如何避免?能否捕获导致其的异常?
答:如空指针等可以导致ForceClose;可以看Logcat,然后找到对应的程序代码来解决错误。
15.横竖屏切换时候的activity的生命周期:
答:
1) 新建一个activity,并把各个生命周期打印出来
2) 运行activity,得到如下信息:
onCreate()à
onStart()à
onResume()à
3) 按ctrl+F12切换成横屏时
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
4) 再按ctrl+f12切换成竖屏时,发现打印了两次相同的Log
onSaveInstanceState()à
onPause()à
onStop()à
onDestroyà
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
onSaveInstanceState()à
onPause()à
onStop()à
onDestroyà
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
5) 修改AndroidManifest.xml,把该Activity添加android:configChanges=“orientation”,执行步骤3
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
6) 修改AndroidManifest.xml,把该Activity添加android:configChanges=“orientation”,执行步骤4,发现不会再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
onConfigurationChanged()à
7) 把步骤5的android:configChanges=“orientation”改成
android:configChanges=“orientation|keyboradHidden”,执行步骤3,就只打印onConfigChanged
onConfigurationChanged()à
8) 把步骤5的android:configChanges=“orientation”改成
android:configChanges=“orientation|keyboradHidden”,执行步骤4
onConfigurationChanged()à
onConfigurationChanged()à
总结:
1) 不设置activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
2) 设置activity的android:configChanges=“orientation”时, 切屏会重新调用各个生命周期,切横屏、竖屏时都只会执行一次,但是竖屏最后多打印一条onConfigurationChanged()
3) 设置activity的android:configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged(),横屏一次,竖屏两次
再总结下整个activity的生命周期:
1) 当前activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变
2) Activity运行时按下HOME键(跟被完全覆盖一样的)
onSavaInstanceStateà
onPauseà
onStopà
onRestartà
onStartà
onResumeà
3) 未被完全覆盖,只是失去焦点:
onPauseà
onResumeà
16.如何将SQLite数据库(.db文件)与apk文件一起发布?
答:可以将.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将.db文件复制到res aw目录中
17.如何将打开res aw目录中的数据库文件?
答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res aw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。
18.android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别:
答:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方 式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存 中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处 理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。
19.DDMS和TraceView的区别?
答:DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器
20.谈谈Android的IPC机制:
答:IPC是内部进程通信的简称,是共享"命名管道"的资源。Android中的IPC机制是为了让Activity和Service之间可以随时的进行交互,故在Android中该机制,只适用于Activity和Service之间的通信,类似于远程方法调用,类似于C/S模式的访问。通过定义AIDL接口文件来定义IPC接口。Servier端实现IPC接口,Client端调用IPC接口本地代理。
21.NDK是什么:
答:NDK是一系列工具的集合
NDK提供了一系列的工具,帮助开发者迅速的开发C/C++的动态库,并能自动将so和java应用打成apk包
NDK集成了交叉编译器,并提供了相应的mk文件和隔离cpu,平台等的差异,开发人员只需简单的修改mk文件就可以创建出so
22.描述一下android的系统架构:
答:android系统架构分从下往上为Linux内核层、运行库、应用程序框架层和应用程序层。
Linux内核层:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。
运行库和androidruntion:运行库:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责android网页浏览器的运行;例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发的2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。Androidruntion负责解释和执行生成的dalvik格式的字节码
应用软件架构:java应用程序开发人员主要是使用该层封装好的api进行快速开发的。
应用程序层:该层是java的应用程序层,android内置的googlemaps、email、IM、浏览器等,都处于该层,java开发人员工发的程序也处于该层,而且和内置的应用程序具有平等的地位,可以调用内置的应用程序,也可以替换内置的应用程序

阅读全文

与opengles20android相关的资料

热点内容
数据压缩解压是谁的工作 浏览:878
linux中dns配置服务器地址 浏览:514
Android射手播放器 浏览:634
什么是有效识别文件夹 浏览:881
火影忍者服务器大全下载地址 浏览:953
冰箱压缩机图纸 浏览:1000
迅速pdf注册码 浏览:429
百变秀相机app怎么卸载 浏览:288
扫码抗疫情app怎么注册 浏览:136
chm反编译教程 浏览:677
海康用的谁的服务器地址 浏览:351
javaxa 浏览:158
linux系统硬盘格式 浏览:259
对文件和文件夹的理解 浏览:270
xs电池加密芯片 浏览:994
单片机就是开发板吗 浏览:665
led屏和单片机连接 浏览:154
win磁盘命令 浏览:857
电力电子控制算法工程师前景 浏览:579
g96线速度怎样编程 浏览:916