或许你听说过 Android 四大组件的概念,但它们并不是「一样大」,只有 Activity 是重中之重。
多维度理解 Activity
Activity 就是「页面」,Android 手机上几乎所有的页面都是基于 Activity 实现的。举几个常见的例子:
微信和网易云音乐应该没什么疑问,第三个是手机的桌面,桌面本身也是一个 App,所以桌面的「页面」也是 Activity。
adb 命令可以查看当前显示的 Activity 名称,以上例子的名称都是查出来的,具体用法是:
adb shell dumpsys activity top | grep ACTIVITY
最后一条就是当前显示的 Activity
Activity 是一个有点特殊的类,我们通过继承 Activity 实现自己的 UI 页面,但却不需要自己调用 new Activity() 之类的代码,Activity 对象的管理是由 Android 系统处理的,开发者只是根据系统提供的回调函数暂时接管 Activity,实现自定义功能。
Activity 的创建、回收以及其他变化都是系统控制的,这个变化过程称为 「生命周期」,如何妥善响应 Activity 生命周期的变化是 Android 开发的重点知识(以后细说)。
Activity 显示的内容都是可以自定义的,具体做出什么功能就考验开发者的想象力了,写点代码试试看吧。
来点代码
上面的介绍单调了点,代码只有写过才能记住。【基础01】的 Hello World 我们已经写过 MainActivity 了,这次就简单写一下 Activity 的「切换」。
因为 Activity 的生命周期由系统管理,所以我们切换 Activity 也不能自己处理,系统提供了一系列 API 给开发者使用,启动 Activity 需要使用到 Intent 和 startActivity。
老规矩,先看效果:
为了增加趣味性,除了页面切换我还加了个动画,初学者可以忽略动画的实现代码。
简述代码编写过程,可跳过
第一步,新建两个 Activity(A和B),修改对应的 xml 文件,添加一张图片。
(ActivityB 的布局只有图片尺寸不同,代码省略了)
第二步,在 ActivityA findViewById,设置点击监听,触发页面跳转到 B。
第三步(可选),添加动画,此处用了一个共享元素转场动画,代码简单且效果不差,推荐。
完整代码在 github,选择 commit 「Demo基础02」。
结
学习基础的过程很容易遇到不理解的内容,一定程度的「不求甚解」是非常正确且实用的学习策略,保持好奇心,持续拓展自己知识的边界,这些「不理解」都会变成「熟悉」的。
看过上一篇的朋友可能发现内容跟预告的不一样,其实我今天写了两篇,另一篇全是文字而且有很多基于实践的例子,我又觉得不太适合这么早放出来了,等总结的时候再发布吧…