- 学习安卓开发,首先要知道安卓是什么,安卓有什么特性,和其他系统有什么区别。安卓是一个不断变化,内涵丰富的操作系统,这句话在后续的学习中会越发深刻。
- 对安卓了解不多的同学,请在网上查找相关资料,也可以查看下面的链接进行了解。可以重点了解近几年安卓的新特性,如权限变化等。推荐通过关注一些公众号(参见前文)来提升关注度。
- Android 开发简介 - GeeksforGeeks
Android Studio 的安装和使用
常用控件(TextView,Button,EditText,ImageView,RecyclerView,Menu,Viewpager2 等等)和常见布局的使用
Activity之间的跳转和通信(registerForActivityResult 的使用)
debug 试试小黄鸭 debug 法
- 第一行代码(第三版)(大概是圣书)
- 注意:书本中的部分内容已经过时,如 kotlin-android-extensions 已经被 ViewBinding 所替代。参考文章: 废弃的kotlin-android-extensions,是时候接受ViewBinding了
-
Android Studio 安装教程
-
Android Studio 连接实体手机为开发赋能 (震声说黑话)
使用夜神模拟器开发:电脑CPU为AMD,不支持VT-x, Android Studio自带模拟器和Genymotion尝试均以失败告终(这种问题现在应该少见了)
要开启开发者模式,可以百度“你的机型+开启开发者模式”。
用过 adb 做这做那的同学应该会很快连上,但是要注意一下你安装的 adb 可能会与 AS 的冲突,或者有版本问题,出问题时可以考虑一下。
有的手机系统会自带网络 adb 可以玩玩,但是好像不稳定有时候连不上。
链接有问题可以自行百度报错内容,也可以百度看看其他教程,欢迎发到群里与大家共享。
教程内容各有千秋,每个人的学习习惯也不同,我们提供的教程也只是九牛一毛,希望大家可以多多尝试,找到适合自己的方法。
注意善用百度、Google 和B站大学即可,有不会、找不到的,也可以随时在群里或者直接私聊问。只要能学到东西,就算是坐悟也是可以的!
简单仿一个B站动态界面
-
两个 Activity
- MainActivity、DetailActivity
- 将 MainActivity 设为启动页
-
在 MainActivity 中:
- 上方一个横向滑动的 RecyclerView 用来显示你关注的 up 主头像和名字
- 下方一个 ViewPager2,ViewPager2 的 item 包括一个 TextView 显示动态简介,一个 ImageView 用来显示动态信息,ImageView 要求能最大程度显示图片所有内容并且不变形(设置 ScaleType)
- 单击 up 主头像或名字时,下方的内容显示更改为该 up 的动态信息(ViewPager2 的 item 变为对应 up 的 item)
- ViewPager2 可左右滑动切换不同 up 的动态信息
动态信息加载本地图片文件即可,不需要实现网络请求,页面参考B站
-
长按 up 主头像或名字跳转 DetailActivity(用 intent 或其他操作传递信息),在 DetailActivity 中:
- 显示该 up 主的个人信息(名字、头像、粉丝数等)
- 一个取关按钮,点击后 Toast 提示取关成功 向上个 Activity 返回数据
- 关闭 DetailActivity 页面 Activity.finish() 方法 返回到 MainActivity 页面,删除 RecyclerView 数据中被取关的 up 并刷新 RecyclerView
刷新允许使用 RecyclerView.Adapter 的 notifyDataSetChanged() 方法,但请优先使用更高性能部分更新数据的方法
-
使用 Databinding 或者 ViewBinding
- 不使用 findViewById()
- 考虑如何封装 BaseDataBindingActivity
两者各有千秋,可以混用,可以只用一个
- 考核 优先使用Kotlin 完成,本次还可以混合使用 Java(另外支持学 Flutter 来写!(虽然但是我也不是很会)),但是下一轮是一定要用 Kotlin 的,毕竟安卓的主要发展方向是 Kotlin 了
- 打包生成 debug 或 release 安装包 apk,和 整个项目一起上传 至 github,apk 包放在GitHub Releases中,后续会有仓库链接收集
- 请注意 规范头像,动态图片等等文件的位置 参考第一行代码的方式
- up数量至少 4 个,数据可用一个类或一个方法生成,如:
class DataSender {
fun createData(): List<Data> {
val d1 = Data("gugu")
val d2 = Data("gugu2")
val d3 = Data("gugu3")
return listOf(d1, d2, d3)
}
}
val data: List<Data> = DataSender().createData()
- 考核对于 项目结构 比较严格,请参考文章Android开发规范:包命名规范,包括后续的考核项目都要有合理的架构划分。提交的时候一定要整个项目提交到 github 上,如果 无法运行可能会影响考核通过
- 代码 尽量简洁 不要太复杂!!!
- 开始了解包名,签名,版本名,版本号等常识,也就是一个 apk 安装包的一些基本属性。
- MainActivity 页面提供如下参考 ,不用一模一样 ,有不清楚的敲我们~