美文网首页
Android 技能树

Android 技能树

作者: richy_ | 来源:发表于2018-04-15 14:19 被阅读85次

Android 技能树

基础知识

java基础

  • lambda表达式
  • 正则表达式

设计模式与架构

  • 六大设计原则
  • 23种设计模式
    • 单例模式
  • MVC
  • MVP
  • MVVM

数据结构

  • Map实现
  • 红黑树

面向对象

基础算法

开发环境

  • Eclipse
  • AndroidStudio
    • Gradle语法
      • implementation
      • api
  • JDK
  • 自动化打包
  • 多渠道打包

Android SDK

  • 解决国内SDK无法下载问题

Android 模拟器

Activity

  • 生命周期
  • 启动模式
  • 对话框形式的 Activity
  • 状态保存与恢复

Service

  • 生命周期
  • 保活
  • IntentService
  • 与Activity通信

BroadcastReceiver

  • 静态注册
  • 动态注册

ContentProvider

  • 保存并共享数据
  • ContentResolver、ContentObserver

Fragment

  • 生命周期
  • 与 Activity 通信
  • crash 之后多个 Fragment 重叠
  • 无 UI 的Fragement

多线程

  • 线程池
  • 线程锁
  • 线程安全

UI

Layout

  • FrameLayout
  • LinearLayout
  • RelativeLayout
  • TableLayout
  • ConstraintLayout
  • CoordinatorLayout
  • AppBarLayout
  • CollapsingToolbarLayout
    • AppBarLayout嵌套CollapsingToolbarLayout实现布局联动等操作
  • ViewStub
  • include
  • merge
  • ...
  • 布局优化

View

  • widget
    • TextView
      • 设置文本跟随手指滑动
      • 设置文本样式、文本超链接、点击
      • 解析 HTML
    • Button
      • 设置按压涟漪效果动画,兼容老版本
    • EditText
    • RadioButton
      • 自定义选中与未选中图表
    • CheckBox
      • 自定义选中与未选中图标
    • Switch
    • TabLayout
      • TabLayout+ViewPager
    • SearchView
      • Toolbar+SearchView
    • Toolbar
      • 设置返回箭头、menu、文本颜色
      • 沉浸式状态栏
    • NestedScrollView
    • FloatingActionButton
    • TextInputLayout
    • SwipeRefreshLayout
    • Snackbar
    • VideoView
      • 播放网络资源与本地资源
      • 缓存
      • 全屏与非全品切换
      • 横竖屏切换
      • 自定义MediaController
    • ToggleButton
    • ImageButton
    • ImageView
      • 设置图片缩放模式
    • ProgressBar
      • 圆形与进度条形
    • SeekBar
    • Spinner
    • WebView
      • 加载本地网页,兼容 file 协议
      • 加载速度优化
      • 设置 Cookie 与清空 Cookie
      • 内存泄漏
      • 单独进程加载 WebView,多进程间通信
      • JS安全调用
    • PopupMenu
    • PopupWindow
    • BottomSheetDialog
    • BottomSheetDialogFragment
    • RemoteViews
  • Containers
    • RadioGroup
    • ListView
      • 上拉加载下拉刷新
      • 滑动时不加载数据
    • RecyclerView
      • 自定义 LayoutManger,实现瀑布流等
      • 上拉加载下拉刷新
      • 滑动时不加载数据
    • GridView
    • ViewPager
      • ViewPager + Fragment 懒加载,设置缓存页面个数
    • ExpandableListView
    • ScrollView
    • CardView
    • Gallery
    • ...
  • Date&Time
    • TextClock
    • AnalogClock
    • DatePicker
    • TimePicker
    • CalendarView
  • SurfaceView
    • SurfaceView 预览 Camera
    • SurfaceView 播放视频
    • SurfaceView 计算预览帧中的坐标
    • 多个 SurfaceView 叠加时界面混乱
  • TextureView
    • 同 SurfaceView

Dialog

  • 透明背景的 Dialog

Notification

Custom View

  • layout
  • measure
  • draw
    • 优化绘制速度
  • 定义控件参数
    • 配合 style 获取参数
    • 枚举类型
    • resource资源类型
    • ...
  • 事件拦截与分发
    • 解决滑动冲突
    • 看一些开源框架的源码来学习解决滑动冲突常用的技术

anim

  • View Animation
    • Tween Animation
      • alpha
      • scale
      • translate
      • rotate
      • Interpolators
    • Frame Animation
      • animation-list
  • Property Animation
    • ValueAnimator
    • ObjectAnimator
    • AnimatorSet
  • 弹性动画(手指离开屏幕后继续滑动)
  • Layout 内部随手指滑动而变形
  • ViewGroup 添加/删除子 View 时动画
  • ListView/RecylerView 添加/删除 item 时动画

Resource

  • assets
    • AssetManager
  • res
    • anim
    • animator
    • color
    • drawable
    • interpolator
    • layout
      • 版本兼容
    • menu
    • raw
    • values
      • arrays
      • attrs
      • bools
      • colors
      • string
      • styles
        • 黑夜模式白天模式切换
    • xml

OpenGL

  • 兼容不同的屏幕
  • ...

通信

线程间通信

  • Handler
  • EventBus
  • BroadcastReceiver
  • AsyncTask

进程间通信

  • Binder

HTTP

  • HTTP 协议
  • 提交表单
  • 普通GET请求
  • HTTP header & body
  • https
  • volley
  • okHttp
  • retrofit

Socket

  • 心跳包
  • 网络状态变化重连

WebSocket

  • 同 Socket

Bluetooth

  • BLE

NFC

Headset

USB

数据持久化

Sqlite

  • SQL语句

ContentProvider

File

  • 文件压缩与解压
  • Internal Storage
  • External Storage
  • 7.0 之后使用 FileProvider 共享文件
  • Serializable与Parcelable

SharedPreferences

性能

UI优化

  • 自定义 View 时的 draw 方法优化
  • 布局层次结构
  • 抽象布局的使用
  • 主线程耗时方法检测
  • HierarchyViewer
  • Lint工具

内存优化

  • OOM
    • 弱引用与软引用
  • ANR
    • ANR日志分析
  • 分析
    • Heap
    • adb shell
      • dumpsys meminfo
      • showmap
    • TraceView
    • Dalvik 日志
    • logcat
    • MAT

电量优化

流量优化

适配

OS Version

  • min SDK

Screen Size

Screen px

权限

调试

Logcat

adb

HierarchyViewer

TraceView

Heap

Lint

...

安全

通信安全

  • 组件间通信
  • 与服务器通信

数据加密

数据校验

代码混淆

WebView/JS 安全调用

MD5、DES、RSA、https、证书、权限

反编译与重新打包

手机功能

电话

  • 联系人
  • 通话记录

短/彩信

Camera

Audio

SD卡

传感器

  • 加速
  • 方向
  • 重力
  • 光线
  • 磁场
  • 距离
  • 温度
  • 压力
  • 线性加速度
  • 旋转

NDK

JNI

C/C++

so 与不同 CPU 架构的兼容

开源框架

volley

retrofit

okhttp

fastjson

glide

picasso

fresco

EventBus

butterknife

rxjava/rxandroid

PhotoView

dagger2

...

阅读部分开源框架源码

第三方SDK

地图

语音识别

人脸识别

支付

统计分析

广告

IM

测试

Mokey

MokeyRunner

JUnit

Mock

Robotium

Appium

Athrun(TMTS)

UIAutomator

其他

Intent

AndroidManifest

wifi

国际化

Bitmap

  • 准确计算出 Bitmap 保存为文件后的大小
  • Bitmap的四种属性
  • Bitmap 加载大图优化
  • Bitmap 原理
  • Bitmap 压缩

相关文章

网友评论

      本文标题:Android 技能树

      本文链接:https://www.haomeiwen.com/subject/onmdkftx.html