版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android开发环境的搭建小结和讨论03搭建Android开发环境任务实施02目录Android开发环境概述0101
Android开发环境概述Android开发环境概述原生态开发使用Google公司开发的AndroidStudio集成开发工具PC电脑搭建开发环境,开发程序部署到模拟器或者真Android机上
Android开发环境概述Android开发环境概述2.AndroidStudio开发工具搭建Android开发环境所需软件及工具1.JavaJDKAndroid开发环境概述3.Android内核SDK开发包02搭建Android开发环境任务实施搭建Android开发环境任务实施1.JDK下载(jdk-8u202-windows-x64.exe)
一、Java下载安装配置搭建Android开发环境任务实施2.JavaJDK安装
一、Java下载安装配置运行JDK安装包程序,把JDK和JRE安装在统一的路径JDK:
C:\Android\Java\jdk1.8.0_202JRE:C:\Android\Java\jre1.8.0_202搭建Android开发环境任务实施
一、Java下载安装配置3.JDK配置创建环境变量:JAVA_HOMEC:\Anroid\Java\jdk1.8.0_202创建系统变量:CLASSPATH.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar系统环境变量Path添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin搭建Android开发环境任务实施
一、Java下载安装配置4.测试Java是否安装配置成功控制台输入命令:java-version搭建Android开发环境任务实施1.下载AndroidStudio
二、AndroidStudio下载安装配置AndroidStudio4.0搭建Android开发环境任务实施2.安装AndroidStudio二、AndroidStudio下载安装配置(1)
运行安装包(2)选择安装模块搭建Android开发环境任务实施2.安装AndroidStudio二、AndroidStudio下载安装配置(3)选择安装路径(4)选择安装菜单文件夹搭建Android开发环境任务实施2.安装AndroidStudio二、AndroidStudio下载安装配置(5)开始安装(6)安装完成后,启动AndroidStudio搭建Android开发环境任务实施2.安装AndroidStudio二、AndroidStudio下载安装配置(7)选择不导入设置(8)选择Custom自定义安装搭建Android开发环境任务实施2.安装AndroidStudio二、AndroidStudio下载安装配置(9)选择JRE安装的路径(10)选择默认样式搭建Android开发环境任务实施3.安装SDK二、AndroidStudio下载安装配置(1)SDK组件安装(2)模拟器设置搭建Android开发环境任务实施3.安装SDK二、AndroidStudio下载安装配置(3)确认设置(4)从网络下载SDK搭建Android开发环境任务实施3.安装SDK二、AndroidStudio下载安装配置(5)下载完成搭建Android开发环境任务实施4.创建模拟器二、AndroidStudio下载安装配置(1)启动AndroidStudio,选择Configure按钮(2)弹出的下拉框中,选择AVDManager项搭建Android开发环境任务实施4.创建模拟器二、AndroidStudio下载安装配置(3)点击CreateVirtualDevice(4)选择设备及对应的型号搭建Android开发环境任务实施4.创建模拟器二、AndroidStudio下载安装配置(5)选择要使用的虚拟机搭建Android开发环境任务实施4.创建模拟器二、AndroidStudio下载安装配置(6)选择下载系统镜像版本(7)配置虚拟机搭建Android开发环境任务实施4.创建模拟器二、AndroidStudio下载安装配置(8)启动虚拟机03小结及讨论EventBus框架小结及作业1、介绍了Android开发环境使用的软件和工具;2、搭建Android开发环境的步骤。
小结讨论我们已经把Android开发环境搭建好了并且配置了一个内置的模拟器,大家尝试一下如何安装夜神、雷电、Genymotion等第三方模拟器?THANKYOU线性布局的实现教学内容、教学重点、教学难点本视频教学内容:线性布局介绍及其实现方法。教学难点:了解并掌握线性布局的结构。教学重点:理解线性布局中重要属性的选择与使用。实现方法02目录线性布局介绍01案例演示03小结及讨论0401线性布局介绍线性布局介绍线性布局由LinearLayout类来表示,将容器里的控件一个挨一个地排列起来。排列方向只有两种:水平排列和垂直排列。通过其android:orientation属性来设置。
线性布局概述线性布局介绍当添加某一控件后,宽度超过父容器时,即该控件能显示部分,但无法完整显示时,该控件会被压缩,从而完全显示,而再添加其他控件时,将不会显示该控件。高度亦如此。
线性布局概述02实现方法实现方法2.布局内添加两个EditText,一个Button三个控件;1.使用<LinearLayout></LinearLayout>标签对,并设置宽度、高度、方向属性;开发步骤3.设置3个控件ID、宽高、文本显示等属性;03案例演示案例演示该程序为一个线性布局的登录界面。显示请输入用户名,密码,加上一个登录按钮。案例说明案例演示主界面05小结及讨论线性布局小结及作业1、Android中的实现线性布局的方法;2、线性布局中排列方向属性设置。
小结讨论在本案例基础上,编写一个使用嵌套的线性布局实现演示案例。THANKYOU表格布局的实现教学内容、教学重点、教学难点本视频教学内容:表格布局介绍及其实现方法。教学难点:了解并掌握表格布局的结构。教学重点:理解表格布局中重要属性的选择与使用。实现方法02目录表格布局介绍01案例演示03小结及讨论0401表格布局介绍表格布局介绍表格布局(TableLayout)指以行和列的形式对控件的排列方式进行管理。在表格布局中,通过添加TableRow来添加表格行,TableRow本身也是容器,可以添加其他控件,每添加一个控件,相对于该行添加了一列。
表格布局概述表格布局介绍表格布局中所有列的宽度都一致,列的宽度由该列中最宽的那个单元决定,整个表格布局的宽度则取决于父容器的宽度。
表格布局概述表格布局介绍android:collapseColumns:隐藏指定的列,其值为列所在的序号,从0开始,如果需要隐藏多列,可用逗号隔开这些序号。android:shrinkColumns:收缩指定的列以适合屏幕,使整行能够完全显示不会超出屏幕。
表格布局常见属性02实现方法实现方法2.一个控件占据一行,共设置三行,用户名行、密码行及按钮行;1.使用<TableLayout></TableLayout>标签对,并设置宽度、高度属性;开发步骤3.设置3行控件的ID、宽高、文本显示等属性。03案例演示案例演示该程序为一个表格布局的登录界面。显示请输入用户名,密码,加上一个登录、注册按钮。案例说明案例演示主界面05小结及讨论表格布局小结及作业1、Android中的实现表格布局的方法;2、表格布局中排列方向属性设置。
小结讨论在本案例基础上,编写一个使用嵌套的表格布局实现演示案例。THANKYOUAlertDialog的实现教学内容、教学重点、教学难点本视频教学内容:Android中的对话框、AlertDialog简介及实现方法。教学难点:了解Android中对话框的种类及其作用;掌握实现AlertDialog的方式。教学重点:了解AlertDialog内置的Builder类方法并选择合适的方法实现定制化的对话框。实现方法02目录AlertDialog介绍01案例演示03小结及讨论0401AlertDialog介绍AlertDialog介绍对话框是漂浮在Activity之上的小窗口,此时,Activity会失去焦点,而对话框会获取焦点。对话框通常用于通知,它会临时打断用户,执行一些与应用程序相关的小任务,例如任务执行进度或登录提示等。
AlertDialog概述AlertDialog介绍AlertDialog:警示框,功能最丰富、应用最广的对话框,该对话框可以包含0~3个按钮,或者是包含复选框或单选按钮的列表。ProgressDialog:进度对话框,主要用于显示进度信息,以进度环或进度条的形式显示任务执行进度;4种主要的对话框AlertDialog介绍DatePickerDialog:日期选择对话框,允许用户选择日期;TimePickerDialog:时间选择对话框,允许用户选择时间。4种主要的对话框AlertDialog介绍AlertDialog:是Dialog的子类,它能创建大部分用户交互的对话框,也是系统推荐的对话框类型。
AlertDialog简介02实现方法实现方法2.调用AlertDialog.Builder方法为对话框设置图标、标题、内容等;1.创建AlertDialog.Builder对象,该对象是AlertDialog的创建器;
实现步骤4.调用AlertDialog的show()方法显示对话框。3.调用AlertDialog.Builder的create()方法创建AlertDialog对话框;实现方法
Builder内部类方法方法名作用publicBuildersetTitle设置对话框标题publicBuildersetMessage设置对话框内容publicBuildersetIcon设置对话框图标publicBuildersetPositiveButton添加肯定按钮(Yes)publicBuildersetNegativeButton添加否定按钮(No)publicBuildersetNeutralButton添加普通按钮注意:很多方法的返回类型都是Builder类型,Builder对象每调用一个方法就是为对话框添加一些内容,是对对话框的不断完善,调用方法就是构造对话框的过程,每次返回的都是已构建好的对话框。03案例演示案例演示该程序在主界面设置三个按钮,一行对应一个按钮;实现3个按钮对应点击事件:提示对话框、单选对话框、复选(列表)对话框。案例说明案例演示2.设置3行控件的ID、宽高、文本显示等属性;1.使用<LinearLayout></LinearLayout>标签对,在主界面设置三个按钮,一行对应一个按钮;开发步骤3.3个按钮对应点击事件:提示对话框、单选对话框、复选(列表)对话框。案例演示主界面案例演示提示对话框案例演示单选对话框案例演示复选对话框05小结及讨论AlertDialog小结及作业1、Android中的4种主要对话框;2、使用AlertDialog.Builder内部类构建对话框。
小结讨论实现一个简单提示对话框
THANKYOUAndroid高级用户界面
设计--Fragment教学内容、教学重点、教学难点本视频教学内容:Fragment特点优势介绍;实现Fragment;Fragment生命周期。教学难点:了解Fragment使用场合;掌握实现Fragment的方式。教学重点:理解Fragment生命周期。实现方法02目录Fragment介绍01案例演示03小结及讨论0401Fragment介绍Fragment介绍Android运行在各种各样的设备中,有小屏幕的手机,还有大屏幕的平板,电视等。同样的界面在手机上显示可能很好看,在大屏幕的平板上就未必了,手机的界面放在平板上可能会有过分被拉长、控件间距过大等情况。针对屏幕尺寸的差距,Fragment的出现能做到一个App可以同时适应手机和平板。这就是为什么要有Fragment的原因。
Fragment使用场合Fragment介绍Fragment是一种可以嵌入在Activity当中的UI片段用来组建Activity界面的局部模块,也可以说一个Actiivty界面可以由多个Fragment组成。其行为与Activity很相似,有自己对应的布局(包含具体的View),它有自己的生命周期,接收自己的输入事件,并且可以从运行中的activity中添加或移除一个Fragment必须总是嵌入在一个activity中,同时Fragment的生命周期受activity的影响。
Fragment的特点Fragment介绍onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。
onCreate():Fragment被创建时调用。
onCreateView():创建Fragment的布局。
onActivityCreated():当Activity完成onCreate()时调用。
Fragment生命周期Fragment介绍onStart():当Fragment可见时调用。
onResume():当Fragment可见且可交互时调用。
onPause():当Fragment不可交互但可见时调用。
onStop():当Fragment不可见时调用。
onDestroyView():当Fragment的UI从视图结构中移除时调用。
Fragment生命周期Fragment介绍onDestroy():销毁Fragment时调用。
onDetach():当Fragment和Activity解除关联时调用。
Fragment生命周期Fragment介绍
当一个Fragment被创建的时候,需调用以下生命周期方法:onAttach(),onCreate(),onCreateView(),onActivityCreated()。
当这个Fragment对用户可见的时候,需调用:onStart(),onResume()。
Fragment生命周期解析Fragment介绍
当这个Fragment进入后台模式需调用:onPause(),onStop()。
当这个Fragment被销毁或者是持有它的Activity被销毁了,调用:onPause(),onStop(),onDestroyView(),onDestroy()onDetach()。
Fragment生命周期解析02实现方法Fragment实现方法FragmentManager宿主环境指的是其管理类,通常在Activity中通过接口getSupportFragmentManager或者getFragmentManager获得FragmentManager对象,可以认为Activity是FragmentManager的宿主环境类。FragmentManager宿主环境类状态变化时(如onStart,onResume,onStop等回调),FragmentManager的状态也随之更新(FragmentManager类有一个成员变量mCurState来记录当前状态),同时会同步其管理的所有Fragment的状态。从用户的角度来看,FragmentManager的宿主环境类管理了一系列Fragment,并且Fragment随着FragmentMannager的宿主环境类的状态变化而变化。
三者间的关系如下图所示:FragmentManager宿主环境Fragment实现方法FragmentManager宿主环境FragmentManager初始化
FragmentManager必须初始化完成,才能管理Fragment。这里的初始化完成指的是通过构造器创建FragmentManager对象以后,调用其attach方法。
如果FragmentManager是宿主类是Activity,可以在Activity中使用getFragmentManager获得FragmentManager对象。Activity类中存在成员变量(Activity。java)。03案例演示案例演示新建一个左侧Fragment的布局left_fragment.xml,再新建一个右侧Fragment的布局right_fragment.xml,点击左侧布局的按钮,右侧布局切换成另一个新布局。本案例采用系统自带的样式文件实现Fragment列表视图。案例说明案例演示2。获取FragmentManager,在Activity中可以直接调getSupportFragmentManager()方法获取;1。创建待添加Fragment的实例;动态添加Fragment的步骤3。开启一个事务,通过调用beginTransaction()方法开启。4。向容器内添加或替换Fragment。提交事务,调用commit()方法来完成。案例演示主界面案例演示点击切换后主界面05小结及讨论Fragment小结及作业1、总结案例中Fragment生命周期;2、Fragment使用场合。
小结讨论很多平板应用采用的都是双页模式,那么怎样才能在运行时判断程序应该是使用双页模式还是单页模式呢?
THANKYOUAndroid用户界面
设计--ListView教学内容、教学重点、教学难点本视频教学内容:列表视图;实现ListView;Adapter适配器。教学难点:了解列表视图的实现原理及4种列表控件;掌握实现ListView的方式。教学重点:理解Adapter适配器的概念并懂得正确使用Adapter为列表添加数据。实现方法02目录ListView介绍01案例演示03小结及讨论0401ListView介绍ListView介绍列表视图是Android系统中比较常用的界面控件,它主要包含两方面信息:数据源和每项数据显示的格式。
ListView概述ListView介绍这两者之间通过适配器(Adapter)建立关联,适配器充当着媒人的角色,在为数据源与每项数据显示的格式介绍亲事之前,媒人需要对双方都要有所了解,因此创建Adapter时需传入数据源和每项数据显示的格式对应的布局文件作为参数。
ListView概述ListView介绍通过列表控件的setAdapter()方法将列表与数据关联起。
ListView概述ListView介绍AutoCompleteTextViewSpinnerListViewExpandableListView4种列表控件ListView介绍
AutoCompleteTextView运行效果图ListView介绍
Spinner运行效果图ListView介绍
复杂列表视图运行效果图ListView介绍
扩展下拉列表运行效果图02实现方法ListView介绍Adapter适配器案例演示SimpleAdapter:是一个简单的Adapter,它可以将静态的数据关联到XML布局文件中的某个View控件上,可以将列表中的数据指定为Map对象的集合。Map对象中的每一个键对应于列表中的每一项的一部分数据。而Map对象则包含了每一项的所有数据。也需要在XML文件中定义每一项数据的显示视图(控件),并且要与Map对象中的关键字(键)建立一一映射关系。
常用的AdapterListView介绍常用的Adapter03案例演示案例演示ListView允许用户通过上下滑动来将屏幕外的数据滚动到屏幕内,同时屏幕内原有的数据滚动出屏幕,从而显示更多的数据内容。本案例采用系统自带的样式文件实现ListView列表视图。案例说明实现方法2.通过合适的适配器Adapter为ListView添加数据;1.在布局文件中添加一个ListView控件;以控件形式实现ListView思考:
是否还有其他方法?可以用Activity类自身继承ListView来实现列表!3.将Adapter与ListView匹配:listView.setAdapter(adapter)。案例演示主界面05小结及讨论ListView小结及作业1、Android中的列表视图;2、如何使用Adapter配置ListView内容。
小结讨论使用ArrayAdapter实现ListView。
THANKYOUAndroid用户界面
设计--RecyclerView教学内容、教学重点、教学难点本视频教学内容:RecyclerView视图概述;实现RecyclerView;RecyclerView
Adapter适配器。教学难点:了解列表视图的实现原理;掌握实现RecyclerView的方式。教学重点:理解Adapter适配器的概念并懂得正确使用Adapter为RecyclerView添加数据。实现方法02目录RecyclerView介绍01案例演示03小结及讨论0401RecyclerView介绍RecyclerView介绍RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。
RecyclerView概述RecyclerView介绍支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式;内部实现了回收机制,无需我们考虑View的复用情况;取消了onItemClick等点击事件,需要自己手动去写。
RecyclerView的特点RecyclerView介绍RecyclerView有四级缓存。包括:屏幕内缓存:在屏幕中显示的ViewHolder。缓存到mChangedScrap(缓存数据已经改变的ViewHolder)和mAttachedScrap中。屏幕外缓存:列表滑动出屏幕时,ViewHolder会被缓存。缓存到mCachedViews中。(默认大小为2。大小由mViewCacheMax决定。Recyclerview.setItemViewCacheSize(),可以设置屏幕外缓存的大小)。缓存池:屏幕外缓存的mCachedViews已满时,会将ViewHolder缓存到RecycledViewPool中。
RecyclerView缓存机制原理RecyclerView介绍RecyclerView有四级缓存。包括:屏幕内缓存:在屏幕中显示的ViewHolder。缓存到mChangedScrap(缓存数据已经改变的ViewHolder)和mAttachedScrap中。屏幕外缓存:列表滑动出屏幕时,ViewHolder会被缓存。缓存到mCachedViews中。(默认大小为2。大小由mViewCacheMax决定。Recyclerview.setItemViewCacheSize(),可以设置屏幕外缓存的大小)。缓存池:屏幕外缓存的mCachedViews已满时,会将ViewHolder缓存到RecycledViewPool中。
RecyclerView优势02实现方法RecyclerView介绍Adapter适配器RecyclerView是在Android5.0版本作为support-v7的一个组件出现,高效替代了最初的ListView等列表组件。使用上实现了视图代码解耦,功能上具备强大的item复用机制,并且提供默认多种LayoutMananger用来处理多种布局。03案例演示案例演示本案例使用RecyclerView视图以瀑布流形式展示图片。案例说明实现方法2.修改activity_main.xml,绑定控件;1.在项目中导入recyclerview类库;实现RecyclerView步骤3.定义适配器Adapter,继承RecyclerView.Adapter,指定其泛型;4.使用LinerLayoutManager控制显示样式。案例演示主界面05小结及讨论RecyclerView小结及作业1、Android中的RecyclerView列表视图;2、如何使用Adapter配置RecyclerView内容。
小结讨论1、RecyclerView可以用ViewType来区分不同的item,也可以满足需求,但还是存在一些问题,比如:1,在item过多逻辑复杂列表界面,Adapter里面的代码量庞大,逻辑复杂,后期难以维护。2,每次增加一个列表都需要增加一个Adapter,重复搬砖,效率低下。如何改善?
THANKYOUAndroid事件处理登录功能点击事件任务实施03Android事件监听02任务小结与讨论04目录Android事件概述0101Android事件概述Android事件概述事件监听器Android组件对象上发生相应的操作时,Android框架会调用界面事件的公开回调方法Android事件概述事件处理程序02Android事件监听Android事件监听外部类事件监听匿名内部类事件监听Android事件监听有四种方式接口事件监听布局绑定事件监听Android事件监听设置Button的监听器初始化控件匿名内部类事件监听Android事件监听外部类的使用定义外部类外部类事件监听Android事件监听调用setOnClickListener,参数是当前this对象Activity这个类实现onClickListener这个接口接口事件监听Android事件监听(1)在布局文件Button按钮组件添加onClick属性布局绑定事件监听Android事件监听(2)布局文件对应Activity自定义一个方法,传入一个View组件作为参数布局绑定事件监听03登录功能点击事件任务实施登录功能点击事件任务实施1.创建布局文件实现步骤登录功能点击事件任务实施2.初始化MainActivity实现步骤登录功能点击事件任务实施3.通过匿名类实现登录按钮的点击事件实现步骤04任务小结与讨论任务小结及作业1、Android事件基本知识;2、Android事件监听四种实现方式及综合应用。
小结讨论参照任务实现,分别用其它三种方式分别实现登录功能登录按钮的点击事件?THANKYOUActivity基础
Activity的生命周期02目录什么是Activity01Activity基础小结及讨论0301什么是Activity什么是ActivityActivity是Android的四大组件之一,它的中文意思是活动。Activity为用户提供可视化界面,用户可以它用来交互完成某项任务,例如拨号、拍照、发送email、看地图等。同时每一个activity被给予一个窗口,在上面可以绘制用户接口。02Activity的生命周期Activity的生命周期Activity的生命周期主要包含7个方法(onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart)和6个状态(Created、Started、Resumed、Paused、Stopped、Destroyed)。完整生命周期从回调onCreate方法开始,到回调onDestroy方法结束。可见生命周期从回调onStart方法开始,到回调onStop方法结束。前台生命周期从回调onResume方法开始,到回调onPause方法结束。03Activity基础小结及讨论Activity与Service交互小结及作业1、什么是Activity;2、Activity的生命周期
小结讨论Activity的生命周期的7个方法和6个状态分别是什么?THANKYOUActivity与IntentIntent的常用方法03Intent的七个属性02目录Intent的概述01Activity与Intent小结及作业0401Intent的概述Intent的概述Intent被称之为意图,它是一种将要被执行的动作进行抽象的描述,Intent可以实现在不同组件之间的通讯。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity、Service和broadcast之间的交互操作。如使用startActivity(Intent)/startActivityForResult(Intent)启动一个Activity,startService(Intent)/bindService(Intent)启动一个Service。Intent在Android应用中可根据开启目标组件方式的不同分为显示Intent和隐式Intent。02Intent的七个属性Intent的七个属性1、ComponentName(组件名称):由组件所在的应用程序配置文件中设置包名+组件的类名组成。2、Action(动作):代表Intent要完成的一个抽象“动作”。3、Category(类别):为Action提供额外的附加类别信息。4、Data(数据):用于向Action属性提供操作的数据。5、Extras(额外):用于多个Action之间的数据交换。6、lags(标记):表示不同来源的标记,用于Android如何启动Activity及启动完成后如何对待。7、Type(MIME类型):用于指定Data所制定的Uri对应MIME类型。03Intent的常用方法174Intent的常用方法方法描述publicvoidstartActivity(Intentintent)启动一个Activity,并通过Intent传递数据Public
voidstartActivityForResult(Intentintent,intrequestCode)启动并接收另一个Activity返回的数据PublicIntentgetIntent()返回启动当前Activity程序的IntentPublicvoidfinish()自动返回之前的Activity程序PublicvoidonActivityResult(intRequestCode,intResponseCode,IntentData)当需要接收Intent返回数据并对其结果进行处理时,重写该方法175Intent的常用方法1.显式Intent显式Intent可以直接通过名称开启指定的目标组件,每次开启的目标组件只有一个,如下代码所示。Intentintent=newIntent(this,LoginActivity.class);创建一个Intent对象,其中括号中的第1个参数为Context表示当前的Activity对象,第2个参数LoginActivity表示要启动的目标ActivitystartActivity(intent);调用Activity的startActivity启动目标组件。176Intent的常用方法2.隐式Intent隐式Intent不直接指定组件名称,而是通过指定Intent的action和category等属性,启动组件时系统通过AndroidManifest.xml文件中的Intent-filter逐一匹配目标组件,当出现多个满足要求的组件时则弹出选择启动组件的对话框。177Intent的常用方法隐式Intent示例Intentintent=newIntent();Intentintent=newIntent();
intent.setAction("ent.START");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
AndroidManifest.xml文件配置信息<activityandroid:name=".LoginActivity">
<intent-filter>
<actionandroid:name="ent.START"/>
<categoryandroid:name="ent.category.DEFAULT"/>
</intent-filter>
</activity>
178Intent的常用方法常用隐式Intent的Action动作常量Intent常量动作名称常量值描述ACTION_MAINent.action.MAINApp启动时的入口ACTION_VIEWent.action.VIEW显示数据ACTION_EDITent.action.EDIT显示可编辑的数据ACTION_SENDent.action.SEND分享内容ACTION_CALLent.action.CALL直接拨号ACTION_DIALent.action.DIAL准备拨号ACTION_SENDTOent.action.SENDTO发送短信ACTION_ANSWERent.action.ANSWER接听电话ACTION_SEARCHent.action.SEARCH导航栏SearchView的搜索动作ACTION_CHOOSERent.action.CHOOSER显示一个Activity选择器ACTION_GET_CONTENTent.action.GET_CONTENT选择返回的数据类型04Activity与Intent的小结Activity与Intent小结及作业1、了解Intent的属性;2、Intent的常用方法。
小结讨论如何区分显示Inten、隐式Intent?THANKYOUActivity的数据传递Activity的数据回传02目录Intent数据的传递01Activity的数据传递小结0301Intent数据的传递Intent数据的传递创建Intent对象Intentintent=newIntent(this,LoginActivity.class);使用Intent发送数据的两种方式(1)data:使用setData()方法传递Uri类型的数据如:intent.setData(Uri.fromFile(newFile("/sdcard/image.jpg")));intent.setData(Uri.parse(""));(2)extras:使用Key-Value对传递数据intent.putExtra(Stringkey,Stringvalue);传递单个数据intent.putExtra(Stringname,String[]value);传递字符串数组intent.putExtras(Bundlebundle);传递多个不同类型的数据Intent数据的传递使用Intent接收数据的两种方式(1)data:使用getData()方法接收Uri类型的数据,如:UrilocationUri=intent.getData();(2)extras:接收Key-Value对数据Stringvalue=intent.getStringExtra("key");Bundlebundle=intent.getExtras();02Activity的数据回传Activity的数据回传Activity数据回传的流程如下图5-4-1所示MainActivityonActivityResult()接收处理回传数据
LoginActivity调用startActivityForResult()启动ActivitysetResult()回传数据图示5-4-1Activity数据回传Activity的数据回传数据回传操作内容:在MainActivity中的主要内容:1、创建Intent对象2、调用startActivityForResult(Intentintent,intRequestCode)启动另一个Activity3、重写onActivityResult()方法接收并处理回传数据在LoginActivity中的主要内容1、创建一个Intent对象2、调用putExtra()传递回传的数据3、设置返回结果4、调用finish()关闭这个ActivityActivity的数据回传数据回传案例Activity的数据回传数据回传案例主要代码Intentintent=newIntent(this,LoginActivity.class);
startActivityForResult(intent,0x11);
protectedvoidonActivityResult(int
requestCode,int
resultCode,@NullableIntentdata){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode==0x11&&responseCode==0x11){Bundlebundle=data.getExtras();intimage=bundle.getInt(“imageId”);img.setImageResource(image)
}
}
Intentintent=newIntent();bundle.putInt(“imageId”,iamges[i]);
intent.putExtra(bundle);
setResult(0x11,intent);
finish();
03Activity的数据传递小结及作业Activity的数据传递小结及作业1、掌握Intent数据的传递;2、掌握Activity的数据回传。
小结讨论Activity的数据回传的主要不止包括哪些?THANKYOUActivity的启动模式栈内复用模式03栈顶复用模式02全局唯一模式04目录标准启动模式01小结与思考0501标准启动模式标准启动模式standard:标准启动模式(默认启动模式),每次都会启动一个新的activity实例,Activity的onCreate、onStart、onResume方法都会被调用,在该模式下,启动的Activity会依照启动顺序被依次压入Task中。02栈顶复用模式栈顶复用模式,该模式下如果Activity实例位于当前任务栈顶,就重用栈顶实例,并回调该实例onNewIntent()方法,否则创建新的实例。singleTop:栈顶复用模式03栈内复用模式栈内复用模式,该模式启动的Activity只会存在相应的Activity的taskAffinit任务栈中,同一时刻系统中只会存在一个实例。如果栈内已存在该实例则直接使用,同时清理当前Task任务栈该实例之上的所有Activity,并回调onNewIntent()方法。singleTask:栈内复用模式04全局唯一模式全局唯一模式,在这种模式下启动的Activity独自占用一个Task任务栈,同一时刻系统中只会存在一个实例,如果栈中已存在该实例则直接使用,并回调onNewIntent()方法。singleInstance:全局唯一模式05小结与思考小结与思考1、Activity的四种启动模式
小结讨论思考栈顶复用和栈内复用模式的区别?THANKYOUFragment基础Fragment的生命周期02目录Fragment概念01生命周期流程中各方法的作用03小结与思考0401Fragment概念Fragment概念Fragment:称之为碎片也可以看作是一个小型的Activity,但是Fragment并不能单独使用,它需要嵌套在Activity中使用。虽然Fragment拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity被销毁了,则Fragment也会跟着销毁02Fragment的生命周期Fragment和Activity一样都有自己的生命周期,Fragment生命周期如右图所示Fragment的生命周期03生命周期流程中各方法的作用生命周期流程中各方法的作用onInfalte()该方法只在直接用标签在布局文件中定义的时候才会被调用onAttach()当该Fragment添加到Activity中会回调,只会回调一次onCrate()创建Fragment时回调,只会回调一次onCreateView()每次创建、绘制该Fragment的View组件时回调该方法onActivityCreated()当Fragment所在的Activity被启动完成后回调该方法onStart()动Fragment时被回调,此时Fragment可见onResume()恢复Fragment时被回调,获取焦点时回调onPause()暂停Fragment时被回调,失去焦点时回调onStop()停止Fragment时被回调,Fragment不可见时回调onDestroyView()销毁与Fragment有关的视图,但未与Activity解除绑定onDestroy()销毁Fragment时被回调onDetach()与onAttach相对应,当Fragment与Activity关联被取消时调用04小结与思考小结与思考Activity的数据传递小结及作1、了解Fragment的概念;2、掌握Fragment的生命周期。
小结讨论思考Fragment的生命周期与Activity的异同点?THANKYOUFragment与Activity的通信Activity向Fragment传递数据03动态添加Fragment02Fragment向Activity传递数据04目录Activity与Fragment通信方式01小结与思考0501Activity与Fragment通信方式Activity与Fragment通信方式Activity与Fragment之间通信,以及同属于一个Activity的Fragment之间的通信方式有以下六种:1、通过构造器2、通过广播3、通过EventBus4、通过接口回调5、通过ViewModel6、通过Handler02Activity动态添加FragmentActivity动态添加Fragment动态添加Fragment的步骤:创建需要创建一个Fragment的实例对象获取FragmentManager(Fragment管理器)的实例开启FragmentTransaction(事务)向Activity的布局容器(一般为FrameLayout)中添加Fragment通过commit()方法提交事务03Activity向Fragment传递数据226Activity向Fragment传递数据Activity传值给Fragment的方法:方法一:(Fragment是动态加载的)在activity中建一个bundle,把要传的值存入bundle,然后通过fragment的setArguments(bundle)传到fragment,在fragment中,用getArguments接收
在Activity中编写以下代码:
在Fragment中编写:227Activity向Fragment传递数据Activity传值给Fragment的方法:方法二:(Fragment是静态加载的)在Fragment中设置set,get方法,在activity中获取Fragment对象,fragment.setValue(),Fragment中getValue()
04Fragment向Activity传递数据Fragment向Activity传递数据Fragment向Activity传值定义一个回调接口,让包含该Fragment的Activity实现该回调接口,Fragment获取该接口对象,发送数据。步骤如下:fragment中准备回调接口接口中声明传值的回调方法在fragment中定义变量privateMyListenermyListener重写fragment中的onAttach()方法:listener=(MyLisener)getActivity();fragment触发事件时回传值Activity中实现回调接口重写回调方法获取回传的值并显示05小结与思考小结与思考1、了解Activity与Fragment的通信方式;2、Activity与Fragment间的数据传递。
小结讨论思考Activity与Fragment之间的数据双向传递是怎么样实现的?THANKYOU服务的基本概念如何创建服务03服务的两种状态02目录服务的概念0101服务的概念服务的概念
Service是Android的四大组件之一,Service没有可视化视图组件,同时Service不是线程,也不是在主线程外的方法。它是一种在后台运行而无需与用户直接交互的组件,主要用于后台运行及跨进程访问
Service一般由Activity启动,但是不受Activity的生命周期的影响,它拥有自己的生命周期,适用于长期运行或重复的操作02服务的两种状态服务的两种状态Started:Android的应用程序组件如活动,通过startService()启动了服务,则服务是Started状态。一旦服务启动,则它可以在后台无限期运行,即使启动服务的组件已经被销毁。通过startService()方法启动的服务,需要自身调用stopSelf()方法或者其他组件调用stopService()方法时服务才能停止服务的两种状态
Bound:当Android的应用程序组件通过bindService()绑定了服务,则服务是Bound状态。Bound状态的服务提供了一个客户服务器接口来允许组件与服务进行交互,如发送请求、获取结果、跨进程通信等。通过bindService()方法启动的服务,需要调用onUnbind()方法解除绑定之后服务才会被销毁。03如何创建服务241如何创建服务Service通过Context.startService()或Context.bindService()创建。服务需在AndroidManifest.xml注册,如下代码所示。<serviceandroid:name=".MyService"android:enabled="true"android:exported="true"></service>intent=newIntent(this,MyService.class);04服务的基本概念
小节及讨论服务的基本概念小结及讨论1、服务的两种状态2、如何创建服务
小结讨论Started状态的服务如何停止?THANKYOU服务的生命周期Service生命周期验证03Service生命周期函数解析02目录Service生命周期0101Service生命周期Service生命周期Service与Activity类似,也拥有自己的生命周期函数,在不同的时刻,系统会调用对应的Service生命周期函数,与Activity声明周期相比,Service的生命周期则更加简单02Service生命周期
函数解析Service生命周期函数解析onCreate():当Service第一次创建时被系统调用
onStartCommand():当通过startService()启动Service时被调用onBind(intent):必须实现的方法,返回一个绑定的接口给
Service,当通过bindService()启动Service时被调用onDestroy():当调用stopService()停止服务时被系统调用03Service生命周期验证252Service生命周期验证①编写一个服务类继承Service类,重写onBind()和onStartCommand()②在AndroidManifest.xml中,使用<service>标签注册服务③启动/绑定服务④停止/解绑服务253Service生命周期验证publicclassMyServiceextendsService{privatefinalStringTAG="Myservice";@OverridepublicIBinderonBind(Intentintent){Log.i(TAG,"onBind方法被调用!");returnnull;}@OverridepublicvoidonCreate(){Log.i(TAG,"onCreate方法被调用!");super.onCreate();}@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){Log.i(TAG,"onStartCommand方法被调用!");returnsuper.onStartCommand(intent,flags,startId);}@OverridepublicvoidonDestroy(){Log.i(TAG,"onDestory方法被调用!");super.onDestroy();}}<serviceandroid:name=".Myservice"><intent-filter><actionandroid:name="com.jay.example.service.My_service"/></intent-filter></service>publicclassMainActivityextendsActivity{
privateButtonstart;privateButtonstop;
@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
start=(Button)findViewById(R.id.btnstart);stop=(Button)findViewById(R.id.btnstop);//创建启动Service的Intent,以及Intent属性finalIntentintent=newIntent();......05服务的生命周期
小结及讨论服务的生命周期小结及讨论1、Service生命周期函数2、验证Service生命周期
小结讨论Service生命周期与Activity生命周期相比有什么区别?THANKYOUActivity与Service的交互前台服务介绍03Activity与Serice交互流程02前台服务的实现04目录Activity与Service交互介绍0101Activity与Service交互介绍Activity与Service交互介绍在日常的应用中Service与Activity之间的通信是非常普遍的,例如我们启动一个下载的后台Service,同时知道Service中下载任务的进度。则需要使用到Service与Activity之间的通信,Service与Activity之间交流的媒介就是Service中的onBind()方法及返回一个自定义的Binder对象。02Activity与Serice交互流程Activity与Serice交互流程Service与Activity的基本交互流程:在自定义Service中,自定义一个Binder类,将需要暴露的方法都写到该类中;并实例化自定义Binder类,重写onBind()方法,返回Binder对象。Activity类中实例化一个ServiceConnection对象,重写onServiceConnected()方法,获取Binder对象,调用相关方法。ServiceConnection回调接口用于接收Connected和Disconnected事件。bindService是异步执行的,必须通过响应onServiceConnected事件获取Service实例,然后才能执行一些初始化工作。03前台服务介绍264前台服务
前台服务是在系统内存不足的时候不允许系统杀死的服务。虽然通常情况下Service一般都是运行在后台,但是Service的系统优先级是比较低,当系统内存不足的时候,就有可能回收正在后台运行的Service,对于这种情况我们可以使用前台服务,从而让Service不被系统杀死,例如状态栏显示的Notification。
04前台服务的实现前台服务的实现实现步骤:自定义一个Service服务类在Service类中重写onCreate()方法在onCreate()方法中根据自己的需求编写Notification调用startForeground方法05Activity与Service交互小结及讨论Activity与Service交互小结及作业1、了解交互的流程;2、前台服务的实现。
小结讨论如何使用前台服务实现一个通知栏?THANKYOU广播机制基础广播类型03广播机制实现流程02小结与思考04目录广播机制概念0101
广播机制概念广播机制概念Broadcast是android中的四大组件之一,是在组件之间传播数据(Intent)的一种机制,当系统之间需要传递信息时,不是通过按钮事件触发,而是由系统通过系统调用引发事件。广播的发送者和接收者事先是不需要知道对方的存在的。这样带来的好处便是,系统的各个组件可以松耦合地组织在一起,这样系统就具有高度的可扩展性,容易与其它系统进行集成。Android的广播机制是在Binder进程间通信机制的基础上实现的,内部基于消息发布和订阅的事件驱动模型,广播发送者负责发送消息,广播接收者需要先订阅消息,然后才能收到消息。02广播机制实现流程广播机制实现流程①广播接收者是通过Binder机制在AMS(ActivityManagerService)中进行注册②广播发送者是通过Binder机制向AMS发送广播。③
AMS查找符合相应条件(IntentFilter/Permission)的广播接收者(BroadcastReceiver),将广播发送到相应的消息循环队列中。④执行消息循环时获取到此广播,会回调广播接收者(BroadcastReceiver)中的onReceive()方法并在该方法中进行相关处理。03广播类型广播类型①普通广播Normalbroadcast:异步执行的广播,所有的广播接收器都会在同一时间接收到,没有先后顺序。②有序广播OrderedBroadcast:同步执行的广播,同一时刻只有一个广播接收器接收到,有先后顺序,即优先级。04广播机制
小结及讨论广播机制小结及作业1、了解广播机制流程;2、两种广播类型。
小结讨论为什么要有广播的应用?THANKYOU广播接收器与自定义自定义广播介绍03BroadcastReceiver的开发使用流程02目录广播接收器介绍01自定义广播的实现流程0401
广播接收器介绍广播接收器介绍BroadcastReceiver就是广播接收器,属于Android四大组件之一。其本质上是一个监听器,监听收到的广播来进行处理相应操作。广播接收器的基本特性:①广播接收器的生命周期短,在接收到广播的时候创建,在onReceive()方法结束之后销毁。②广播接收器中不建议做耗时的任务。③广播接收器中也不要创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为了空进程,很容易被系统杀掉。02BroadcastReceiver的开发使用流程BroadcastReceiver的开发使用流程①创建BroadcastReceiver的子类,重写onReceive()方法:广播接收器接收到相应广播后,会自动回调onReceive()方法②注册BroadcastReceiver对象:静态注册,在AndroidManifest.xml里通过<receive>标签声明。BroadcastReceiver的开发使用流程动态注册,调用Context.registerReceiver()注册。③发送广播将广播消息封装到Intent中,然后调用sendBroadcast()方法发送。通过IntentFilter对象过滤Intent,处理与其匹配的广播。03自定义广播介绍自定义广播介绍当系统提供的广播不能满足实际需求时,则可以自定义广播,同时需要编写对应的广播接收者。广播接收器的基本特性:①广播接收器的生命周期短,在接收到广播的时候创建,在onReceive()方法结束之后销毁。②广播接收器中不建议做耗时的任务。③广播接收器中也不要创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为了空进程,很容易被系统杀掉。04自定义广播的实现流程自定义广播的实现流程(1)创建广播接收器(2)创建一个布局添加按钮控制广播发送自定义广播的实现流程(3)创建活动Activity发送广播05小结与思考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 挖掘机驾驶员合同范本格式模板示例
- 民间借款协议书借款合同
- 食品销售代理合同范本
- 水泥砖批量订购合同
- 庆典活动服务合同
- 会计事务处理协助合同
- 产品订购合约样本
- 面料购销合约
- 股份制公司合同范本
- 热处理生产线承包合同
- DB11T 854-2023 占道作业交通安全设施设置技术要求
- 高考生物选择性必修1稳态与调节基础知识填空默写(每天打卡)
- 2022版《义务教育教学新课程标准》解读课件
- 二级公立医院绩效考核三级手术目录(2020版)
- 6人小品《没有学习的人不伤心》台词完整版
- 《个人防护用品PPE》ppt课件
- 苏州商业市场市调简析报告
- 论现代企业人力资源管理中激励机制的应用以腾讯公司为例
- CRRT治疗剂量的计算
- (完整)风景园林概论知识点,推荐文档
- 水稳施工方案(完整版)
评论
0/150
提交评论