APP开发网站建设 软件开发 微信开发400电话 网络营销 游戏开发
区域选择
湘潭 |
邵阳 |
长沙 |
衡阳 |
郴州 |
永州 |
怀化 |
益阳 |
常德 |
娄底 |
岳阳 |
张家界 |
株洲 |
湘西 |
区域选择
黑龙江 |
成都 |
浙江 |
江苏 |
陕西 |
山西 |
山东 |
湖南 |
湖北 |
河南 |
河北 |
吉林 |
辽宁 |
云南 |
$(document).ready(function(){ $("#jsddm li").each(function() { $(this).mouseover(function() { $(this).find('ul').css("visibility","visible"); }); $(this).mouseout(function(){ $(this).find('ul').css("visibility","hidden"); }); } ); }); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?393dd08c675da6734212fece3bb9b631"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();
APP开发

安卓端开发

 应用程序
 
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。
 
View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。
 
中介软件
 
操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
 
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
 
Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。
 
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
 
Android的中间层多以Java 实现,并且采用特殊的Dalvik虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
 
Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
 
硬件抽像层
 
Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
 
HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。
 
编程语言
 
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。
 
目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
$(function(){ var aSlidePage = $('#slide .slide-nav-box a'); var aSlideCon = $('#slide .slide-box li'); var iSize = aSlideCon.size(); var iNow = 0; var timer = null; aSlidePage.each(function(index){ $(this).mouseover(function(){ iNow = index; slideRun() }) }) function slideRun(){ aSlidePage.removeClass('active'); aSlidePage.eq(iNow).addClass('active'); aSlideCon.stop(); aSlideCon.find('b').stop(); aSlideCon.eq(iNow).siblings().animate({ opacity:0 },1000).find('b').animate({ opacity:0, top:-40 },1000); aSlideCon.eq(iNow).animate({ opacity:1 },1000).find('b').animate({ opacity:1, top:-10 },1000); } autoRun(); function autoRun(){ timer = setInterval(function(){ iNow++; if(iNow>iSize-1) iNow=0; slideRun(); },6000) }; $('#slide').hover(function(){ clearInterval(timer); },function(){ autoRun(); }) }) function over(obj){ var $obj = $(obj); var url = $obj.css('backgroundImage'); url = url.replace(".jpg","_r.jpg"); $obj.css('backgroundImage',url); } function out(obj){ var $obj = $(obj); var url = $obj.css('backgroundImage'); url = url.replace("_r.jpg",".jpg"); $obj.css('backgroundImage',url); } var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?dc072619b9cb78cd868c808c66512fc9"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();