00:00
现在我们还是一起来把昨天学的知识给他回顾一下。那我把那个昨天的课件呢,也给它打开。来先整体说一下我们昨天学过的知识,首先一个啊,不太重要,我就不说了,第一个搭建开发环境。第二个,我们要创建一个Android的应用或者项目运行。下面有四个啊,比较重要的文件目录结构。啊,这里四个好,下面呢,接着是三个应用开发的工具。后面学了一下关于尺寸的相关的概念和单位。啊,最后我们做了一个练习,在练习里面涉及到相关的一些API。啊,我们一个来说啊,在这里面呢,搭建开发环境啊,其实在我们这里面比较简单,就是第一步就是解压,我们不有一个SDK点。
01:12
是不是这个文件对吧,写它正面就有一个要求。不要,有什么呢?中文大家一定要跟着我的思路走啊。好。下面一个就是配置pass,嗯,把这两个做好,主要就这两个,其他的倒是其次的。Pass的资料我就不说了,大家自己可以去看一下。好,下面一个。在创建这个应用的时候,我们需要注意的就是首先在创建的时候需要去指定啊。SDK的版本周围什么?18。那多为18就有问题,我们的手机是不是要求最小的版本都是18呀?
02:01
但我们如果说希望低版本的手机也能装,怎么办呢?修改谁呀啊,修改功能清单文件对吧?啊清单文件啊啊清单文件改什么呢?有一个MSDK等于几啊,我们那时摆的是不等于八呀啊可以支持低版本的手机。没有问题啊。这是一些小东西啊,大家操作一下就行,下面。说几个重要的啊,文件目录结构,首先最重要的这一个。就是项目的一个目录结构。啊,它呢,首先我们来看一下,这里面有个图。就在说它的整个结构。就他。好,我们呢,把这个图给它截下来。
03:05
呃,截一个小小一点的吧,这太大了啊,把它放小一点。啊,把他了解一下。在这个地方我跟大家强调一遍,就是我们这右边呢,是相对来说是比较重要的部分。对吧,也整体上面呢,可以分为三类。啊,一个是源码相关的,一个是什么。是不是资源呢?最后是什么?功能清单啊,这一篇呢,倒是啊其次的。好,把它放大,好,我们在里面写过一个文啊笔记。嗯,大家看这个笔记里面呢,稍微有针对性一点啊,说了一些比较详细内容,大家需要把它了好好的看一下。
04:08
来,我把这里面呢去做一个。啊,表格把它复制进来,嗯。这个我给它弄一个颜色。嗯,好,下面一个呢,是应用APK的一个结构,这个呢是不太重要的。啊,大家需要的适当的了解一下,对他。啊,我们的APK实际上是一个什么呢?叫压缩包是吧。布置一下。嗯,还有一个大家需要了解的就是一个应用,它打包的一个过程。这个也需要大家去适当的去理解一下啊。
05:08
好。下面一个呢,是安卓系统,它的一个文件目录结构。啊,我们在这个课件里面也跟大家说了一下几个重要的,尤其是下面的几个。大概。啊,就他他们俩是我们以后要反复用到的。大家需要好好的去看一下啊。好,接着是我们SDK的这样一个结构,大家需要去了解一下它里面的一个结构,就它。啊里面呢,包含什么文档啊,平台啊工具啊,样码和另外一个叫什么呢?源码。这个里面都是些什么文件呢?
06:01
什么文件?源码,源码不加文件吗?对吧,而这个里面呢,都是些什么文件呢。说白了就是网页。对吧。这个网页里面是不是有我们的一些API的介绍和开发向导啊,啊,都是一些网页的组成。好,下面呢,后面我们说了三个开发调试工具,首先呢是ADB。啊。没有它了,我们的模拟器是不能跟我们的eclipse连接的。那看到啊,它里面主要包含了几个命令,大家需要去知道啊。这个蓝色的是大家需要知道的ADB线。执行他能干嘛呀,是不是进入那个他的系统的目录啊,啊这一个呢。安装对吧?啊下面这一个虽然说不是ADB的命令,大家需要去做一下啊,你的重点我们需要知道两个命令,一个ADVSHE,还有一个a DV in store,如果本身就已经有了,看啊下面去写那个AK文件的什么啊,是不是路径呢?啊后面啊有可能会碰到啊一些比如说啊is大家知道是什么。
07:28
是不是列出那个文件夹下面的一些结构啊,啊,还有一个CD,这个是以前也学过的,是不是进入啊,下一层的目录结构啊,嗯,还有我们的这一个这些呢,是大家需要去啊,咱是不是清理啊。还有一个叫CTRL加C。退出对吧,嗯。啊,这几个病例呢,大家适当的需要去操作一下,这也没有太大的一个难度啊,主要是操作性的问题。
08:01
下面一个就是DGMS,它是用于我们调第bug调试的一个工具。在这里面呢,重点是三个四个视窗。啊,日志文件浏览器设备,还有设备的什么呢?控制器啊,昨天还出了一些问题,总是控制不了啊,今天我们等会马上控制一下。啊,这几个啊,我我如果我框上红线,说明它是比较重要的啊,我故意框上红线给大家留着。嗯,大概我来试一下啊,我现在呢,启动了一个模拟器,对吧?啊好。大家一打开就要把这四窗打开的放好。好,接着我们来看一下。啊,随便写个1212吧,发个短信啊。
09:09
是不是来了一个通知啊,啊大家看。是不是有啊啊可以,但是跟大家说一个事,如果你打电话,他会可以会打通,但是呢,会断开连接。看到。是不通了对吧,连接已经就是说我的模拟器啦,跟我的eclipse啊,已经断开连接了,看是不是。那没关系,我们刚才说过,前面跟大家说过一个怎么说的。是不是可以啊啊,但是不能超过三次。超过三次肯定是不行的,大家可以试一下,除非你的电脑很牛逼啊,反正我的电脑最多不能超过三次。
10:02
可能也是这个其实还是一些模拟器它不够完善的一个问题啊。啊,这是这样一个。下面我们继续往下看啊。日志工具类。这个日志工具呢,我们后面会反复的用到。是不是断了一下电呢?这个这个这个村好像不太靠谱啊。我住在那个福苑那个小区里面就从来没停过电。好了吧。好。来啊,看着。嗯,啊。卡死了。动吗?好,来。这里面一些说明,大家都需要去看一下啊,来看下。
11:03
日志工具类,它主要有一些静态的方法来去做一些输出。啊,大家需要将log呢跟system的out进行一个简单的对比就能看出来,只是说他们功能基本上是一样的。对吧,只是说我们的log收了它是不是更强大一些啊。啊,它强大的地方在哪些地方呢?首先它一个概念叫级别。也就是说他是不是提供了好几个打印的方法呀,嗯,还有一个他在打印的时候需要指定两个参数。一个是tag,一个是要输出的信息。说明它是不是可以通过tag来进行过滤啊,嗯,这个tag可以过滤,再一个它除了tag过滤的方式,还有一种过滤的方式比较有用。啊,应用光明。
12:00
对吧,以应用为单位进行过滤,这个也是经常会用到啊。嗯。好,我也把它呢给它啊切一下。放在这里啊,大家需要去看一下。好,最后一个就是关于尺寸的啊,早上好多同学说这个尺寸搞不懂,嗯,我们来说一下。看到。这一些概念是不需要大家去背在脑子里面的,什么手机尺寸呢,估计有些同学我2.54总是记不住,怎么办?你记住他干嘛?难道,难道面试的时候问到这个问题,答出来就进去,答不出来就滚蛋吗?对吧,这是这个东西不需要大家记啊。什么关于啊,分辨率这些概念,我我觉得大家是应该是可以接受的,下面比较重要的两个概念,一个是像素密度。
13:04
一个是什么呢?手机密度。啊,像素密度呢,它的单位是什么呢?PPI或者是什么呢?DPI其实同样一个吧。那怎么叫那个像素密度呢?就是你单位面积上面能够放的相似数嘛,对不对,或者说单位英寸上面。能够显示的像素的一个数量吗?我觉得这个是名称写的很好,叫像素密度。那如果像素密度越大,证明那个像素点是小还是大小。是不是小啊?能理解吧,也就是说我像素点越小,它的手机屏幕的像素。密度就是什么?是不是越大呀。
14:01
这个能理解吧。嗯。好,那下面那像素密度跟那个手机密度又有什么关联呢?啊,它是以100,也就是说以一定的160个PPI为基准来去说的手机密度,也就是说160PPI的像素密度,它所对应的手机密度是几啊?一。对吧。是等同的一个关系。啊,其他的就是对应的去计算,按比例计算吧。好啦啊,这个我不看了。下面有三个单位,PXDP和P。先把SP给排除,SP用于专门用于干嘛?是不是用来去作为字体大小的单位啊?好了,后面你就别再说SP了,咱先专门去说PX和DP。
15:01
对不对。好一个PX在。不同的手机里面占用的大小是一样的吗?不一样的吧,我们可以举个例子,就用用两种三种手机,差手机。啊,一般的手机和好手机。这个地方好差好啊和和一般它跟手机尺寸有关系吗。是没有关系吧,啊记住了,这个没有没有关系啊,这是一般正好好吧。嗯,什么叫好手机。像素密度大。或者说我一个像素,假设我这是一个像素点可以吧,我就是这就是一个像素点啊,在正常的一般手机里面刚好显示这么大是吧。这是一个相似点的宽度啊高度啊,好啦,那在好手机里面会怎么着呢?是变得很小啊啊假设那一般的手机来假设,我以一百六为例,160PPI或者DPI,对吧,就刚好密度是一吧。
16:08
那他呢,假设是320。那它就是不是就一半了呀,好,那如果他就是80啊,我估计可整个特别小的。那它就相当于什么。两倍是不是放大了呀。啊,这是一个像素点的宽高了。好啦。那如果我用像素做单位,假设我指定100个像素,你在想啊,这地方就是100个这样的宽度吧。呃,这个里面是不是也是100宽度。那会存在一个什么问题啊。差的手机里面。是不是会变大呀?而好的手机里面呢?变小吧。这个好理解吧。好了。至于说用PX单位数不可取啊。后来啊,就设计了另外一个单位。
17:04
啊,DP做单位。啊,现在是100个DP对吧,我们前面说过,你用DP或者用ST最终都会转换,为什么为单位PX。因为最终是不是要向屏幕上面去打像素点呢。啊,去打下一个点去显示。那现在就想了。我这100个DP啊,在这个一般的手机里面对应多少个PX啊。是不是100个PX。对吧,或者说你就用一个DP吧。别搞100个了,就搞一个。好,大家看一个DP,那你这个地方是不是一个PX。没问题吧,啊一个,那下面这里呢,没有。这是几个?啊。多少,它的密度是不是就一半了呀?
18:00
它是不是用一乘以密度啊,那就是0.5个PX啊。对吧,那0.5个是不是只有这个宽度的意思,这整个的什么。是不是一半的呀。能理解吧?那你想想看,他的这一个宽高会有变化吗?对不对,你现在一个一个像素是不是比以前大了呀,但是我现在只有什么,只有半个像素啊。是这意思吧,或者说你要觉得半个小时不不太爽,你可以整呀,对不对。那就变成什么一个像素,这是两个像素,这是一个像素,这是几个像素?是不是四个像素啊。那它四个这个大小跟两个这个大小。就什么呀。是不是一样的呀。嗯。其实这个应该来说是不难理解的一个事情啊。
19:01
好,这是它啊,大家需要的,把这几个呢,给它好好的看一下。主要是这个比较,DP和PX的比较啊,DP和P的比较,还记得SP跟DP它有什么优势吗?什么优势?ST有什么优势?大家知道在设置里面,在手机的设置里面可以设置字体的什么大小。什么一般的大小,常规的啊,缩小的放大的是吧,超大的啊都有。记住下面,诶这个东西我得我得强调一下。按在点啊。啪。是一相当于是一个总结,一个经验的总结,就尽量啊试图宽高,尽量用充满或者自适应。对吧,必须指定时用什么呢?DP做单位字体大小呢。
20:05
用。嗯。哎,包括这个里面啊,有可能有时候呢,面试的时候有可能会问到。大家去需要去知道一下。好。下面一个是相关的一些接触到了一些API。来看一下,我来先给它截下来再给大家看啊。看看大家还有没有印象。不用不用单独去背,你就用一下啊,首先这一个是我们的activity是吧,我们要写一个界面,必须继承于activity,它有几个方法。首先有一个on create方法,Create方法什么是调啊?还记得吗?是不是这个对象创建的时候啊,而且这个对象是我创建的吗?不是吧,诶我是他是怎么知道要创建哪个类的呢。
21:04
他是怎么知道的?我问一下大家,看看有人有没有人知道。对吧,那个功能清单文件里面是不是写了这个类的全类名呢。一旦有全类名,必然会用到一个什么技术反射,大家一定要记住啊,反射好了,那我在这个on create里面去调用哪个方法。来,去显示界面啦。Set content view这样一个方法吧,嗯,里面去指定我布局文件所对应的那个是不是ID呀?嗯,好了,下面这个什么意思?我是不是有可能给界面里面的某一个视图对象去添加监听,但是在这之前。是不是在找到这个对象呢?我一再跟大家强调,找说明了一个什么,你。说明在早之前已经什么是不在内存中已经存在了呀,哎,谁导致它存在的呀。
22:06
哪个方法导致它存在的set content view?对吧,像这样一些东西啊,大家需要去分析清楚啊,只有你真的理解了,其实基本上不需要记忆。好了。那我们怎么样引用ID的,还记得不?怎么写r.ID对吧?再点某一个变量名吧。下面有一个R类,R类呢相当于对应我们的每一个文件夹。Re re,文件夹对吧?Is下面是不是有不同的资源呢?那我的R类里面就有不同的一些内部的类。Layout啊re,对吧,还有一个。IDID,我怎么样产生一个ID的这样一个类啊,大家说。
23:00
我怎么样怎么样产生一个这样的一个类。开始是没有的,跟大家说啊,我怎么产让它产生出来。你是不是要在布局文件里面去,呃,指定ID的时候加一个圈A是吧,加一个ID吧,在指定斜杠是不是在指定一个名字啊,这会产生一个ID的值。嗯,那前提他先是要创建ID的类啊,啊这个大家得知道啊。好,下面还有我们这地方有一个类叫view。啊,试图。那试图分很多种。我们接触过的有哪些呢?一个button,大家还知道有什么吗?Text view是吧,文本视图对不对啊,还学过一个布局,还记得不。叫相对布局。啊。哎,我们找到的啊,看到我们这里诶,啊,我们找到的就是这样一些啊视图对象或者叫button,他们之间什么关系。
24:08
父关系就是父子关系对不对?好,下面一个我得到视图以后,对象以后是不是要设置监听了。啊,这个地方视图对象就有一个方法叫set on condition condition,诶这一个方法大家看啊。这个地方啊,有一个方法叫set on condition,你说这个方法是定义在哪个类里面的?啊。它是定义在八里面的吗?不是,为什么要定义成定义在view里面呢?所有类型的视图都有同样这样的行为吧,你想疤痕有对不对?图片啊,文本呐,是不是都可以设置啊,所以说它必须定义在服务类里面。这个能理解吧,好。接着我这个地方是不是要传一个参数啊。
25:02
这个参数这个它的这个类型本来是个什么类型,是个接口吧。还记得吧,是一个接口,而且是V类里面的一个内部的什么内部的接口。啊,这一个内部的大家看啊,这个内部的接口,那我怎么样去指定它的对象呢?我们要用到一个语法,大家要知道叫什么。匿名内部类对象对吧?啊,创建了一个匿名对象啊好,它里面有一个方法叫安方法,我们叫他什么方法来着。啊,回调方法,哎,你是怎么知道是回调方法呢?On开头就是回调方法,那所以说我们的on create也是什么回调方法,而且它还有一个特别的名称,它叫生命周期回调方法,我们今天马上就会学啊。好,后面呢,我们会用到post。
26:01
用来干嘛呢?显示一个文本的小提示。啊,它这个地方比较特别的是什么呢?比较特别的在于这个里面有一个参数。需要指定context类型的对象。那我们指定的是哪个类型对象?是activity啊,那你为什么能够直接activity,它报错了。因为activity是谁的子类啊,Context的子类。对吧。啊,接着啊,大家看,我们必须调用数方法才能显示。昨天有没有同学没掉数的呀?是人就承认一下好不好,我我反正我是有过啊,一不小心就可能没有调用这个秀了。好。来。打他。复制一下。
27:05
嗯,那下节课呢,给他看看好了,后面呢,我们有一个功能练习,其实这个练习呢,超级简单,说实话啊。并没有多来,就它。嗯,这个练习呢,我们来看一下,在这里面给一下他吧,点下它好看了,这里面是我的,这这个它功能我就不说了,我主要说一下,我们去做一个小练习,小应用功能。啊,基本的步骤是什么。第一步。啊啊,前面我们的创建应用啊,这是必然的,对吧?啊创建好应用以后,第一步就是要定义界面布局,把这个写一下啊,定义界面布局就是把界面的效果显示出来。就先有界面的效一个显示效果,接着才是他的行为。
28:02
啊,就是外观和行为嘛。大家想是不是呢?你你无非一个应用,不就这样两个部分吗?外观和行为,那先呢,肯定要把外观有了以后才能去实现它的行为。这个没问题吧,嗯,好,所以说呢,我们先把界面布局定义出来,这个比较简单吧,啊,就是外围我们用的是一个什么呀。啊,你可以用线性布局,也可以用什么呢?相对布局都可以啊。好里面有一个什么呢。Button对吧,有个button button是不是有蚊子啊,那我怎么样能够让这里面都有一点间距的?还用的什么呀,Handing啊,是我们马上后面要学的内边距啊,好,下面布局整好以后,下面就实现他的行为,实现activity。
29:05
啊,实际activity有几个大家看啊,第一个我们要在quit里面,它是本身有的呀。但是我们要去干嘛呢?在on create中加载布局。这个是肯定要做的吧,不然显示不出来对不对,好加载布局好了以后下面。根据ID查找需所有需要操作的什么。操作了视图对象吧,视图对象啊并啊复保存为成员变量。这是一些基本操作,其实你就可以先把成像变量定义出来吧,再去赋值。好啦,下一步。
30:00
这是通用的一些基本步骤啊,第三步干嘛?给视图对象设置监听啊,那当前我们设置的是什么,是不是点击监听呢?给八人是不是设置点击监听。后面我们是不是还有别的。PD说,惨案。大家有见过长按的效果吗?是不是长按一个视图它才有响应,有没有有的吧,还有一些有滑动的有没有,就是滑动的时候它在动啊什么的,对不对啊,那叫触摸的监听,后面我们也会写啊,好了,设置监听的时候啊下面一个。在它的回调方法中,在监听器的回调方法中。啊实现啊响应逻辑。就我这个地方点击是不是有个响应的呀,啊,这里面文本要变化,要显示一个to。
31:06
啊,自己所说的响应逻辑。需要都把它做出来。就OK了。这是一个基本的一个套路,大家在这个基本套路的上面去做。啊,整个呢,就是这么多啊。
我来说两句