00:00
行,嗯,这个早上我看问问题的这几天下来都是个还是那么几个人问啊,就是其他同学的话肯定是有问题的,这个你这个程序写出问题的话呢,你得排一排,排不出来的话,该问就问啊,这不问的话两种情况,一种呢是这个没有问题,第二种的话呢,就是嗯,有问题不好意思问啊,好像还有一种情况就是没有写是吧,没写的话就没问题嘛。这个没有问题,第一种情况没有问题,这个肯定不可能啊,肯定会有问题啊,这个报一些错,或者我这没出现已经出现了。这个问题的话呢,就是你该问的话呢,一定得问出来,然后呢,你一定一定得去写哈,这个不写的话肯定是不行,光看的话呢,都能听得懂,自己不写那回头还是不会。啊行,哎,我们先来复习一下这个上节课讲的这个内容啊,昨天一过来的话呢,我们是还是写的这个叫嗯,Invest fragment,这里边呢,涉及到第二项叫随机飞入效果,是针对于这个叫推荐产品啊,推荐理财这里边做的啊随机飞入做这样一个效果,呃,这个效果的话呢,其实也相当于是一个控件了哈,呃,这个控件的话呢,我没有自己去定义,直接呢我们就拿过来用,粘过来了一个相应的几个类啊,啊叫rhythm layout,这样不就加上了几个类用的呢,这个叫steelar map。
01:20
啊,这样的一个布局。啊,这呢,我们一般情况下呢,就是哎这个类呢,都叫做STEM了,所以呢,你去网上查这个STEM的这个使用的话呢,啊也可以没有问题,就像这个we holder一样啊这个类呢,实际上是我们自己去做那个命名,但是大家习惯上都叫we holder啊这个呢,习惯上都叫STEM map了啊就这样啊,就跟说线性补局就叫一样啊,大家都约定俗成了。行,然后这个制作的话呢,其实呃,如果有了这个布局结构以后,我们直接使用的话呢,其实难度就不大了,通过这个例子的话呢,我们也相当于去总结了一下。在一个布局当中,我们是去添加具体的这些子视图的话。
02:02
哎,在这里边呢,具体添加了一个死视图,呃,整体上呢,我们说分成两种方式,第二种呢,就是在你这个布局文件当中,我们声明了你相应的这个布局结构。啊,然后的话呢,在这个布局里边啊,这个是你开始标签,这个是结束标签,然后在这里边呢,我们就添加一个一个的子示图啊,比如说这里边呢,每一个都是一个参六啊,我们用这样的方式呢,给它添加进来,呃,这是整体上来讲算是第一种啊,还属于静态加载的方式。嗯,第二种呢,就是我们在这个代码层面呢,可以我们可以对应的承诺叫做动态去加载。所谓的动态加载呢,就是通过代码的方式去添加的,这样的话呢,你随时是可以去动这些代码的啊。啊嗯,这个就好比是什么呢?就是在这个外部网页这方面。就是网页啊,就是我们通过浏览器呢,去访问服务器,这个网页的话呢,也有这种叫静态加载跟动态加载之分。啊,就比如说呢,呃,我们这个通过浏览器去访问后台这个服务器访问的时候呢,不管你这边你你是通过这个用户登的,还是另外一个用户登的,就是只要你是做一个登录操作,举个例子啊,是登录操作的,哎,回来以后这个页面全是一样,就是静态页面,就是你这个页面里边,呃,跟你具体谁登录没啥关系,发过来这个发送回来这个文件呢,就是固定的这样的一些数据。
03:21
啊,这个呢,就相当于是静态网页了,啊,你这些数据呢,其实他一开始就写死在那个GSP当中了。嗯,那什么叫动态网页的话呢,呃,就比如说我是张三登录的张三,张三登录完以后呢,返回这个页面,下面有一些数据,但是呢,这里边儿比如说显示的就是张三这个人。啊,以及他的一些头像呀,一些信息啊,啊是这样的,要李四登录呢,返回来就是李四的这个人跟他的一些信息,那就相当于我发送给后台以后,这个后台呢,再给我们返回的这个GSP文件。哎,我们就说它不是一个静态了,就不是一个定死的了,就是有变化的啊,现在这个GSP文件在生成的时候呢,里边相当于是我们通过代码的方式,就把具体的这个,呃,用户的一个信息呢,给他写到这里面了啊,动态的回来各自的是不一样的。
04:11
啊,这叫做一个动态网页,其实呢,跟我们这个想法也都是一样的啊,就是所谓静态就是在这个文件里边,这个JS文件,你就好比是看成是像这个布局文件一样啊,因为这个布局文件我们这是用的这个叉log式的JP文件的话呢,形式上来看,它就是一个HTL的,那本身呢,你都看成是相当于是标签文件。呃,相当于在这个标签文件里边可以写死啊。啊,那就属于静态的。另外呢,这个GSP里边呢,还可以写账号代码。啊,这动态这个这个网页的话呢,就相当于是你这里边写Java代码了啊Java代码呢,就就体现出来,我可以写这个,我也可以写别的,比如我这个同样的是get name,那你一会张三一会李四他这就变了啊,那你要是静态呢,就是这里边就写死一个名字了,就叫张三或者就叫什么什么什么就不能改了。
05:00
啊,静态跟动态,其实这一扩展的话都是啊,像在这种插包文件或者估计文件啊,功能静态文件等等这些角度定义的呢,都称为叫静态的,呃,凡是在这个Java代码这个逻辑当中加了一些东西,它体现的就是一个动态的情况。啊,这个呢,相当于是大家也扩展的啊,需要去了解的一个内容啊。好,不过来,那我们刚才还说到了这个叫动态,动态的添加数据的话呢,呃,就又分成两种情况。嗯,一种情况的话呢,就是比较多的一种情况哈,你既然是一个布局了,那我们就可以在你这个布局当中,呃,调用我们现在的这个爱的view方法。哎,I60方法,哎,一个一个的把这个组件呢,给它加上来啊,就好比是我们下一个写的那个叫热门理财一样,我们写的那个流式布局,其实咱们就是用的这种方式,哎,我们就是在你那个,呃,相应的这个回调方法里边哈,就相当于会on create view这个方法回调这里边in data里写个for循环,哎我需要加几个呢,我就放循环,你就输点。
06:09
啊,里边呢,造了一个一个的test view啊,一个一个给它加起来,用的是这种方式。这种方式的话呢,也有啊,只要你自定义的布局的话呢。这个这也是算其中一种方式啊,可以就是三个三种方式中的一种啊,呃,这是我们算是第二种啊,然后第三种的话呢,就是针对于呃,有一些这些数据的话呢,它的这个这个样式啊,或者这个数据啊,它比较规范一些哈,就是这儿呢布局啊,找的是这样一个格式的数据呢,就填这么几项,发现这些呢也都如此。呃,他们的布局呢,全都一样,而且填的这个数据呢,都是某一个类的对象。就相当于你都可以封装,封装成一个类了,那这种情况下,我们一般可以考虑怎么去做一个添加。是不是它可以有这个这种方式啊,哎,就是适配器嘛。
07:04
哎,通过这个适配器呢,帮我们相当于是可以实现类似一个动态去装配一样。啊,就像我们这个list view里面。呢,本身我们说它也是一个view group。啊,那你list view里边,我们没有在list view的布局文件当中,现在我们用list view的时候啊,我们没有在它的这个布局文件当中试图去加所有的这个子视图啊,子子标签从来没有这样做过,因为你想想那数据可是很多呀,你有1万多条,比如说那你在布计文件里边,你总不能写一万多个这个这个item吧。啊,那那就天天不用干别的了,就光看那个就行了啊,肯定不能这样去做,那你就得是动态的去给Li view去加,动态的加的话呢,你在一个代码层面,呃,通过这样的方式的话呢,那你就写方循环啊,这样写的话呢,其实也挺费劲的。或者说这样至少也是可以考虑这样去做的啊,没问题。你就从服务器下载那个数据,根据那个数据点less,你这块就往里面去加呗。
08:04
啊,可以考虑这样去做啊,但是呢,我们也不这样去做,因为这些数据呢,都比较规范,每个都长一样,那我们就呢,通过一个单位的方式啊,给你一个一个的这样去装。啊,就相当于我们在代码层面动态的去加载,此视图又分两种啊,一种是这个,一种呢,就像adapter这样的,通过适配器这样的方式去装配的,那我们这里边这个start map其实就是用的这个A。啊,只不过这个呢,是人家都给提供好了啊,找一下看我们这里个frag product recommend啊,这是我们这个sta map,哎,我们这里就是给他去设置一下adapt adapt的话呢,你告诉我应该具体怎么去装,哎,通常情况下只要我们涉及到adapt。啊,一般的这里边都会涉及到我要装哪些数据,整个的这个集合会有,或者叫数组啊,然后具体怎么去装啊,都会有类似于get view这样的方法。
09:00
啊,你告诉他怎么去装就可以了。啊,这是我们说的这个叫随机飞入这个效果啊,一个一个制作啊,回头呢,大家就直接拿这个现成的文件目录。哎,正常只写在这个里边了。啊,直接呢把它粘过来,在布局文件当中使用这个STEM回来呢,用个单就可以行,然后呢,我们再写的就是这个热门理财,热门理财呢,我们这用的一个叫流式布局啊呃,应用场景的话呢,其实我们也提到了,主要呢,一般就是使用在一些呃应用界面的一些热门标签上啊,热门推荐上这样的一些应用啊,啊每一个标签的话呢,你还可以给他去设置点击事件,包括的话呢,就是点上去是一种颜色,没有点是一种颜色。这呢,相当于就是一个select的一个效果,呃,只不过我们这里边呢,哎,是不是相当于使用的。颜色的一个变化啊,C这这没有在这具体的写这个,呃,C里边了啊。
10:00
啊,就是具体的话呢,我们相当于是使用具体的某一个类啊,去替换了我们的select。啊,其他是你是插包文件啊,我们这呢,用的是某一个类来做的这个事情,哎,我们相当于把它这边封装在这个YouTube这个照U下面啊。这个就是用它呢来去替换。啊,同样的话呢,这个job就是你只是给它加一个背景啊,现在用它呢,可以替换谁啊。是标签。对吧。嗯,这个呢,就是大家关注一下就行啊,就是一般的话呢,我们设置这个招募动画的时候呢,一般还是呃优先考虑的是在这个呃插面文件上面去写的。啊,但是呢,只要用这个账号代码就能写。嗯,其实就相当于是也体现这个我们说叫这个面向对象的这种思想。啊,面向对象这个思想啊,或者o op啊,嗯,所谓的面向对象一提到这里边儿呢,呃,我们说以前有一句话叫万事万物皆对象。
11:07
万事万物皆对象,说的还是比较这个抽象的啊,那你怎么去理解这句话呀?哎,万事万物啊。面试的时候,如果人家跟你聊坏了啊,说这人面向对象这块,哎,你怎么去理解这个事啊。然后呢,你啥也没说,来一句这个万事万物皆对象。这个功率小的话呢,你说这句话呢,你得负责是吧。这个万事万物借对象的话呢,其实可以这样去理解哈,首先呢,就是针对我们Java代码,就是纯Java的啊,先不跟其他的语言交互,呃,在张案里边,哎,我们就是体现为这个类的概念。就是相当于我们把这个一些具体的一个事物,我们操作它的时候呢,首先呢,给它封装成类,呃,然后呢,我们具体去执行的时候呢,就是通过这个类的对象呢去实现的啊,就更多的体现为我们啊通过类呢造对象,然后对象啊调查的方法,或者它的属性啊去完成相应的一些功能。
12:15
啊,所以体现为呢,就是面向这个对象的一个编程,就通过对象去完成整个你的这个功能。啊,当然呢,在这个里边呢,我们可以给它广义一下啊,通过对象去调,那有的时候呢,有一些静态方法,还可以通过类去调。那这个类本身的话呢,啊,比如随便一个A类啊,我们说A类是不是还可以看成是一个大的class的一个实例啊。所以你通过这个大A类我去调一个方法,那其实你也可以理解成是不是大的class的一个实例去调这个方法呀。所以说你这样一统一还可以看成是就是通过对象来调的。啊,通过对象来完成这样的结构,那对象呢是一个具体的,那其实它就依赖于你这个类类呢,可以看成是一个泛泛的抽象的这样的一个一个概念一样啊,啊有了对象以后,我们内存当中才帮你分配的这样一个空间。
13:04
啊,你才有具体的这些属性,这些方法接着去做事情。啊就可以了啊,就是单纯的是针对于我们Java来讲是这样的。那么你这个叫万事万物皆对象啊呃,整个用Java的话呢,你可以解释这些万事万物都是通过类,通过对象,那有的时候呢,我们这个呃,需要呢,跟其他的一些语言做一些交互了。呃,我们以安卓为例的话呢,啊,你这个安卓客户端,我们的这个布局文件使用的是插猫。那这个插包的话呢,呃,是一个布局文件,我们呢,在Java代码当中,比如说htt里边通过set content view的方式把这个布局文件呢加载过来了,然后紧接着呢,我们就可以find view by ID。只要你发ID这里边呢,比如有个组件的ID是什么什么什么,我这呢,直接可以发个ID,找到具体这个ID对应的那个组件,至少呢,你就是一个view。
14:03
哎,相当于呢,我们把这里边儿的某一个标签所代表的这样的一个结构,就翻译为Java里边某一个类的对象了。啊,你如果这是一个button,你还可以具体化,它就是一个button的对象。总之的话呢,插文件里边的一个标签,在我们这呢,就是一个对象。哎,那我们这里边这个串文件还是非常多的,包括呢,你这个招动画呀。啊,还包括你这个animal animal就是我们的一些属性,哎,不是一些属性就是VI动画呀等等。他们呢,其实都可以翻译成我们这里边儿的某一个类的对象。啊,像我们刚才说这翻译的是那个she,这个state啊,List job翻的是那个select一样。啊,这是我们说针对的是我们这个前端显示。啊,当然前台显示的话呢,也不管我们安卓客户端啊,IOS其实一样。啊,当然iOS这块呢,不是用Java来写这个业务逻辑了啊,用OC还有这个Swift去做了啊,那我们不说iOS啊,说这个页面。
15:08
嗯,页面的话呢,我们看到的都是HTML的代码。啊,那HTML这个代码呢,它里边呢,也是定义的标签。那其实跟这个叉帽是类似的啊,这里边儿每一个这个标签在我们这里边呢啊,都对应着一个element的一个对象。啊,那我们可以回头呃,讲这个GS啊,这个咱们也会去讲,后边有几天这个GS,这个HMMRCSS跟GS的课啊,基本上平均的话呢,就是一个一天。啊,因为我们也涉及到跟这个H5做一些交互操作了啊,就是属于混合开发了啊,那在这个GS里边呢,有一个就专门其中一块内容叫GS do。啊,相当于导边程一样啊,哎,我们就可以呢,呃,将页面当中的这些相当于这都是属于一个呃叫元素节点啊,它对应的我们账号里边这样一个对象啊,这个对象呢,其实你要再翻翻呢,它的上一层就是noe。
16:05
啊,Note就属于一个节点了啊,这属于一个元素了,还有一个文,还有文本的,还要具体属性的等等啊,不管是哪一个吧。啊,它可以是个元素,也可以是一些属性啊at tr还可以是那个一个test啊,就像你这个,呃,节点里边的具体的一个一个属性啊,就相当于是他一样啊,那两个标签之间呢,还可以有这个文本,那就相当于它一样,总之呢,你这里边这个信息可以翻译到我们账号代码层面都体现为啊具体的某一个类的对象了。哎,从这个层面来看的话呢,前面这些啊,你不管是用什么语言来写的,只要我们张阿去操作,你也都体现为类的对象,哎,这也是体现万事万物皆对象了,哎同时的话呢,我们这个呃,账号代码还可以去跟我们后台的这个数据库做交互,那数据库里边呢,他也讲数据库对象。啊,数据库对象这个概念呢,就是人家的一个一个的表。
17:01
啊,视图索引序列。啊等等,人家这呢叫数据库对象啊,其实有点像我们张二里边说的一个类点啊,比如说在数据库里边,比较典型的数据库对象就是表。嗯,然后呢,你具体的这一张表,我们说对应的账号里边一个什么呀。是不是一个类把线整体的一个表啊。对吧。整体列个表,相当于我们这里边个类,然后这个表中的一条记录呢。嗯,一条记录啊,横向的。应该是这里边一个对象嘛,比如说你这个张三登录了一下,呃,注册了一下你的用户名啊,密码啊,呃,那个邮箱啊等等,你这个信息在这里边不就是一条记录吗?所以回来以后呢,相当于是一个对象,那这个表的一个列呢。对,就是一个属性,你这一个列,比如说这是你的email,回到我这呢,我这个类里边就应该有个email的属性。
18:00
啊,相当于我们,呃,跟后台这个数据库在交互的时候呢,我们也可以把这个表的信息翻译成我们账碍中的类和对象的信息,也体现了面向对象的编程啊,这里边我们还给它起了个名字啊,叫OM的编程思想。啊,Object relation mapping啊,对象关系映射啊,就是相当于把这个表给它翻译成Java的这套逻辑啊,那我们具体用的话呢,其实就相当于是用的这个JDBC一样,然后GDBC呢,就是Java提供的。或者说叫这个原来说叫萨公司提供了哈,哎,就是相当于是纯Java的这个公司里边啊,它提供了一套接口,用来连接不同的数据库啊,MYS啊,Oracle啊,DB two啊等等啊,都是用最基础的这一套接口来做的啊。啊,之所以我说是接口,那是因为呢,你不同的数据库厂商具体联合操作方式不一样,那你们各自去写这套接口的实现。啊,这里边又提到一个叫面向接口的编程啊,详细的不在这去说啊。呃,那这六后台里边哈,像咱们不是有另外一个方向Jae嘛,啊GDBC呢,我们可以操作数据库,那后边呢,还会讲像har啊等等,这都是属于框架了啊,使用框架呢去哎去操作,其实框架底层呢,也是封装了他们。
19:16
就跟我们安卓一样啊,安卓的话我们也有联网框架啊,什么oktv啊,叉S啊,HTP啊,这个这think attp client啊等等啊,那其实他们底层呢,也是封装的最基本的这些API。啊,只是说它封装完以后,然后呢,你直接调就可以了,所以就嗯更方便啊,包括呢,各自的框架有各自的一些特点,就它下边涉及到它如何去优化这个代码了啊。啊呃,不管你是前边显示也好,还是后边交付的数据库也好,还是说就是你本身的这个Java类也好,所有的我们都可以体现为类的对象,所以这这呢,你可以理解为叫万事万物皆对象啊。就是相当于你的这个这个理解的这个一个层面的东西啊。
20:02
啊,那还回过来我们说这个事情,呃,流失布局这一块的话呢,呃,我们主要目的呢,就是造了一个叫flow layout,呃这里边我们主要呢做的是两个事情,第一个呢是测量,第二个呢是on lay out,给具体的view呢做一个布局。就是你应该是定位到哪。嗯,这里边呢,就需要大家你得清楚啊,我们前面也都复习过了,这个view的一个生命周期里边比较主要的这三个过程啊测量。下边呢?布局呃,在下边儿。哎,绘制。嗯,回执啊。啊呃,绘制完以后呢,你可以再添加实践等等,就是只要你绘制了,到后边你这个视图呢,在它上面就能够显示了。哎,能显示以后,哎,这个时候啊也能显示的,是在绘制以后的,哎,我们呢,可以去调这个视图get wise。啊,那就是你真实的一个宽,哎或者是高,嗯,那在前面这个过程当中。
21:07
啊,包括你这个过程啊,我们测量的时候呢,实际上这个时候我们能够得到它的什么款。副部句就不是副部句了啊,我是不是可以可以得到它自己这个叫get measure的一个was跟呀。哎,就是这个过程呢,它还没有真正画到这个手机屏幕上的,它还是呃,在你前面经过这个对象的创建,对象一创建,那你相应的这些属性不就也跟着就实例化了嘛,所以你这个视图的,你在比如说插片文件当中写的是多宽多高。实际上呢是知道的,嗯,长方文件里边写的那个宽高呢,实际上我们就理解为叫测量的一个宽高。啊,那这里边又分成说有精确模式,有制度模式,就我们这个里边说到的啊,这个呢叫测量的宽高,哎,然后的话呢,当你绘制完以后,已经放到这个呃,屏幕的这个页面上了,这个时候我们可以获取它的就是get get。
22:07
那一般情况下,这两个值都是一样的。但是区别主要的区别在哪呢?就是他们的获取时机不一样啊,这个呢是在测量的时候就能拿到,而下边这个呢,是真的你画上去以后啊,才有了一个换号。啊,这是我们说的这个事情啊,啊,那这个布局的话呢,呃,或者说在在刚才说一下,就是你布局只要你确定就放到这儿了啊,我也能放得下你其实这时候呢,你的这个get get。就可以了。啊。啊,那我们这里边呢,针对于我们这个问题,就是呃,测量我们这里边呢,说你这个到底多宽多高啊,出现一个问题说呃,我这呢,因为指定的是一个自适应的。啊,比如宽更高都次适应,那就相当于是一个制多模式的,那我具体摆放这些子view的时候呢,哎,你自适应的到底多宽多高,真实的那就得看我这里边子六的一些情况了。
23:01
啊,但是紫这个情况呢,我们得到以后,呃,真正后边我们往后摆的时候呢,那还得真得看一下你到底是。多高的?多宽的啊,这个制动模式呢,我们在上边这个位置获取的时候。这个呢,大家要清楚啊,不管你是一个精确模式。还是一个具体的一个制度模式。这个获取到的。啊,其实都是你最多可以得到的那个值。嗯,以我们这个问题为例的话呢,那最多其实就是你这个屏幕的一个宽度。所以不管你是精确的还是之多的啊,这个值它都是宽度。啊,但是真实的时候呢,它比如说你是个直多模式啊,那真实的到底多宽,它不一定这么宽,它只是说最多是那么宽啊,真实的话呢,它可能就这么宽。啊,因为你这块这样去摆的时候呢,最长的那个也就到这儿了,所以我们首先要做的就是测量一下,到底你这个视图是多宽多高的,哎,然后最终呢,是给你就设置成这样的反和高。
24:03
哎,我们主要的逻辑呢,就是这块去写的哈,哎多宽呢,那你得依赖于具体的这些子右了,所以我们这呢,相当于就是做这样判断哈,看这个看看到底是一个多宽多高的。啊,嗯,在这个问题当中啊,刚才这会儿那个朱文成也说这个事情了啊,包括这个昨天。我觉得是是张勇吧啊。张勇还是王勇?张勇是吧,王啊,记差了,管你是特别勇。嗯,然后呢,也也提到一个问题了啊,就是我们这个里边呢,我没写什么呢。嗯,布局。嗯,我们是在,嗯。好,这里边儿用的哈。这边我用的时候呢,我没有去设置这个flow out的一个pending和或者是叫Mar。
25:05
就是这个视图本身它的内边距外边距我们是没有设置的啊,那如果要设置的话呢,这个代码呢,就更复杂一些了。这个能理解吧。哎,你看我们这里边你制度模式的话呢,直接就这样用的哈,那你多宽多高,就相当于你这时候呢,就理解成纯粹的这样一个非常窄的一个边了啊,然后呢,你就往这放就行,那现在呢,我们说有一个内边距。换一个颜色。嗯,假设啊,我们这个蓝色的框呢,就是表示的咱们的这个,嗯,然后的话呢,红色我又画了一下中间这个位置呢,相当于我是设置了一个pending。哎,设置喷顶了,那这个喷顶的话,你想想会对我们整个这些位置的一些设置有影响吗。肯定会有影响的是吧,呃,或者你考虑比较极限的一种状态,我这个喷淋呢,足够的大大到的话呢,就是。
26:02
就是我这边喷定是这么长的,我这边判定这么长,那就这么一点区域是可以放那种的,那是不是有可能你这个视图最后发现呢,就是你每一个只能一行放一个了。啊,那如果你要是没有设置喷顶,那我这一行一行可以放好几个的,所以肯定会有影响啊,那那就意味着就是如果你加上了喷定啊,那这个代码的话呢,你在写的时候呢,这样写其实就不准确了,那我们就得需要考虑到它的一个判定情况,比如说呢,呃,我们这个是。还是个那块啊。啊,这呢,我们用它这个外框来表示,那你一开始的话呢,在测量的时候。像你在测量的这个时候的话,嗯,我们说你这个制多模式,制图模式原来的话呢,说这个宽度就是整个这个屏幕的一个宽度了,那你现在这个制度模是下边我们不是写了个依附语句了吗?你这个依附语句右边这个。是不是就没有这么大了?屏幕宽度就到不了了,你最多是不是也只能到这儿?
27:03
对吧。哎,就成这样啊啊,相当于你这个真程去摆的时候呢,这块呢,你得考虑啊,要么呢,就是左边这块,再加上一下当前这个布局的一个左边距右边距。啊,要么就是在右边呢,减去左边移右边移。这样啊,嗯,这个这个事情,包括你后边这块去做一些具体的的时候。啊,你是不是也得把这个,呃,人家一开始这个定给抠出去啊。啊,那你一开始这个定位的时候呢,哎,我们原来说你比如放在这啊,你放这儿的时候,除了使用你自己的这个左边这个marin left,你是不是还得考虑到它的有一个。肯定啊。那定位这个左的时候呢,这不也得考虑到上也一样一定的一样的道理。啊,那你这个右跟下呢,就自然延伸成一个宽度和高度就可以了,所以整个这块呢,相当于下边又得多一些这个参数。啊,多些参数,那关于这个margin的话呢,相当于是我在我的这个视图的外面。
28:04
呃,外面呢,加了一个marin,那其实也会去影响,那就相当于比如说原来你这个位置相当于是你,呃,有可能显示的屏幕的宽度,那现在外边加了一下,那你能显示的区域呢,也少了。啊,这呢,相当于是你在上面测量的时候也得考虑个问题啊,然后你包括下边的这个布局的时候呢,这一行去摆放的时候呢,你这个宽度也短了,那相应的都会做一些调整。哎,这个呢,可以做一道思考题,哎大家有能力的下来想一想,如果加了market杯或者是叫pending啊,哎,整个这块呢,我们应该怎么去做一个微调。这个昨天没讲是因为我一讲的话呢,那就整个估计就崩溃了啊,啊,因为这个可能就整起来有的同学都有点费劲了啊,这个理解了以后,我们再往上加这个事就其实能更容易一些。好,这个我们说这个流失布局哈,实在不行的话呢,你下来可以直接把它当成个现成的,就像这个随机飞入的这个布局一样,直接拿来用也行啊。
29:05
好,下面呢,我们继续说,这个叫登录功能啊,这呢是针对于me fragment里边的,呃,具体实现这个功能就是从上往下这个顺序我们去写就可以了,呃,布局首先是第一个问题,最好呢,下来你自己呢绘制一下啊,验证本地是不是已经有登录信息,一进来的时候呢,如果没有在这呢,提提示一个dialog。啊,然后一点击就进入那个,呃,用户的一个登录界面啊,登录界面的话呢,我们这有考虑到既然是一些TD,我们又进行了抽取啊,抽取成base斯std啊这块呢,也要复写啊,就真正在开发当中,我们会发现呢,你这些项目里边。都会有这个抽取的啊。然后我们这里边抽的东西还挺多的,嗯,Fragment的抽取和data的抽取,嗯,然后呢,关于这个base activity的这个抽取。啊,包括我们这里边儿跟这个具体联网操作相关的,有到这个楼顶配置,其实都是一些抽取的一些思想。
30:02
呃,具体的话呢,到我们这个登录这一块这个操作。啊,具体到登录这块操作的话呢,你就呃写一下布局啊,然后呢,点登录的时候呢,去联网验证一下啊联网验证的话呢,这里边就分成成功了失败了啊联网有没有网啊啊用户名在联网之前呢,先做一个加密。啊,这些都是必要的哈,嗯嗯,加密这块的话呢,我们,呃,真正这个开发里边也就是针对于这个,呃,用户登录的这个数据用MD5加密哈。啊,其他的比如说我就我就购买一个理财产品,或者我就在这个淘宝上买了一个包,啊,你的这个订单呢,是要发送给后台的,这个订单数据的话呢,也要保证它在传输过程当中是安全的。对列的订单信息也得需要加密。那这个订单信息用MD5是不是就不合适了?为什么呀?啊,不可解密是吧,这边呢,你要买个包发过去以后,那边不知道你选什么。
31:04
对吧,哎,你说匹配一下好了,那那产品多了去了,那我怎么匹配,你到底买几个我也不知道。啊,所以没法整啊,你这边加密过去,那边呢,得给你解开看看哦,哪个包啊,是一个高仿的LV是吧?嗯,现在这个淘宝上这个假的东西就少一些了啊。我记得我那时候上。嗯,特别明显,就我那个刚上大学的时候呢,其实还基本上还不知道这个淘宝啊,那时候有叫。好像就叫一区吧。是吧,应该是这国外那时候不有个叫E拜是吧,回来叫易趣,然后那时候呢,就是一兆发现,诶这个他那个真的比那时候比实体店感觉要便宜哈,看那个卡西欧的手表,那时候觉得都挺贵的啊,实体店得得五六百以上,那时候一看他那有个两两三百的。嗯,应该是真的吧,是吧,那至少这个为什么一开始很多人选择网购,嗯,一开始这个想法就是比较便宜嘛,比实体店要便宜一些啊,那特别明显,就是大一的,大一大二刚开始那会儿就还去一去,然后突然就不知不觉到大三的时候呢,不知不觉的就换成开始用淘宝了。
32:12
是因为它便宜啊,还是广告推广的这个多呀。然后就很自然而然的就就换回来了啊,然后后来发现确实一拜后来是被谁给收购了是吧,但就一据啊,国内年龄一据国外人家那一拜还在。那国内呢,后来就慢慢慢慢明显这个阿里巴巴淘宝。啊,然后就开始一统天下。然后再到后来。这都。好几年过去以后啊,京东慢慢的开始从BTOC的开始又起来了。就是挺明显经历的这样的一个过程啊,不知不觉的有这样的一个情况啊。你像现在传统的这个家电的,你像这个这个谁,这个苏宁国美是吧。当然国美那个黄光裕现在还没有出来啊,黄光裕错过了最黄金的这个互联网这个这这样一个时期啊,呃,相当于两个传统的现在都得去迎合着,现在像这个这个呃,京东啊,或者是淘宝啊,都得做这个改变,所以苏宁现在就开始整这个苏宁易购,就是网上卖卖家电嘛。
33:17
啊,再不整的话,就根本干不过这些网上的这些商城了。所以现在这个社会哈,经历一个挺大的一个变化啊。有时候看这个实体这些店挺惨。就是。房租也挺高,然后每天呢,感觉没有太多人进来啊,进来以后看一看,我就会去网上买,就成这样了。呃,但是现在发现一个点哈,就是这个永远这个消费者是玩不过人家一个商家的哈。就是你去实体店,你看到一件,比如说一个一个品牌吧,嗯,比如说一个耐克哈,你看到是这件衣服,然后网上很多时候呢,是找不到这件衣服。
34:00
网上找的是别的这个衣服,就是线下的这个款式跟线上的款式不一样。啊,这一种还有的呢,还是能找到线下这个款式,线上也能找到,但是他这个又是不同厂子出来的,就是你家这个也也看到过这样的新闻,就是你实际去检测的时候,发现线下这个这个比如说布料要求什么透气性啊,什么这个成分百分之多少啊,它是达标的,网上那个就不达标,但都是真的啊。都是这个官方这个店里出来的,就是为了迎合你网上这东西应该更便宜一些,所以他呢,就是专门针对网上这个区生产。这也挺恶心的是吧,像你买这件衣服的话,线上买的它也是正正品出来,但是它那个不合格是。嗯,对,有类似的这个。好,这个我们再回来哈,呃,首先呢,是这个布局的设置,然后具体联网的验证,哎,成功了,失败了,这个我们昨天呢,写了这个逻辑了,哎,另外一方面的话呢,就是在我们一开始的这个,呃,Me friend的这个页面里边。
35:00
加我这个一进来这呢,没有登录,它就提示我必须得登录一下啊,就依据于本地是不是有这个SP文件啊。那这呢,我就登录一下。哎,回头呢,我们再写这个注册啊,注册完以后呢,你就可以用别的用户呢,再来登录了。啊,点击登录成功的话呢,我们就重新做个加载,那这时候我再进来啊,它呢,就是不再提示我这个diallo了啊这时候呢,我们相当于一进来发现有,那我就读取用户已经登录的这个信息。哎,同时呢,给显示出来。哎,就这样的情况啊好呃,这个昨天下课以后的话呢,跟咱们这个公司这个写后台这块啊,我让他把整个的这个外部工程哈,包括我们这个数据库整个扔到这个商务官网这个服务器里了哈,所以大家下来的话呢,你就嗯,用你自己手机测的话呢,不用非得是开热点了,你可以连这个啊。
36:00
就回头呢,你在户外相当于你外卖也能用啊。哎,我们呢,把这个项目的话,这不就写到咱们的这个,呃,Common。这个地址啊,APP大家config写到这儿了。嗯,这儿呢,就是还是我们写的本地的啊,我这呢是用这个猎豹开的一个热点啊,这个热点发出来这个IP地址呢,是他啊,所以我这呢都是基于这个IP地址写的啊,这个号呢,就是我们常派D啊。嗯,昨天呢,就又配了个外网的一个账号,账号的话呢,是这个。呃,然后呢,这个账户号是8081。嗯,这个地址的话呢。哎,这个就这个呗。说C一下这个发给你,你就可以在你的项目当中呢,你就可以配成这个外网的啊,那回头呢,你相当于你在外边呢,就可以防。或者说白了,你在教室里边也行,你就用不着非得是开这个服务器了。
37:01
行,把这个复习的内容先听一下。
我来说两句