前提: 公司转型, 新的方向不需要 h5 前端, 我不愿去他们推荐的新公司, 决定辞职, 老板把我留下来, 问我是否有意愿转型做 app, 跟着做一个从 0 到 0.1 的项目, 我考虑了一下, 这也正是我缺少的经历, 我愿意一试. 转 ios 需要有 c 的基础, 建议我转 android. 我选择了转型 android 同时兼顾 h5 的工作, 一条更难得路.
开启 android 的学习开发历程. 这将会是一个很苦的一大段时间, 我愿意挑战一个全新且未知的领域, 希望自己能够坚持下去, 加油.
背景: 前端入行 2 年, 属于自学过来, 没有前端方面的人指导, 目前阶段, 前端基础布局很扎实, js 使用提高中, 使用新的框架等工具, 可以边学边用, 但写的不好. 没有编程思想, 仅是代码的简单堆砌, 但又渴望能改变现状.
java 知识: 0;
android 知识: 0;
老板能够让我转型, 从 0 开始, 我也是挺感激他的. 应该是看到我身上的某些特性, 他特别欣赏, 他一直强调要
第一步
在网上查了相关的书籍, 并购买
安装 android 所需环境
亦是通过网络查询, 安装现阶段使用最多的软件
- 安装 android studio
##与 web 页面的对比
| file | android | web |
| – | – | – |
| 页面 | xml | html |
| 样式 | styles.xml | css |
| 类名 | style>item.name | class |
| 样式引用 | 写在行内; 一个属性一个值 | 类名统一 |
知识点
- 每个 java 文件中都有一个主类, 是AppcompatActivity 的扩展类
- 每个类中有一个启动函数 onCreate() 函数, 类似 java 中的 main 函数( java 中 只有入口文件有一个 main 函数, 或者其他场景是测试使用 main 函数 )
- 使用的每个实例对象都要 import 该类(粗浅的认知)
- 每个活动都是一个类, 要在 mainifest.xml 中注册
- intent 用户活动之间的跳转, 有隐式和显示两种, 也可在活动跳转时加上数据的传递, 由上一个活动传递到下一个活动, 打印信息, 需要在模拟器中点击发生活动跳转
安卓系统是 Linux 系统, 每个应用都是一个用户, 系统给每个应用一个默认 ID, 为应用的文件分配权限, 只有拥有该 ID 的应用才能访问到该用户下的文件, 通过用户来管理文件的独立性
每个应用启动时有自己独立的进程, 每个进程又有自己的虚拟机, 应用代码与其他应用的代码是在相互隔离的环境中返回栈
standard: 每当启一个新的活动, 会在返回栈中入栈, 并位于栈顶. 不论该活动是否位于栈顶, 系统都会再创建一个新的实例, 堆入栈顶
singleTop: 如果栈顶是当前活动, 系统不会再次创建该活动的实例
singleTask: 在创建新的活动时, 系统会检测返回栈中是否有该活动的实例, 如果有则使用该实例, 该实例之上的活动全部被出栈即 先执行目标活动的 onRestart 然后执行其他活动的 onDestroy
singleInstance: 创建新的返回栈,继承某个类, 会自动执行类中的代码, 如: 类中执行了某个函数, 那么继承者也会执行该函数
- 可以不实例化对象, 直接对类进行方法的调用
- 图片命名必须是小写, 数字, 或下划线, 不可使用驼峰式
出现的错误
- 在练习百分比布局时, 由于书上的版本低于我练习版本, 加上 我在build.gradle 中添加配置时, 书写错误, 导致报错, 排查了半天
得出的最后结论是, 库的版本号要保持一致, 不然无法编译通过