00:00
嗯,好,那下边呢,我们就开始来写这个螺钉配置了,哎,刚才我们说的第一步,呃先呢,应该提供这样的几种状态,以及呢,你当前这个状态啊,这是一共是算五个变量啊,希望我们下边来写一下,嗯。啊,漏定配置,首先呢,第一个我们说定义啊四种。哎,不同的这个状态啊,叫显示状态,哎,我就写个private了啊,那这四个状态,或者我们这个类的对象回头创建的时候,不管你在哪一个具体的fragment当中。啊,你这几种状态,一表示的都是那个正态加载,二呢都是表示的加载失败,所以我这呢,是不是可以定义成一个静态的翻重了吧,哎是时针类,哎时针的金的类型的。State。啊,楼顶。
01:05
啊,或者那个常亮,你要写成大写也行是吧。嗯,对,用那个快捷键也行啊。嗯,这个呢,是一个empty。行。哎,这里呢,是个四。啊,然后这四个都有了,然后最后那个呢,是你当前那个状态啊,当前这个状态的话呢,因为他回头找对象,你可能是不同的,这个页面是不是对应一个对象。这个页面一个对象,这个页面有对象,所以这个你就别静态了。
02:00
啊,这个呢,就是你自己的状态啊,搬的话呢,也可以给它改掉是吧,哎,我们回头给它重新复制了啊,所以叫state一个哎current哎,那一开始的时候,我先让它就是一个正在加载。啊,默认情况下。当前状态啊为正在加载。好,这是我们这个第一个事情,然后第二个事情。提供啊四种不同的界面。好,那下边来提供一下啊嗯。四种不同的一个界面啊,界面的话呢,我们这呃,你可以直接我就直接写这个view了啊。这个叫view,一个loading。嗯,然后private。Well。的一个error。
03:14
啊,这样的话呢,我们就只是声明了这四种不同的界面啊,那四种不同界面你真的需要给他们一个一个的,你得呃初始化一下,否则的话呢,我显示你就没东西了啊,那下面呢,就考虑我们怎么去初始化这四种不同的界面,我就不写到这儿了啊哎,那这个时候我们回头肯定要造这个类的对象,一旦造这对象我们就。总之呢,一定会掉到这儿,所以在这呢,我们就写一个方法啊,伊利的这个方法。啊,这就是现在我们这个初始化方法啊。那在这个方法里边,我们首先做一个事情呢,就是实例化我们这几个view。啊,实例化这个view那行吧,那就一个一个来写啊,首先第一个呢叫loading啊,CTRLC啊,那CTRLV等直接,那你这个实例化的时候呢,后期如果要再调,发现它有了就不用了是吧,所以可以先让它如果是等于not的哈,那我们就它呢就等于。
04:10
啊,View点呃,Inflate一下,或者我们这有个UI u.get view,这呢是一个正在加载的页面啊,那这个话呢,我们就直接拿现成来了啊。Res,找我们这里边,这是正在加载,加载失败,加载是空CTRLC。CTRL转过来。那么出来个他呀。这里边啊,这里边我们看一下啊,这个loading啊,Loading里边这个我们还没有去自定义,就那个旺财是吧,先把它先删掉啊,然后这个error啊empty我们也看一下它简单的一个效果。
05:05
这是这个加载失败的,然后加载数据为空的。啊,这个啊,正在加载。哎,正在加载是这个上面这个你真能运行就能看到效果了。啊,这呢,就是我们说的这样的几种情况啊,然后回过来啊,在这里边我们去写R点。两点。楼顶。呃,这是其中的这一个啊,这个呢,你声明完以后的话呢,你需要给它添加一下啊,嗯,添加到我们整个当前的你这个loading配置这个对象这里边,嗯,那我们这呢,也就调一个这个I view方法。你看这个之所以有这个方法,这我们那会复习不是说了吗?啊时,它实现了view,呃,这个。这个师徒的一个manager是吧,啊manager里边呢,有增产窄的方法啊,所以他就有,所以就有。
06:04
那这呢,我们就把我们这个视图CTRLCCTRLV加过来,那加过来的同时呢,我们还可以再去提供一个参数。啊,PAR rooms啊,Pairs是什么呢?就是我们提供的一个视图,到底是呈现了一个宽高。这呢,我们可以用一个啊啊叫layout paras,这里边这个参数will group。啊点啊layoutpar.MY这是它的宽高呢,也是充满。哎,然后呢,啊,产生这来生成这样的一个变量。哎,在这里边去使用一下啊,就相当于让我们当前这个视图呢,充满整个这个界面,这是其中的一个。啊,这是它的两个这个操作,这个呢,是其中的第一小步啊。嗯,相当于是提供。啊,布局显示的一个参数。
07:02
啊,这呢是做一个加载。在布局这个呢,是添加到当前的这个。当中。行,这只是其中的一个啊,那类似的话呢,我们再把其他的这几个呢,都这样的去给大家去创建一下啊。那先这三个啊。嗯,Will是一个empty。配置。嗯,这个呢,可以就留着。VIVO呢,是一个error。
08:04
行,这三个呢,我们就给它加过来了,那另外这个呢,我们,嗯,这个显示一个正常的,或者叫success,这个呢,我们就没有写到这儿了啊,因为这个的话呢,我们得保证它得在这个主线程当中去做这样一个加载,所以我们先暂时就不写到这儿,那你这个方法呢,执行这块呢,只是做这个初始化,那初始化完成以后。哎,我们需要呢,决定谁来显示。啊,谁来显示,就根据我们上面提供的这个状态啊去决定,那下边呢,我们在这个方法三个调完之后呢,我们去调一个叫收。哎,我这呢叫save配置。啊,受一个save配置啊,为什么是叫save的,所以我们要保证啊。哎,保证如下的这个操作呢,是在这个主线程中执行的,因为你是不是要更新界面了。嗯。
09:00
哎,更新界面,那我们当前这个操作的话呢,我们不太确定你回头是不是在分线栏当中去创建的这个类的对象,进而的话呢,就是这个更新视图这个操作呢,不确定你是不是在主线程当中,但我现在要保证这个接下来更新视图的这个操作呢,一定要在主线程中。这个逻辑能转回来吧。就是你上面呢,我不知道你是是不是在主线程,但是呢,这个一定要在主线。啊,那这时候呢,怎么做这样的一个保证。嗯,以前呢,咱们写的话就是什么run on u thread是吧,那你这块呢,你在自己定义的一个类里边肯定没有。你有你有个什么呀。有一个能的是吧,啊,那这时候呢,我们可以这样做一下啊,在这个U下呢,有个叫UIU,那我们可以这样啊,我在UIU里边呢,我定一个方法就叫做run on UI thread。
10:01
那这里边呢,我传一个什么呢,我传一个这个re啊。唱一个。啊,也就是说呢,我在reno这个方法这里边,我让这个操作。哎,是在主线程当中执行的啊,保证。这个run方法中。啊,这个操作在主线程中。执行啊,那这个方法呢,很显然没有我们呢,就需要呢去创建一下。哎,这呢就在我们UI秀侧啊,在这呢,我们写一下啊,这个方法的一个作用呢,就是保证。中的这个操作。哎,在主线上中实行。嗯。那保证它在主线程中执行,那我们呢,好歹你得判断一下,说如果你当前的线程呢,就是主线程。
11:07
啊,也就是说我们如果当前我这个方法呢,就是在我这个mayad里。啊,那你这一看,我就写成个方法吧。哎,如果你当前我调这个方法的这个线程就是主线程,那直接呢,是不是我们让runable呢,去调它自己这个run就行。哎,那否则的话呢。哎,否则的话呢,我们是不是就保保表示你现在在这个分线成立哈,那分线程呢,就需要发送消息,是不是到主线程。然后就UI。那点是不是整一个get一个handler,是不是我们都上面都写好了吗。嗯,这一个hand这。啊,然后呢,让他呢,做一个post嘛。Bos呢,你是不是把这个呃,Re book传进来就行了,哎,然后呢,自动的,呃,它呢,就里边它就调这个发送消息,发送消息发到主线程里边,调我们这个啊,所以这样就行,那关键呢,现在就得调这个,哎,造个这个方法。
12:12
那这个方法呢,就是判断当前线程是否是线程。哎,这怎么判断呀。你先获取一下当前你这个线程吧,哎,安卓的OS点。process.mytd这是我们这个啊current的一个spread ID,然后我们系统这个是不是我们主线程这个ID也找过呀,我们在这个之前造这个application的时候呢,我们这儿是不是就主线程的ID。呃,因为造主线造他的这个对象的这个线程一定是主线程,好,那我就比较一下呗。啊,比较一下这个my application里啊I是否跟我们当前这个呢是一个。
13:05
清楚吧,哎是一个,那当然就是主线程,哎这个操作我们就写好了啊。哎,写好以后呢,回过来。哎,这张就有了,哎,我们就为了保证我们这个操作啊,哎,我这呢,比如就叫做收配置吧。就显示这个界面的啊,哎,我这个再找一个方法,哎,保证我们这个方法啊,就是你界面更新的时候,显示谁是在一个主线程中执行的,我们是这样做的。那以后你也可以这样来做哈,来说我这个操作不确定当前线程是不是主线程,那你就这样的来给它做一个判断啊。好,那这个里边呢,我们要做的事情是什么呢?我们就要根据你当前的这个。Stay current的状态。嗯,是这套。它的一个不是叫值吧啊决定啊显示哪一个view。
14:02
啊,根据当前状态决定写是以哪个view,那我们就这样来写了哈,啊,Will首先是一个loading啊,Set一下叫visibility。啊,你到底是一个显示还是不显示,我们就取决于你当前的state current。啊,如果它呢,是等等于啊,这个我们叫state。是一个大写的啊,哎,Stay是一个loading。啊,是这个吗?哎,如果是一个true,那我就让你view点是不是visible啊,哎,否则view点啊就因为sible了。这能理解吧,是不是这先得整三个呀?这不就整了这三个吗,三个你改一改啊。是对他这个。嗯。
15:00
这个。不用变。这样行,那经过这个操作的话呢,那你这个state camera只能是取1234中的某一个啊,那那我们默认这个情况下,它不就是loading吗?所以这时候它就显示了,这两个呢,就没显示。那还剩一个是吧,还剩一个的话呢,我们在主线上里边还可以再做这个事哈,如果这个时候我们发现这个view呢,叫success,说如果你这时候还是一个no。入空的呀,哎空的话,我们这时候呢,在这里边调一下view啊,哎,我呢把你添加进去。哎,同时呢,我们这也可以提供这个叫panel。啊,这个我们跟上面这都一样,所以不妨呢把这个呢。抽出去。是吧,抽成一个属性啊,哎,我在这呢做一个使用。那这样呢,我就把它呢,也添加到我们的这个。
16:00
嗯,诶不对,准备找对象了啊。哎,等于view啊,哎,这个uiu求点。Get well。2.62的,诶不能在这儿具体写明了。你说具体的这个fragment不一样,我也说啊,对fragment不一样,我也不知道是谁啊。是不是应该抽象一下是吧,哎,我这呢,就叫一个layoutd方。嗯,这个呢,我们就得是一个抽象的。这个呢,就不能是private了。行CTRLC,哎,那这又是个抽象类。行。我们来看一下啊,就是因为我们具体的fragment不一样,所以呢,我们这时候没办法提供一个具体的success,所以应该抽象一下。啊,然后呢,把它添加一下,添加完以后,嗯这呢,我们呃也想写说我这个当前那个success set这个visibility,哎,我显示不显示啊,啊那也一样啊。
17:10
等于贝塔。如果是个success,那有点。嗯。没什么。没有点。In。哎,这就设置它的一个显示与否的一个效果啊行,那这个逻辑的话,我们目前呢,就先写成这样。
我来说两句