本文维护至2020-11-25,现已停止更新。
为了方便阅读博主博客,梳理了博主相关文章,本文将持续更新,记录博主开发过程中的成长经历,跳过开发中踩过的坑,快速实现移动端产品的开发、更新和迭代。
博主自2016年从事软件开发工作以来,深感敲代码的不易,重复的制造车轮子只是在浪费时间,作为一位优秀的开发者,应当利用好已有的优秀开源框架,将富余的时间用在研究底层技术上。
程序员那些事儿 - Android开发经验、能力提升
Android功能开发 - 自定义Android消息推送提示音
Android功能开发 - Android项目中音频文件的存储位置
Android功能开发 - Intent将在APP中获取到的联系人信息保存到通讯录
Android功能开发 - 在APP中打开设备中安装的应用市场
Android功能开发 - 隐式意图 implicit intent
Android功能开发 - Android数据存储之文件File
Android功能开发 - Android数据保存-shared preference
Android权限 - Android权限sharedUserId使用:设备关机重启、调用隐藏方法、静默安装升级卸载APP等需要使用system权限的场景
Android权限 - Android安全要点
Android性能调优 - 在Android中解决内存溢出 – OutOfMemoryError
Android性能调优 - java.lang.OutOfMemoryError
Android性能调优 - Android性能优化之内存
Android性能调优 - Android UI性能优化
Android机型适配 - Android多语言那点事(支持8.0+)
Android机型适配 - Android官方建议关于Android APP UI界面设计的一些参考原则
Android机型适配 - UI设计基础知识点之Android设计规范篇
Android机型适配 - APP兼容不同的设备之适配不同的系统版本
Android机型适配 - APP兼容不同的设备之适配不同的屏幕
Android机型适配 - APP兼容不同的设备之适配不同的语言
Android的四大组件
WebView - Android WebView
WebView - Android WebView 的使用(超详细用法)
RecycleView - RecyclerView系列,如何优雅的实现分割线
RecycleView - RecyclerView系列,RecyclerView的基本使用
ListView - ListView组件中嵌套GridView(重算GridView的高度)
ListView - Android列表组件ListView子项的点击事件与子项中组件的点击事件
ListView - Android列表组件ListView使用详解之滑动事件监听
ListView - Android列表组件ListView使用详解之屏幕触摸事件
ListView - Android列表组件ListView使用详解之数据为空提示信息
ListView - Android列表组件ListView使用详解之动态加载或修改列表数据
ListView - Android列表组件ListView使用详解之设置显示第几项子项
ListView - Android列表组件ListView使用详解之取消子项的点击效果
ListView - Android列表组件ListView使用详解之隐藏滚动条
ListView - Android列表组件ListView使用详解之设置分割线
ListView - Android列表组件ListView使用详解之ViewHolder提高效率
ListView - 设置ListView的高度(重算组件子项)
RadioButton - 自定义RadioButton:改变文字上、下、左、右图片,可设置图片大小(宽高)
TextView - 设置TextView显示文本倾斜
GridView - GridView组件常用属性
CheckBox - 修改CheckBox选择框、设置选择框颜色
AS安装配置 - Android Studio 设置国内镜像网站
AS安装配置 - 在 Android Studio 中配置的忽略文件
AS安装配置 - 在Android Studio中配置SVN及仓库代码管理
AS安装配置 - Android Studio 下载 Gradle 失败或下载速度慢的解决方案
AS安装配置 - Android Studio中gradle项目构建
AS安装配置 - Android Studio新建工程并安装Genymotion模拟器
AS安装配置 - Android Studio的常用配置
Android开发问题汇总 - 极光:Unable to get provider cn.jpush.android.service.DownloadProvider
Android开发问题汇总 - Fragment中嵌套Fragment,不显示
Android开发问题汇总 - Lint found fatal errors while assembling a release target
Android开发问题汇总 - Android 更换 APP Logo 无效问题处理
Android开发问题汇总 - Android WebView 加载闪退问题处理(Error inflating class android.webkit.WebView)
Android开发问题汇总 - Gradle插件升级与AAPT2编译和打包资源工具相关问题
Android开发问题汇总 - 相机调用失败原因
macOS 开发环境搭建 - macOS中配置JDK环境变量
macOS 开发环境搭建 - macOS配置Android SDK 环境变量
macOS 开发环境搭建 - macOS中安装node.js
macOS 开发环境搭建 - Mac中NTFS格式文件的读写
Objective-C - Objective-C中的方法说明
Objective-C - Objective-C中编程小技巧
Objective-C - Objective-C中NULL与nil的区别
Objective-C - Objective-C中类是如何存储在内存中的
Objective-C - Objective-C中的访问权限
Objective-C - Objective-C中类的声明与实现
Objective-C - Objective-C中NSString的使用
Objective-C - Objective-C中注释和函数的定义
Objective-C - Objective-C中@符号说明
Objective-C - import指令与include指令的区别
Apple开发问题汇总 - iOS网络请求错误nw_proxy_resolver_create_parsed_array PAC evaluation error:NSURLErrorDomain:-1004
Apple开发问题汇总 - Objective-C中异常处理
CMD终端命令 - ADB 命令使用,优质项目推荐
CMD终端命令 - 使用adb命令导出设备中安装的APP中的数据库(DB)文件
CMD终端命令 - 使用adb命令对连接设备进行截图,并保存到电脑
CMD终端命令 - Mac终端常用命令
Git - git 本地仓库和远程创库的同步
Git - git基本命令行
Git - windows 下修改git 登录账号密码
Git - 版本控制器SmartGit
Git - SmartGit(试用期30后),个人继续使用的方法
SVN - 小乌龟SVN安装和使用
SVN - TortoiseSvn小乌龟安装教程
Maven中央仓库 - 发布项目至maven中央仓库汇总(流程+问题)
Maven中央仓库 - 将你自己的项目发布到maven中央仓库
TFS - Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)
TFS - Team Foundation 使用git克隆或者拉取,显示验证失败
Hexo博客搭建 - Hexo + Butterfly + GitHub/Coding 搭建个人独立博客
Hexo博客搭建 - Hexo + Coding 搭建博客之自定义域名的坑
Hexo博客搭建 - 站点访问人数 Buszanui 插件数据统计错误
Hexo博客搭建 - Valine评论插件报错:Code 403
Hexo博客搭建 - Butterfly 最新评论 newest-comments 401
Java语法 - 数组在声明时的小建议
Java语法 - Java数据类型转换
MarkDown - Markdown基本语法
MarkDown - MarkDown页面添加锚点,跳转到本页指定位置
MarkDown - 开发工具总结(5)之Markdown语法图文全面详解及其工具介绍
前端 - WebStorm代码输入提示忽略首字母大小写
前端 - WebStorm安装、配置、激活码
前端 - Android JsBridge实战 打造专属你的Hybrid APP
数据库 - Android数据存储-DB(SQLite)
Ionic - 安装指定版本的Ionic或Cordova
Ionic - 取消npm代理或淘宝镜像
Ionic - Ionic创建项目失败Error:read ETIMEDOUT解决方案
Ionic - Ionic 3 项目实战------自定义插件
Ionic - Ionic 3 项目实战------项目开发目录
Ionic - Ionic 3 项目实战------插件原理
Ionic - Ionic 3 项目实战------创建项目
Ionic - Ionic 3 插件应用:plugin基本知识了解
Ionic - Ionic 3 项目的工程目录结构
Ionic - Ionic 介绍、安装、配置、项目不同平台编译、DeBug调试经验总结
Hybrid - Hybrid APP 混合开发模式的选择之路(六:JSBridge—Native代码与JS代码的通信桥梁)
Hybrid - Hybrid APP 混合开发模式的选择之路(五:原生和H5的交互原理)
Hybrid - Hybrid APP 混合开发模式的选择之路(四)
Hybrid - Hybrid APP 混合开发模式的选择之路(三)
Hybrid - Hybrid APP 混合开发模式的选择之路(二)
Hybrid - Hybrid APP 混合开发模式的选择之路(一)
Hybrid - Hybrid APP 混合开发模式简介
第三方开发API - IM即时通讯
算法 - UUID 和 GUID 的区别
算法 - AES加密算法之Java简要应用
算法 - AES加密对称算法
算法 - 插入排序
算法 - 选择排序
算法 - 冒泡排序
面试技巧 - 程序员面试指南
面试技巧 - 程序员面试问题,你最容易忽视的细节!
面试技巧 - 程序员面试→如何巧妙的谈薪资?
博客推荐 - Android面试题总结加强版(一)
博客推荐 - Android面试题总结加强版(二)
博客推荐 - Android面试题总结加强版(三)
博客推荐 - Android面试题总结加强版(四)
Java面试题 - Java基础面试题:String与StringBuffer的区别
Java面试题 - Java基础面试题:int 与 Integer 的区别
Java面试题 - Java基础面试题:使用最快的效率将2变成8
大数据 - 大数据学习路线,如何学习大数据?
大数据 - 大数据?什么是大数据(大数据的概念)?大数据的价值?