Android入门基础培训.ppt
《Android入门基础培训.ppt》由会员分享,可在线阅读,更多相关《Android入门基础培训.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、AndroidAndroid开发知识点开发知识点Android开发环境的搭建(androidstudio+gradle+jdk1.8)Android框架Android四大组件:Activity、Service、ContentProvider、BroadcastReceiverUI及基本布局数据存储:SharedPreferences、文件、SQLite数据库、网络Android网络通信 volley,xutils,fjFrameforandroid,hessian,okhttp等其它:NDK,adb、HierarchyView、DDMS、draw9patch一、Android 框架1.Apli
2、cations(应用层)(应用层)应用是用Java语言编写的云新在虚拟机上的程序。2.ApplicationFramework(应用框架层)(应用框架层)这一层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用。ViewSystem:可以用来构建应用程序,它包括列表、网格、文本框、按钮以及 可嵌入的Web浏览器。ContentProviders:它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。ResourceManager:提供非代码资源的访问,如本地字符串、图形和布局文件。NotificationManager:应用可以在状态栏中显示自
3、定义的提示信息。ActivityManager:用来管理应用程序生命周期并提供常用的导航退回功能。WindowManager:管理所有的窗口程序。PackageManager:Android系统内的程序管理。3.Libraries、AndroidRuntime(系统运行库层)(系统运行库层)当使用Android应用框架时,Android系统会通过一些C/C+库赖支持我们使用的各个组件,使其能更好地为我们服务。Bionic系统C库:C语言标准库,系统最底层的的库,C库通过Linux系统来调用。多媒体库(MediaFramework):Android系统多媒体库,基于PackerVideoOpen
4、CORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。SGL:2D图形引擎库。SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。OpenGLES1.0:3D效果的支持。SQLite:关系数据库。Webkit:Web浏览器引擎。FreeType:位图(bitmap)及矢量(vector)。在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,其只能执行.dex的可执行文件,当Java程序通过编译后,最后还需要通过SDK中的dx工具转为成.dex格式才能正常在虚拟机上执行,Java虚拟机运
5、行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(DalvikExceutable)的文件。Dalvik虚拟机有几个主要特征:专有的dex文件格式、dex的优化,dex文件的结构是紧凑的、基于寄存器、一个应用,一个虚拟机实例,一个进程。每一个Android应用度运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间4.LinuxKernel(Linux内核层)内核层)显示驱动(DisplayDriver):基于Linux的帧缓冲(FrameBuffer)驱动。键盘驱动(KeyBoardDriver):作为输入设备的键盘驱动。Flash内存驱动(Fl
6、aseMemoryDriver):基于MTD的Flash驱动程序。照相机驱动(CameraDriver):常用的基于Linux的v412(VideoforLinux)的驱动。音频驱动(AudioDriver):常用的基于ALSA的高级Linux声音体系驱动。蓝牙驱动(BluetoothDriver):基于IEEE802.15.1标准的无线传输技术。WiFi驱动:基于IEEE802.11标准的驱动程序。BinderIPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。PowerManagement(电源管理):比如电池电量等。多媒体编程调用关系二、Androi
7、d 四大组件1.ActivityActivity是Android程序的表示层,程序的每一个显示屏幕就是一个Activity。1、Running位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。2、Paused当Acitivy被另一个透明的或者非全屏的Activity覆盖时的状态叫Paused状态,虽然可见但不可交互。3、Stop当Activity被另外一个Activity覆盖、界面不可见时处于Stop状态。4、KilledActivity被系统杀死或者跟本没启动时就是Killed状态。Android是通过一种Activity栈的方式来管理Activity的,一个Activity在栈中的位
8、置决定它的状态。2.BroadcastReceive 你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。广播类型:1)普通广播,通过Context.sendBroadcast(IntentmyIntent)发送的2)有序广播,通过Context.sen
9、dOrderedBroadcast(intent,receiverPermission)发送的,该方法第2个参数决定该广播的级别,级别数值是在-1000到 1000之间,值越大,发送的优先级越高;广播接收者接收广播时的级别级别(可通过intentfilter中的priority进行设置设为2147483647时优先级最高),同级别接收的先后是随机的,再到级别低的收到广播,高级别的或同级别先接收到广播的可以通过abortBroadcast()方法截断广播使其他的接收者无法收到该广播,还有其他构造函数3)异步广播,通过Context.sendStickyBroadcast(IntentmyInte
10、nt)发送的,还有sendStickyOrderedBroadcast(intent,resultReceiver,scheduler,initialCode,initialData,initialExtras)方法,该方法具有有序广播的特性也有异步广播的特性;发送异步广播要:权限,接收并处理完Intent后,广播依然存在,直到你调用removeStickyBroadcast(intent)主动把它去掉注意:发送广播时的intent参数与Contex.startActivity()启动起来的Intent不同,前者可以被多个订阅它的广播接收器调用,后者只能被一个(Activity或service
11、)调用。监听广播Intent步骤:1)写一个继承BroadCastReceiver的类,重写onReceive()方法,广播接收器仅在它执行这个方法时处于活跃状态。当onReceive()返回后,它即为失活状态,注意:为了保证用户交互过程的流畅,一些费时的操作要放到线程里,如类名SMSBroadcastReceiver2)注册该广播接收者,注册有两种方法程序动态注册和AndroidManifest文件中进行静态注册(可理解为系统中注册)如下:静态注册,注册的广播,下面的priority表示接收广播的级别2147483647为最高优先级3.ServiceService在后台运行,不与用户进行交互
12、。在默认情况下,Service运行在应用程序进程的主线程中,如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在单独的线程中处理,避免阻塞用户界面.创建Service继承android.app.Service实现自己的服务必须在AndroidManifest.xml注册service启动servicestartService(i);停止servicestopService(i);startServiceservice没有运行,则先调用onCreate方法然后调用onStart方法service已经运行,则直接调用onStart方法stopService调用stopSe
13、rvice停止Service调用onDestory最终销毁service绑定Service 调用Context.bindService(),客户端可以绑定到正在运行的Service上,如果此时Service没有运行,系统会调用onCreate()方法来创建Service,但是并不会调用onStart()方法。客户端成功绑定到Service之后,可以从onBind()方法中返回一个IBinder对象,并使用IBinder对象来调用Service的方法。一旦客户端与Service绑定,就意味着客户端和Service之间建立了一个连接,只要还有连接存在,那么系统会一直让Service运行下去。使用b
14、indService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时,服务首次启动系统先调用服务的onCreate()-onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的onUnbind()-onDestory(),想主动解除绑定可使用Contex.unbindService(),系统依次调用onUnbind()-onDestory();4.ContentProviderContentProvider是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取以及操作数据,实现数据共享方法。Android自身也提供了几个现成的Con
15、tentProvider:ContactsBrowserCallLogSettingsMediaStore使用方法通过ContentResolver来使用具体的某个ContentProvider。ContentResolvercr=getContentResolver();contentResolver提供的方法:query()insert()update()delete()ContentProvider-URI组成三、UI及基本布局1.View及及ViewGroupView是基类,ViewGroup是它的子类。View和和ViewGroup最重要的几个方法最重要的几个方法View和ViewG
16、roup最重要的几个方法:onMeasure(intwidthMeasureSpec,intheightMeasureSpec):当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想要用多大地方啊?”,然后传入两个参数widthMeasureSpec和heightMeasureSpec onDraw(Canvascanvas):View类中用于重绘的方法,这个方法是所有View、ViewGroup及其派生类都具有的方法,也是AndroidUI绘制最重要的方法。开发者可重载该方法,并在重载的方法内部基于参数canvas绘制自己的各种图形、图像效果。onLayout(boolean
17、changed,intleft,inttop,intright,intbottom):View类中布局发生改变时会调用的方法,这个方法是所有View、ViewGroup及其派生类都具有的方法,重载该类可以在布局发生改变时作定制处理,这在实现一些特效时非常有用。dispatchDraw(Canvascanvas):ViewGroup类及其派生类具有的方法,这个方法主要用于控制子View的绘制分发,重载该方法可改变子View的绘制,进而实现一些复杂的视效,典型的例子可参见Launcher模块Workspace的dispatchDraw重载。drawChild(Canvascanvas,Viewch
18、ild,longdrawingTime):ViewGroup类及其派生类具有的方法,这个方法直接控制绘制某局具体的子view,重载该方法可控制具体某个具体子View。View布局布局View显示显示View显示过程显示过程1)ActivityManagerService创建Activity线程,激活一个activity2)系统调用Instrumentation.newActivity创建一个activity3)Activity创建后,attach到一个新创建的phonewindow中。这样Activity获取 一个唯一的WindowManager服务的实例4)Activity创建过程中使用se
19、tcontentView设置用用户UI,这些VIEW被加入到PhoneWindow的ContentParent中。5)Activity线程继续执行,当执行到Activity.makeVisible是将根viewDecoView加入到WindowManger中,WindowManger实全会为每个DecoView创建对应的ViewRoot6)每个ViewRoot拥有一个Surface,每个Surface将会调用底层库创建图形绘制的内存空间。这个底层库就是SurfaceFlinger。SurfaceFlinger同时也负责将个View绘制的图形合到一块(按照Z轴)显示到用户屏幕。7)如果用户直接在
20、Canvas上绘制,实际上它直接操作Surface。但对每个View的变更,它是要通知到ViewRoot,然后ViewRoot获取Canvas。如果绘制完成,surfaceFlinger得到通知,合并Surface成一个Surface到设备屏幕。从上面的图形输出过程分析,我们可以知道真正显示图形的实际上跟Activity没有关系,完全由WindowManager来决定。WindowManager是一个系统服务,因此可以直接调用这个服务来创建界面,并且更绝的是Dialog、Menu也是有WindowManager来管理的。另外一个我们也可以看到,最底层都是Surface来,因此,常见开发游戏的人
21、都推荐你使用SurfaceView来创建界面。2.五大五大UI布局布局为了适应各式各样的界面风格,Android系统提供了5种布局:FrameLayout(框架布局)LinearLayout(线性布局)RelativeLayout(相对布局)TableLayout(表格布局)AbsoluteLayout(绝对布局)FrameLayout(框架布局框架布局)所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西 LinearLayout(线性线性布局布局)每一个LinearLayout里面又可分为垂直布局(android:orientation=vertical)和水平布
22、局(android:orientation=horizontal)。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。AbsoluteLayout(绝对布局绝对布局)绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。这种布局比较少用。RelativeLayout(相对布局相对布局)相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:相对于某一个元素android:layout_below、android:layout_toLeftOf相对于父元素的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 入门 基础 培训
限制150内