13计本2班第二次实验解析

  这次的实验主要是对第一次的实验内容进行延续开发。前一次实验在正确输入登陆账号和密码之后就没了下文,这里就来实现下面的操作。

  我们先来描述下整体的框架:运行APP后首先是一个登陆界面,然后登陆成功之后切换到一个打广告用的欢迎界面,欢迎界面倒计时结束后或者强制点击“跳过”按钮后再次切换到一个空白的界面。

  第一个登陆界面我们已经在前一次实验中完成了,本次实验主要就是实现跳转以及欢迎界面中的倒计时。然后中间夹杂一些小知识点。

  要点一:

  要实现多界面,那么自然首先要创建相应的界面文件和代码文件,分别在“src”中创建JAVA类文件和“res”中创建XML布局文件,然后将类文件和布局文件关联起来。这一步应该是最简单的,主要就是注意下JAVA类文件是继承自android.app.Activity,然后重写一些需要重写的方法(主要是onCreate)。

  要点二:

  创建好新增的欢迎界面和最后显示的空白界面,我们就需要把新增的界面(也就是新的Activity)在配置文件中注册下。哪个配置文件,就是application根目录中的AndroidManifest.xml文件。

  打开AndroidManiFest配置文件后我们选择底部的“application”选项卡,然后滚动条下拉到最下面(Application Nodes),添加一个新的activity节点。这里要注意的就是我们“add”的是top level的元素节点,万一我们先点击了列表中的某个activity,然后再点“add”,则需要选择下正确的级别。

  要点三:

  创建好新的Activity,并在AndroidManiFest配置文件中新增了对应的元素节点,我们就可以在代码里实现Activity的切换了。这里主要用到了Intent。通过Intent的setClass来指定前后两个activity,然后startActivity就可以进行前后两个Activity之间的切换了。

  在切换的过程中我们还可以引入Bundle对象来传递一些需要用到的变量。相当于我们通过KEY-VALUE模式将需要传递的变量放到Bundle对象中,然后将这个对象放入Intent中传递出去。同样在目的地的Activity中我们可以获取当前的Intent,然后将Intent里的Bundle对象获取出来,通过KEY-VALUE中的KEY来获取传递过来的VALUE。

  在实验中也提出了一个思考,就是不传递变量,而是直接把变量写入到一个SharedPreference中去,然后在需要用到的地方读取出来。这个也挺简单的,自己搜索下就可以了,主要就是利用SharedPreference.Editor往里面写东西,然后提交就可以了。同时我们可以在模拟器的“/data/data/应用程序包/shared_prefs”文件夹中找到对应的存储文件(XML格式的文件,你可以导出来看看内容)。

  要点四:

  在欢迎界面中放一张背景图是比较容易做的,然后点击“跳过”按钮后切换到一个新的Activity也和上面的登陆成功后切换到欢迎界面类似,哪怕是倒计时结束后自动跳转到另外一个Activity也是相对容易的,麻烦的地方在于倒计时的显示。

  倒计时前一个实验的时候我们已经用到过了,利用Timer时钟来延迟N秒后关闭对话框。这里无非就是每隔1秒来调用一次,达到指定的秒数就切换。那么有问题的是哪里呢?就是Timer对象中的TimerTask就相当于在执行一个子线程任务,同时在子线程中我们如果要修改UI渲染的主线程中的某个View是不被允许的,会报illegal异常。那么该如何处理呢?

  这里就采用了Message类来实现子线程修改主线程View的功能。其原理通俗的讲就是每次Timer执行任务的时候都喊一声:“那个谁谁谁,我现在在做事情,送个消息出来,消息编号是XXX,帮忙处理下啊!”,在主线程中有个Handler,就像监听器一样关注着这些子线程发出的消息,如果我们指定对编号XXX的消息做某些处理,那么当它听到任何一条消息的时候都去判断下消息的编号,如果是XXX,那么做预定的处理,如果不是就当没听见。

  这样我们就可以在子线程中变相的操作主线程View。

  最近挺忙的,这个BLOG就不注水了,简洁点……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值