版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Andoid移动应用开发主讲:杨谊第1章Android概述.pptx第2章Android开发环境的搭建与使用.pptx第3章Activity机制与布局管理.pptx第4章常用UI控件.pptx第5章Intent与组件通信.pptx第6章多线程与UI通信.pptx第7章Service与后台服务.pptx第8章Android文件及数据库.pptx第9章Android网络开发.pptx第10章传感器与地图应用.pptx智能手机无论软件还是硬件技术都在日新月异飞速发展课程介绍学习目的:移动时代,既要做技术产品的消费者,也要做开发者和推动者学习方法:大量实践(练习+交流)课程形式:
教师讲解演示(50%)+
同学们讲解和展示(50%)考试方法考试目的:对技术的理解能力和运用能力考核项目考核方法合计形成性考核到课情况每次3分,抽查5次,满分15分65课程实践作业练习,技术点讲解和作品展示(以小组为单位,体现个人贡献),每次10分,满分50分终结性考核期末考试综合理论(1道问答题),满分10分35编程实战(1道编程题),满分25分总
计100分组要求自由组合,每组4-5人组长负责:组织全组装机、课堂讲解和作品展示、课外学习本周把分组名单发来第1章
Android概述Android入门介绍1.1Android概述1.2Android体系结构(重点)1.3学习要求Android入门介绍1.1Android概述1.2Android体系结构(重点)1.3学习要求1.1Android概述一个开源、免费的智能手机平台一个linux核心、多操作、多线程的OSAndroid并不是一个驱动或者产品开发者可以自定制DVR(DigitalVideoRecorder)、GPS(GlobalPositioningSystem)、MP3(MovingPictureExpertsGroupAudioLayer-3)Player等应用程序10智能手机,是指像个人电脑一样,具有独立的操作系统,可安装和卸载软件及上网功能的手机。可以打电话的微型电脑。智能手机3rdGeneration,第三代数字通信。指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。3G是一种通信技术标准,符合这个标准的技术有WCDMA、CDMA2000、TD-SCDMA三种制式。相对第一代模拟制式手机(1G)和第二代GSM、CDMA等数字手机(2G),3G网络能处理图像、音乐、视频等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务。第三代与前两代的主要区别是在传输声音和数据的速度上有很大的提升。3G4thGeneration,第四代数字通信。4G是集3G与WLAN
(WirelessLocalAreaNetwork)于一体,并能够传输高质量视频图像,图像传输质量与高清晰度电视不相上下,能够满足几乎所有用户对于无线服务的要求。4G可以在DSL和有线电视调制解调器没有覆盖的地方部署,再扩展到整个地区。4G5G5thGeneration,第五代数字通信。3G和4G是为连接人类而设计的,而5G是为连接万物而设计的。4G网络会关心你的在线视频清不清晰、流不流畅,但不会关心如何更好的用手机去控制家里的智能门把手、智能冰箱等,而5G表示非常关心。APP:Application主流平台安装文件开发语言iOSAndroidWindowsphoneipaapkxapobject-C/swiftJavaC#APP:ApplicationNativeApp基于智能手机本地操作系统的第三方应用程序,也叫本地app。WebApp基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能。HybridApp同时采用网页语言与程序语言进行开发,通过不同的应用商店进行打包分发。兼具了NativeApp与WebApp两者的诸多优点。Android简介Android简介Android本意是“机器人”。是基于Linux内核的操作系统。Google在2007年11月5日公布,后由开放手机联盟开发。Google公司凭借Android操作系统在智能手机上取得了巨大的成功。20智能手机系统黑莓
BlackBerry系统
Palm系统
WindowsCEAndroid系统苹果IOSWindowsPhoneSymbian系统
IOS和Android比较比较IOS(iPhone)Android开发平台AppleMacOS不局限于操作系统开发工具XcodeEclipse开发语言Objective-CJava兼容性封闭操作系统,由Apple制定,兼容性高Google规定出硬件标准,由于厂商众多,所以兼容性低UI界面主要依靠触屏完成需要触屏和按键同时操作显示风格统一的视觉规范和分辨率视觉规范由厂商决定,屏幕分辨率繁多22Android系统优势
特色平台标准化开放源代码移动互联网用户可定制
变革操作系统与软件免费,手机更便宜统一平台克服格式问题,功能更多元使用者决定功能,更贴近消费者Android市场份额Android市场份额Android入门介绍1.1Android概述1.2Android体系结构(重点)1.3学习要求系统架构四层(由低到高):Linux内核层(LinuxKernel)
系统运行库层(Libraries)应用框架层(ApplicationFramework)应用层(Application)Linux内核Android系统建立在Linux2.6之上。Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。Linux内核也是系统硬件和软件层之间的抽象层。使用框架层进行开发时,Android操作系统会自动调用C/C++库文件来支持各个组件。Android应用开发者不能直接调用C/C++库集,但可以通过应用程序框架来调用这些库。android运行时由两部分组成:Android核心库集和Dalvik虚拟机。系统运行库No.包名称描述1android.app提供程序主体运行支持类2android.content提供了程序和数据交互访问的支持类3android.database提供了数据库的操作支持类4android.graphics底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上5android.location定位和相关服务的支持类6android.media提供一些类管理多种音频、视频的媒体接口7提供网络访问的支持类8android.os提供了系统服务、消息传输和IPC机制9android.opengl提供OpenGL的工具10vider提供访问Android内容提供者的类11android.telephony提供与拨打电话相关的API交互12android.view提供基础的用户界面接口框架13android.util涉及工具性的方法,例如时间日期的操作14android.webkit默认浏览器操作接口15android.widget包含各种UI元素(大部分是可见的)在应用程序的布局中使用应用框架层主要是Google发布的操作系统支持的类库(API框架)。Android系统上的应用程序是完全平等的,不管是Android系统提供的程序,还是普通开发者提供的程序,都可以访问Android提供的API框架。应用程序框架是应用程序开发的基础,也是软件复用的重要手段。应用框架层Android系统包含一系列核心应用程序,如电子邮件客户端、SMS程序、日历、地图、音乐播放器、浏览器、联系人等。这些应用程序都是用Java编写的,运行在应用层上。应用层Android应用程序框架开发者接触最多的部分就是应用程序框架。应用程序框架中有四个重要的组件:ActivitiesIntentServicesContentProviderAndroid入门介绍1.1Android概述1.2Android体系结构(重点)1.3学习要求内容与课时安排内容课内学时课外学时第1章概述12第2章开发环境搭建与使用24第3章Activity与界面布局88第4章UI控件与事件响应1212第5章组件通信1212第6章UI线程通信44第7章Service服务44第8章文件与数据库1212第9章网络开发44第10章传感器和地图导航28第11章综合案例26考试3总计6490学习建议上课重点内容和重点例题:熟练掌握学习范围:分清主次实践(很重要!)主动自学课后进行巩固熟练,多做上机练习课外多开展讨论交流、互帮共学学习方法
掌握好Android语法基础学习Java语言。及时跟进技术新进展。注意思考和总结即便一个简单的例子也要耐心去琢磨、调试、改动。动手写代码自己动手技术才能真正属于自己。培养自学能力,学会使用网络资源
充分利用网络学习资源。实践古罗马帝国开拓疆土的士兵,他们是如何培训的呢?
请选择:a)他们不经过培训,直接上战场b)他们只学理论,没有实战c)他们用比实战更轻的武器训练d)他们用和实战一样重的武器训练e)他们用比实战重一倍的武器训练实践你平时在学校里是如何为将来的职业准备的?a)不经过准备,直接上b)只学理论,没有实战c)用比实际工作要求更低的水平训练d)用和实际工作一样的要求训练e)用比实际工作高一倍的要求训练f)我不用准备,我爹叫阿刚
学习资料推荐AndroidDevelopers官网的资料,从设计,培训,指南,文档,都不应该错过。学习资料推荐
Androidtutorial–TutorialSpoint专业的技术教程网站,热门技术都能在这里找到教程,知识点覆盖全,而且代码风格也很不错,同时也适合初学着;更人性化的是,所有教程提供离线PDF下载。学习资料推荐AndroidQuestions-StackOverflowStackoverflow是一个技术在线问答网站,你提问的问题,上面有很多大牛会很热心回答。学习资料推荐AndroidArchives|JavaCodeGeeksJavaCodeGeeks主要是一个Java教程的网站,它提供Android教程,一步一步,还有配图。今日美言关系是泥饭碗,是会打碎的;文凭是铁饭碗,是会生锈的;本事是金饭碗,是会升值的。盖茨(Gates)与乔布斯(Jobs)
乔布斯说天堂没有墙,所以不需要门(Gates)和窗(Windows)。盖茨说天堂不让碰苹果(禁果,Apple),也没有工作(Jobs)。乔布斯说工作都是无薪的,天堂没有账单(Bill)。程序员写的诗
(借此复习一下OO和JAVA)我能抽象出整个世界但是我不能抽象出你
因为你在我心中是那么的具体
所以我的世界并不完整
我可以重载甚至覆盖这个世界里的任何一种方法
但是我却不能重载对你的思念
也许命中注定了你在我的世界里永远的烙上了静态的属性
而我不慎调用了爱你这个方法
当我义无返顾的把自己作为参数传进这个方法时
我才发现爱上你是一个死循环
它不停的返回对你的思念压入我心里的堆栈
程序员写的诗
(借此复习一下OO和JAVA)在这无尽的黑夜中
我的内存里已经再也装不下别人
我不停的向系统申请空间
但却捕获一个异常
——我爱的对象不爱我为了解决这个异常
我愿意虚拟出最后一点内存
把所有我能实现的方法地址压入堆栈
并且在栈尾压入最后一个方法——将字符串“我爱你,编程”传递给你
如果返回值为真
——我将用尽一生去爱你
否则——我将释放掉所有系统资源查找关于Android发展和特点的资料了解Android系统的特性预习第2章课后练习勉励一下自己对于各种凌乱的电脑问题,其他行业的人,以为程序员什么都会;程序员中的女程序员,以为男程序员什么都会;男程序员中的一般程序员,以为技术好的程序员什么都会;技术好的程序员,每次都在网上苦苦找答案……Andoid移动应用开发主讲:杨谊第2章
Android开发环境搭建与使用Android入门介绍2.1Android开发环境搭建(重点)2.2第一个AndroidApp(重点)2.3Android应用程序结构(掌握)2.4Android应用程序签名2.5AndroidDDMS(重点)Android入门介绍2.1Android开发环境搭建(重点)2.2第一个AndroidApp(重点)2.3Android应用程序结构(掌握)2.4Android应用程序签名2.5AndroidDDMS(重点)搭建Android开发环境下载并安装Android-SDK开发工具在Eclipse中配置ADT(AndroidDevelopmentTools)插件完成第一个Android程序的开发开发环境开发环境JDKIDE–EclipseEclipseplug-in-ADTSoftwareDevelopmentKit(SDK)AndroidEmulatorDebugger下载安装JDKWin7下配置JDK环境变量设置三个系统变量,分别是JAVA_HOME,Path和CLASSPATH。JAVA_HOME变量值为JDK在的安装路径:C:\ProgramFiles\Java\jdk1.8.0_20。
Path在原来变量值后追加:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。
CLASSPATH变量值为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。前面有一个"."表示当前目录,告诉Java执行环境,在哪些目录下可以找到Java程序所需要的类或者包。下载Eclipse设置EclipseEclipse不需要安装下载后把解压包解压后,放置到合适的地方即可。到这一步,已经可以开发JAVA程序了。但是,要要通过Eclipse来开发Android应用程序,还需要:(1)下载AndroidSDK(SoftwareDevelopmentKit)(2)在Eclipse安装ADT(AndroidDevelopmentTools)插件,这个插件能让Eclipse和AndroidSDK关联起来。这两步分开来做在低版本API(10以下)可行,而高版本常常会失败。如有成功的方案,务必分享互助!一种解决办法adt-bundle-windows-x86-20140702.zip直接解压这个包,命名为一个简单的文件夹如ADTAPP是自己建的文件夹,放置自己开发的项目eclipse是解压得到的文件夹,双击里面的eclipse.exe00sdk是解压得到的文件夹还有其他的安装方案,大家可以积极探索,做课堂展示。下载AndroidSDKAndroidSDK包括一系列的开发工具以帮助开发者开发和调试应用程序。包含以下几部分:
–Android应用程序框架API
–Android模拟器
–辅助工具:DDMS(调试窗口)、ADB(调试工具)AAPT(生成APK)、DX(编译工具) –Android开发文档
–示例代码AndroidSDKManagerAndroidSDKManager创建Android虚拟设备(AVD)AndroidVirtualDevice创建Android虚拟设备(AVD)AndroidVirtualDeviceAndroidVirtualDevice,也叫模拟器模拟器模拟手机显示内置了一些Google公司自带的程序,如打电话、发短信、GoogleMap等。另一个开发环境:AndroidStudio/另一个开发环境:AndroidStudioAndroidStudio的界面和WebStorm相似。Android入门介绍2.1Android开发环境搭建(重点)2.2第一个AndroidApp(重点)2.3Android应用程序结构(掌握)2.4Android应用程序签名2.5AndroidDDMS(重点)GettingStart第一个Android应用程序新建项目(点击FileNewAndroidProject)在项目上右键点击runasAndroidapplication运行结果Android模拟器模拟器与真机的区别模拟器不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼叫(呼入和呼出)模拟器不支持USB连接模拟器不支持相见/视频捕捉模拟器不支持音频输入(捕捉),但支持输出(重放)模拟器不支持扩展耳机模拟器不支持蓝牙模拟器不能确定连接状态模拟器不能确定电池电量水平和充电状态模拟器不能确定SDk卡的插入/弹出……Android模拟器计算机提示,统C盘空间不足之类的信息,这是由于Android模拟器运行时生成几个tmp后缀的临时文件,可能占用几GB的磁盘空间。到C:\DocumentsandSettings\用户名\LocalSettings\Temp\AndroidEmulator目录清理第一运行程序启动模拟器的时间比较长。为了解决这个问题,每次运行新的程序不需要关闭旧的模拟器,而是直接在Eclipse开发工具里单击运行。或者下载快速模拟器Android中的显示单位px(pixels)像素
例如:HVGA代表320x480像素。
dip或dp(deviceindependentpixels)设备独立像素
和设备硬件有关,支持WVGA、HVGA和QVGA,不依赖像素。
sp(scaledpixels)比例像素
主要处理字体的大小,可以根据系统的字体自适应。为了适应不同分辨率,不同的像素密度,推荐使用dp,文字使用sp。下面几个不太常用:
in(inches)英寸
mm(millimeters)毫米
pt(points)点,1/72英寸ADT可视化开发工具ADT可视化开发工具第三方提供的工具例如:/p/droiddraw/欢迎大家探索、推荐、共享技术飞速发展,工具日新月异应用程序的发布和部署右键单击工程名,选择“Export”应用程序的发布和部署应用程序的发布和部署应用程序的发布和部署一步步走下去,最后得到双击,也可使用第三方管理工具进行发布。欢迎大家推荐、共享!Android入门介绍2.1Android开发环境搭建(重点)2.2第一个AndroidApp(重点)2.3Android应用程序结构(掌握)2.4Android应用程序签名2.5AndroidDDMS(重点)java代码R类定义该项目所有资源的索引Java归档文件,包含构建应用程序所需的AndroidSDK库(如Views、Controls)和APIs媒体文件Jar包编译文件.apk图片布局资源文件数据,字符串,样式配置信息和MVC有没有相似之处?Toast的用法Toast是Android中用来显示显示信息的一种机制。Toast是一个View视图,快速显示少量的信息。Toast在应用程序上浮动显示信息给用户,不获得焦点,不影响用户输入等操作,主要用于一些帮助/提示。//第一个参数:当前的上下文环境。可用getApplicationContext()或this//第二个参数:要显示的字符串。也可是R.string中字符串ID//第三个参数:显示的时间长短。Toast默认的有两个LENGTH_LONG(长)和LENGTH_SHORT(短),也可以使用毫秒如2000msToasttoast=Toast.makeText(getApplicationContext(),"默认的Toast",Toast.LENGTH_SHORT);//显示toast信息toast.show();看一个例子
activity_main.xml<LinearLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"
android:text="默认"android:onClick="doClick"
></Button><Buttonandroid:id="@+id/btn2"android:layout_width="match_parent"android:layout_height="wrap_content"
android:text="自定义位置"android:onClick="doClick"
></Button>activity_main.xml<Buttonandroid:id="@+id/btn3"android:layout_width="match_parent"android:layout_height="wrap_content"
android:text="图片"android:onClick="doClick"></Button><Buttonandroid:id="@+id/btn4"android:layout_width="match_parent"android:layout_height="wrap_content"
android:text="完全自定义"android:onClick="doClick"></Button><Buttonandroid:id="@+id/btn5"android:layout_width="match_parent"android:layout_height="wrap_content"
android:text="其他线程"android:onClick="doClick"></Button></LinearLayout>custom.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_height="wrap_content"android:layout_width="wrap_content"android:background="#ffffffff"android:orientation="vertical"android:id="@+id/llToast"><TextViewandroid:layout_height="wrap_content"android:layout_margin="1dip"android:textColor="#ffffffff"android:layout_width="fill_parent"android:gravity="center"android:background="#bb000000"android:id="@+id/tvTitleToast"/><LinearLayout
android:layout_height="wrap_content"android:orientation="vertical"android:id="@+id/llToastContent"android:layout_marginLeft="10dip"android:layout_marginRight="10dip"android:layout_marginBottom="10dip"android:layout_width="wrap_content"android:padding="15dip"android:background="#33ff0000">
<ImageViewandroid:layout_height="wrap_content"android:layout_gravity="center"android:layout_width="wrap_content"android:id="@+id/tvImageToast"/><TextViewandroid:layout_height="wrap_content"android:paddingRight="10dip"android:paddingLeft="10dip"android:layout_width="wrap_content"android:gravity="center"android:textColor="#ff000000"android:id="@+id/tvTextToast"/></LinearLayout></LinearLayout>MainActivity.javapublicclassMainActivityextendsActionBarActivityimplementsOnClickListener{Handlerhandler=newHandler();
@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn1).setOnClickListener(this);findViewById(R.id.btn2).setOnClickListener(this);findViewById(R.id.btn3).setOnClickListener(this);findViewById(R.id.btn4).setOnClickListener(this);findViewById(R.id.btn5).setOnClickListener(this);}publicvoidshowToast(){handler.post(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(getApplicationContext(),"来自其他线程",Toast.LENGTH_SHORT).show();
}
});}MainActivity.javapublicvoidonClick(Viewview){Toasttoast=null;switch(view.getId()){caseR.id.btn1:Toast.makeText(this,"默认提示",Toast.LENGTH_SHORT).show();break;caseR.id.btn2:toast=Toast.makeText(this,"自定义提示",Toast.LENGTH_SHORT);toast.setGravity(Gravity.RIGHT,100,100);toast.show();break;caseR.id.btn3:toast=Toast.makeText(getApplicationContext(),
"带图片的Toast",Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER,0,0);LinearLayouttoastView=(LinearLayout)toast.getView();ImageViewimageCodeProject=newImageView(getApplicationContext());imageCodeProject.setImageResource(R.drawable.ic_launcher);toastView.addView(imageCodeProject,0);toast.show();break;MainActivity.javacaseR.id.btn4:LayoutInflaterinflater=getLayoutInflater();Viewlayout=inflater.inflate(R.layout.custom,(ViewGroup)findViewById(R.id.llToast));ImageViewimage=(ImageView)layout.findViewById(R.id.tvImageToast);image.setImageResource(R.drawable.address_book);TextViewtitle=(TextView)layout.findViewById(R.id.tvTitleToast);title.setText("Attention");TextViewtext=(TextView)layout.findViewById(R.id.tvTextToast);text.setText("完全自定义Toast");toast=newToast(getApplicationContext());toast.setGravity(Gravity.RIGHT|Gravity.CENTER,12,40);toast.setDuration(Toast.LENGTH_LONG);toast.setView(layout);toast.show();
break;caseR.id.btn5:newThread(newRunnable(){@Overridepublicvoidrun(){showToast();}}).start();break;}}使用资源的两种方法第一种:在activity_main.xml中设置(以图片为例)<ImageViewandroid:id="@+id/imageView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/textView1"android:layout_below="@+id/textView1"android:layout_marginTop="78dp"
android:src="@drawable/computer2"/>使用资源的两种方法第二种:MainActivity.java中写代码(以图片为例):protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);ImageViewiv=newImageView(this);iv.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.puter2));this.setContentView(iv);}使用资源的两种方法创建工程时选择API19MainActivity.java中写代码(以音乐为例):在res下新建一个文件夹raw,放置midi/mp3文件importcom.example.music.R;publicclassMainActivityextendsActionBarActivity{MediaPlayermp;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mp=MediaPlayer.create(this,R.raw.midi);mp.start();}}<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"package="com.example.logdemo"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity></application></manifest>小结:Android应用开发顺序建立Project创建界面,.xml(如果只有一个界面,使用默认的.xml即可)建立.java,将界面和代码关联起来如果添加了多个界面和对应的多个.java,还需在AndroidManifest.xml中添加配置信息运行(可选择模拟器或实际的手机、Ipad等设备)Android入门介绍2.1Android开发环境搭建(重点)2.2第一个AndroidApp(重点)2.3Android应用程序结构(掌握)2.4Android应用程序签名2.5AndroidDDMS(重点)AndroidApp的签名打包Andriod应用程序如果要在手机或模拟器上安装,必须要有签名。需要对发布的APK文件进行唯一签名:为了保证每个应该程序开发者的合法,防止部分人通过使用相同的PackageName来混淆替换已经安装的程序,从而出现一些恶意窜改,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。谷歌建议你把你所有的APP都使用同一个签名证书。AndroidApp的签名打包签名对App的影响。
1)App升级。
使用相同签名的升级软件可以正常覆盖老版本的软件,否则系统比较发现新版本的签名证书和老版本的签名证书不一致,不会允许新版本安装成功的。
2)App模块化。android系统允许具有相同的App运行在同一个进程中,如果运行在同一个进程中,则他们相当于同一个App,但是你可以单独对他们升级更新,这是一种App级别的模块化思路。
3)允许代码和数据共享。android中提供了一个基于签名的Permission标签。通过允许的设置,我们可以实现对不同App之间的访问和共享,AndroidApp的签名打包签名的步骤
①.创建key
②.使用步骤
①
中产生的key对apk签名Eclipse直接能导出带签名的最终apk,非常方便,推荐使用AndroidApp的签名打包AndroidApp的签名打包AndroidApp的签名打包AndroidApp的签名打包AndroidApp的签名打包Android入门介绍2.1Android开发环境搭建(重点)2.2第一个AndroidApp(重点)2.3Android应用程序结构(掌握)2.4Android应用程序签名2.5AndroidDDMS(重点)
DDMSDalvikDebugMonitorService作用:Debug、为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等。安装好ADT后会有一个DDMS的perspectiveDDMS的简介:DDMS视图为:(1)在程序中加入断点(2)工程点击右键,开启Debug,打开DDMS视图DDMS的使用——Debug(3)在坐上角的Devices中,选中要Debug的工程,然后点击图标
DDMS的使用——Debug通过EmulatorControl可以像手机发送短信,打电话,更新手机位置信息。TelephonyStatus:通过选项模拟语音质量以及信号连接模式。
TelephonyActions:模拟电话接听和发送SMS到测试终端。
LocationControl:模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:Manual:手动为终端发送二维经纬坐标。GPX:通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。KML:通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端 DDMS的使用——emulatorcontrol
LogCat:显示输出的调试信息,在程序中加入的Log日志。
Console(控制台):是Android模拟器输出的信息,加载程序等信息。DDMS的使用——LogcatLog.v//输出冗余信息Log.d//输出调试信息Log.i//输出普通信息Log.w//输出警告信息Log.e//输出错误信息DDMS的使用——LogcatprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.v("v","冗余信息");Log.d("d","调试信息");Log.i("i","普通");Log.w("w","警告信息");Log.e("e","错误");}DDMS的使用——信息查看
右边窗口中有threads,heap,fileexplorer选项卡。分别显示线程统计信息,栈信息,以及android的文件系统。DDMS的使用——信息查看FileExplorer非常有用,可以把文件上传到android手机,或者从手机下载文件,也可以进行删除操作。选中fileexplorer选项卡后,按下面三个按钮便可实现对android手机文件系统的上传,下载,删除操作。手机存储手机本机存储器有Rom,Ram。Rom:相当于系统盘,使用时常需要获取root权限。分为机身内存和内置存储(三星:USB存储器)。机身内存包括system、data和cache等分区目录,软件默认安装机身内存或者内置存储卡里。data(手机储存总量)+system(手机系统占用)。Ram:在相当于电脑的运行内存,断电时数据消失。外置存储器有:手机存储器(TF卡),相当于D,E,F等硬盘。下载JDK,Eclipse等工具包并安装Android开发平台熟悉开发平台的常用功能
编写、编译并运行简单的Android应用程序预习第3章课后练习勉励一下自己对于各种凌乱的电脑问题,其他行业的人,以为程序员什么都会;程序员中的女程序员,以为男程序员什么都会;男程序员中的一般程序员,以为技术好的程序员什么都会;技术好的程序员,每次都在网上苦苦找答案……Andoid移动应用
程序设计主讲:杨谊Email:yiyang20110130@163.com第3章
Activity和布局管理Activity及生命周期3.1Android四大组件(了解)3.2Activity机制(重点)3.3界面布局(重点)3.4度量单位与资源(掌握)Activity及生命周期3.1Android四大组件(了解)3.2Activity机制(重点)3.3界面布局(重点)3.4度量单位与资源(掌握)Android四大组件Activity活动(第5章)Service服务(第6章)ContentProvider内容提供者(第8章)BroadcastReceiver广播接收器(第5章)Android四大组件Activity活动一个Activity通常是一个屏幕,上面显示控件,监听并处理用户事件,做出响应相当于表现层ViewActivity之间通过Intent进行通信Service服务ContentProvider内容提供者BroadcastReceiver广播接收器Android四大组件Activity活动Service服务长生命周期的、没有用户界面的、运行在后台的程序。例子:一个正在播放歌曲的媒体播放器。媒体播放器activity使用Context.startService()来启动一个service,从而在后台保持音乐的播放。ContentProvider内容提供者BroadcastReceiver广播接收器Android四大组件Activity活动Service服务BroadcastReceiver广播接收器在应用程序之间传输信息的机制对外部事件进行过滤,只对感兴趣的外部事件进行接收并做出响应,如电话呼入时,或者网络可用时。4.ContentProvider内容提供者Android四大组件Activity活动Service服务3.BroadcastReceiver广播接收器4.ContentProvider内容提供者一个应用程序的指定数据集提供给其他应用程序。Activity及生命周期3.1Android四大组件(了解)3.2Activity机制(重点)3.3界面布局(重点)3.4度量单位与资源(掌握)复习:Activity的作用?界面是应用程序与客户打交道的最直接最常用的途径Activity提供屏幕界面,实现与用户交互。Activity生命周期生命周期:进程从创建到结束的过程。Activity生命周期先自学,再由一个小组来讲述Activity生命周期生命周期:进程从创建到结束的过程。Activity类处于android.app包中,继承体系如下:1.java.lang.Object2.android.content.Context3.android.app.ApplicationContext4.android.app.ActivityActivity生命周期Activity用于处理用户操作,创建窗口,通过setContentView(View)把UI放到窗口上。大部分Activity子类需要实现两个接口:onCreate(Bundle)接口,初始化ActivitysetContentView(int)设置在资源文件中定义的UI,
、
findViewById(int)获得UIonPause()接口,离开ActivityBundle,是Android开发中的一个类,用于Activity之间传输数据用。Intent
it
=
new
Intent(A.this,B.class);
Bundle
bundle
=
new
Bundle();
bundle.putString("name","张三");
it.putExtrats(bundle);
startActivity(it);
实例:Activity生命周期【例3-1】新建项目exa3_1ActivityLifeCycle,输出Activity生命周期中每个方法的运行状态。测试下列情况下Activity的运行状态:(1)第一次启动时;(2)退出时;(3)重新启动时;(4)单击返回按钮和Home按钮时;(5)接到电话或短信时。实例:Activity生命周期publicclassMainActivityextendsActionBarActivity{ privateStringstate=""; @Override protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showState(); } privatevoidshowState(){
StringstrState=newThrowable().getStackTrace()[1].getMethodName()
+":"+newThrowable().getStackTrace()[2].getMethodName();
//newThrowable().getStackTrace()返回当前运行栈的结构,获得调用类和方法名
//把Exception信息存放到一个字符串strState里,通过分析这个字符串可以提取调用类和方法state=state+strState+"-->\n";Toasttoast=Toast.makeText(getApplicationContext(),state,Toast.LENGTH_LONG);//Toast输出信息的方法,getApplicationContext()即MainActivity.this
toast.setGravity(Gravity.TOP,0,200);//设置Toast的显示位置
toast.show();//显示Toast内容
}实例:Activity生命周期publicvoidonStart(){super.onStart();showState();}
publicvoidonRestart(){super.onRestart();showState();}
publicvoidonResume(){super.onResume();showState();}
publicvoidonStop(){super.onStop();showState();}
publicvoidonDestroy(){super.onDestroy();showState();}}Activity启动的时候:onCreate>onStart>onResume
另外一个SecondActivity被启动:SecondActivity就在UI视图的最顶层,MainActivityonPause当MainActivity完全被SecondActivity挡住,就会onStop退出(back键)secondactivity,MainActivity就会onResume在MainActivity中按back键,或者在代码中调用finish()时,走到onDestory执行状态1.启动Activity:onCreate,onStart,onResume,Activity进入运行状态。2.当前Activity被其他Activity覆盖或被锁屏:onPause,暂停当前Activity的执行。3.当前Activity由被覆盖状态回到前台或解锁屏:onResume,再次进入运行状态。4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:onPause,onStop,进入停滞状态。5.用户后退回到此Activity:onRestart,onStart,onResume方法,再次进入运行状态。6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次onCreate、onStart、onResume,进入运行状态。7.用户退出当前Activity:onPause,onStop,onDestory,结束当前Activity。启动Activity到运行状态:onCreate()->onStart()->onResume()->界面完全显示运行状态到暂停状态:界面完全显示->
onPause()->界面被部分遮盖暂停状态到运行状态:界面被部分遮盖->onResume()->界面完全显示运行状态到停止状态:界面完全显示->onPause()->onStop()->界面完全遮盖停止状态到运行状态:界面完全遮盖->onRestart()->onStart()->onResume()->界面完全显示退出Activity:界面完全显示->onPause()->onStop()->界面完全遮盖->onDestroy()->Activity结束生命周期自行练习:观察生命周期publicclassMainActivityextendsActionBarActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.i("INFO","onCreate");}@OverrideprotectedvoidonStart(){//TODOAuto-generatedmethodstubsuper.onStart();Log.i("INFO","onStart");}@OverrideprotectedvoidonRestart(){//TODOAuto-generatedmethodstubsuper.onRestart();Log.i("INFO","onRestart");}@OverrideprotectedvoidonResume(){//TODOAuto-generatedmethodstubsuper.onResume();Log.i("INFO","onResume");}@OverrideprotectedvoidonPause(){//TODOAuto-generatedmethodstubsuper.onPause();Log.i("INFO","onPause");}@OverrideprotectedvoidonStop(){//TODOAuto-generatedmethodstubsuper.onStop();Log.i("INFO","onStop");}@OverrideprotectedvoidonDestroy(){//TODOAuto-generatedmethodstubsuper.onDestroy();Log.i("INFO","onDestroy");}}自行练习:观察生命周期运行时,先后执行onCreate()->onStart()->onResume三个方法。按BACK键时,这个应用程序将结束,先后调用onPause()->onStop()->onDestory()三个方法。按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。再次启动ActivityDemo应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法。自行练习:观察生命周期运行时接到电话,先后执行onPause()->onResume方法。运行时收到短信,打开短信界面,看完短信后返回该应用,先后调用onPause()->onStop()->->onRestart()->onStart()->onResume()方法。按Back键返回到桌面,先后执行onPause()->onStop()->onDestroy()方法。保存Activity状态参数当系统该内存不足时,或者调用onPause()、onStop()方法时,Activity在内存中的实例可能会被回收,再次回到该Activity时它包含的数据将会丢失。为了解决这个问题,系统提供了onSaveInstanceState()和onRestoreInstanceState()方法,分别保存Activity实例状态和恢复实例状态数据。onSaveInstanceState()onSaveInstanceState()的调用原则:如果是系统而不是用户销毁了activity,系统必须提供一个机会让用户保存自己的数据。onSaveInstanceState()方法的调用时机包括:(1)Activity被覆盖或退居后台之后,系统资源不足将其销毁时;(2)用户改变屏幕方向即横竖屏切换时;(3)当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时。onSaveInstanceState()onSaveInstanceState()在onStop()或onPause()之前调用。重写该方法,将状态数据存储到Bundle对象中去。Bundle类似于Map,以(key,value)形式存储数据。当系统重启这个Activity时,运行onCreate()方法就可以获得Bundle保存的数据。onRestoreInstanceState()作用:恢复所保存的被系统关闭而非主动关闭的Activity的数据。调用时机:(1)Activity被覆盖或退居后台之后,系统资源不足将其销毁,然后用户又回到了此Activity;(2)用户改变屏幕方向时的重建过程中,在onStart()之后被调用。注意:onSaveInstanceState()和onRestoreInstanceState()方法不一定成对使用。(为什么?)发生了活动之间的切换,但Activity没有被销毁,则不需调用恢复数据的方法保存Activity状态参数【例3-2】创建一个Android项目SaveState,TextView在运行时显示当前时间,并把时间值保存到Bundle中。当Activity被销毁再恢复时,显示保存的时间。保存Activity状态参数publicclassMainActivityextendsActionBarActivity{privateTextViewtv1;protectedvoidonCreate(BundlesavedInstanceState){//参数为Bundle类型super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//设置布局tv1=(TextView)findViewById(R.id.textView1);//获
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上海交通大学医学院附属瑞金医院血液科博士后招聘模拟试卷附参考答案详解【综合卷】
- 临床注射用奥美拉唑致命配伍禁忌
- 2026年毛皮行业跨境电商支付解决方案
- 2026中国叶黄素酯行业并购重组与资本运作模式分析
- 2026欧洲新能源开发行业供需调研与发展投资评估报告规划分析文档
- 2026中国物流碳足迹测算方法与减排技术路线图报告
- 2026中国海洋工程装备制造能力与国际市场开拓战略
- T-CEEIA 1234-2025 中文版(电动汽车液冷充电电缆技术规范)
- 2026中国文化创意与艺术品行业市场供需分析及投资评估全面规划报告
- 计算机组装与维护模拟试题及答案
- csco非小细胞肺癌诊疗指南2025电子版
- 智能供配电毕业论文
- 色素性青光眼治疗及护理
- 基于核心素养的2027年高考英语一轮复习备考策略
- 《医学免疫学》人卫第9版教材
- 妇产科规培教学课件
- 《内河电子航道图工程技术标准》
- 羽绒服培训课件
- 肩关节脱位影像课件
- T-GDAEM 5-2025 水质 六溴环十二烷的测定 高效液相色谱-三重四极杆质谱法
- 病房改造及能力提升项目建设方案
评论
0/150
提交评论