WanAndroid 项目迁移 KMP
前言 WanAndroid 是笔者的一个个人项目,在此项目中尝试 MVP、MVVM 等代码架构,实践一些主流开源库。目前最新的版本是基于 Kotlin + MVVM + 协程。最近,笔者希望开启一个新的大版本迭代,整体将项目改造为一个 KMP + Compose Multiplatform 的跨平台项目,能够运行在 Android、iOS、Desktop、Web 等多个平台上。这篇文章记录了项目迁…
前言 WanAndroid 是笔者的一个个人项目,在此项目中尝试 MVP、MVVM 等代码架构,实践一些主流开源库。目前最新的版本是基于 Kotlin + MVVM + 协程。最近,笔者希望开启一个新的大版本迭代,整体将项目改造为一个 KMP + Compose Multiplatform 的跨平台项目,能够运行在 Android、iOS、Desktop、Web 等多个平台上。这篇文章记录了项目迁…
2017.10.19 完成初稿 2024.3.22 加入海树,调整排版和部分文字 2024.4.2 重写部分内容 2024.8.31 使用 Kotlin 重写代码,并更新博客,增加了多布局样式的内容 前言 移动设备屏幕比较小,能展示的内容不多,如果有大量数据需要展示时,通常需要以列表来展示。 在早期的 Android 开发中,会使用 ListView 和 GridView 控件来实现大量数据的展示…
在软件开发中,界面设计与功能开发同样重要,美观的界面可以吸引更多的用户。Android 提供了大量的 UI 开发工具,让开发者可以编写出各种各样的界面。本章我们一起来学习 Android 的 UI 开发。 目前 Android 有两种编写界面的方式,一种是在 Android 诞生之初就存在并且沿用至今的 View 体系 ,另一种是 Android 新晋推出的新一代 Android UI 开发框架 …
Kotlin 诞生于 2011 年,由著名的 IDE 公司 Jetbrains 打造并开源。官网地址是 https://kotlinlang.org/ 。Kotlin 是一门现代的语言,它的口号是 Concise. Cross‑platform. Fun. ,是一门现代的,开发者友好的编程语言。 2017 年 Google 宣布将 Kotlin 作为 Android 开发的一级语言,2019 年,…
修改记录 日期 内容 2023.9.18 创建文档 前言 上一篇文章中,我们介绍了 Kotlin 的一些基本信息,相信大家对 Kotlin 有了一个粗略的认认识。从这篇文章开始,我们将介绍 Kotlin 的语法知识,带领大家由浅入深地学习 Kotlin 这门语言。 这篇文章中,我们会主要介绍如何搭建 Kotlin 的开发环境,运行最简单的 Kotlin 工程,以及一些 Kotlin 最基本的语法概…
作为一个后知后觉的程序猿,在学习 Android 开发一年多后才逐渐意识到对代码进行版本控制的重要性。之前几个人一块进行项目开发的时候,都必须要手动把别人的代码 CtrlC CtrlV 一点点地贴到最终的代码中,如果对方有个什么改动,又需要在贴一遍,实在是费时费力。所以,学习 Git 就相当有必要啦。 在学习的过程中,我看的资料是廖雪峰老师的 Git 教程 ,通俗易懂,可以非常快速地帮助大家入门。…
哈哈,上一篇的 🍇 Git 入门(1) Git 介绍 已经是 2017 年写的了,现在都已经是 2021 年 5 月,才回过头来继续整理这个系列的笔记,我实在是太过咸鱼了。OK,闲话少叙,我们进入正题,这篇文章就来简单写写如何安装 Git。 上面这张图是 Git 官网 的截图,点击页面上 Downloads 下方的不同平台(W…
欢迎来到 Android 开发的世界。Android 是目前世界上市场占有率最高的移动操作系统,和苹果的 iOS 系统占据了移动操作系统的绝大部分市场份额。随着移动互联网的兴起,移动端开发正在变得如火如荼。 Android 的历史 2003 年 10 月,Andy Rubin 等人创办了 Android 公司,开发 Android 操作系统。2005 年 8 月谷歌收购了这家仅仅成立了 22 个月…
上一篇 🤖 01 Android 启程 的文章中,Android Studio 在创建项目时自动创建了一个 MainActivity,界面上展示的 Hello World 文案就是在 MainActivity 中。这篇文章将更加详细地介绍 Activity 的相关知识。 Activity 是什么 首先第一个问题是「Activ…
这个表格整理了 Android 系统诞生以来,所有的版本及主要特性介绍。 Android 版本 发布时间 系统代号 API Level 说明 Android 1.0 2008 年 9 月 1 包括一系列基本应用程序,如拨打电话、发送短信、浏览器、地图等 Android 1.5 2009 年 Cupcake - 虚拟键盘 - 插件框架,支持第三方输入法 - 录音机应用 - 程序自动旋转屏幕的支持 A…
这篇文章是我自己对于造轮子学习法的感受。第一次接触这个学习编程的方法是看到一篇解析 ButterKnife 原理的文章《 带你手撸一个Kotlin版的EventBus 》,不同于其他讲流程、贴源码的解析文章,它是从头写一个简单的 ButterKnife,从而讲解实现原理。读者可以按照那篇文章动手来实现一个简单的 View 注入框架,也就是造一个自己的 ButterKnife 轮子。我跟着那篇文章实…
现象 在 Flutter Web 开发中,笔者注意到一个现象:如果有中文文字,会先显示乱码,需要过一会才能正确展示,英文文字通常没有这个问题。 乱码如图所示: 在 Flutter Web 中有三种渲染模式: auto 、 html 和 canvaskit 。点击运行按钮(运行 flutter build web 命令)时,选择的渲染模式是 auto,它在移动端使用 html 渲染,在 PC 端使用…
在开发 Flutter 时,常常需要创建新的页面或新的 Widget,每次都重新手写总是很麻烦,这篇文章介绍一些减少手写样板代码的方式。 笔者使用的是 Android Studio,所以这里的技巧都是在 AS 中使用的。 快捷输入 Android Studio 的 Flutter 插件提供了一些在代码编辑区域的快捷输入,根据这些输入可以快速生成模板代码。最常用的快捷输入是 stless 和 stf…
这是 B 站上一位 Up 主 @HexUp 关于提升编程能力的一系列视频,我觉得很不错,看完收获挺大,因此整理一遍笔记。 一些总结 动手写代码非常重要 没有快速提升编程能力的捷径,只有长期坚持学习,才能逐步提升。 造轮子法对于学习计算机编程非常有效,「What I cannot create, I do not understand」 渐进式提升编程能力,核心在于平滑提升训练难度,每次练习都恰好超…
前言 又到了一年一度的 520,大家都有没有被虐狗呢?赶紧学会下面这个小动画,去赢取女神的芳心吧。 动画效果展示如下: 这个动画的效果和实现思路主要来自 B 站上的这个视频, 【Bilibili】【HTML+CSS】8分钟实现砰砰的爱心动画,快学起来送给喜欢的人吧! 我使用 Flutter 来复刻了一下。 爱心动画 我们来分析一下这个效果: 有 9 个竖直放置的圆角矩形,颜色是对称的,并且排列出一…
前言 最近在学习 Flutter 的一些知识,想着独立写一个小示例来运用一下所学的东西,所以就有了这个Flutter 版本 2048 小游戏的项目。完整代码请戳 Github 。 2048 小游戏曾经也是风靡一时,应该很多人都玩过,不过我们还是简单说一下这个游戏的机制,这里有个网页版的 2048 ,大家可以实际体验一下。一般来说,它是一个 4 * 4 的棋盘,共有 16 个小块,每个小块中,要么是…
背景 在 Flutter 构建 UI 界面时,常常需要使用条件判断,比如某个条件不符合时,不展示某个 Widget,这时往往不能返回一个 null ,而必须要有个 Widget 实例,通常我们会返回一个 SizedBox ,但 SizedBox 还是会创建 RenderObject,即使它没有绘制任何东西,还是会造成一些绘制上的损耗。 这个时候可以使用 Nil 库来代替,Nil 是个 Widget…
在 Flutter 中如果想保存一些简单的数据,我们需要使用 shared_preferences 插件,它可以用来持久化 key-value 格式的数据。 shared_preferences 插件在 Android 上使用 SharedPreferences,iOS 上使用 NSUserDefaults,数据会异步地存到设备磁盘中。 使用方式 在 pubspec.yaml 中添加 shared…
修改记录 日期 内容 2022.2.15 完成初稿 2024.4.17 重新组织变量部分,移除部分内容 这篇文章,我们继续介绍 Kotlin 的基础语法知识,包括 Kotlin 的变量、常量、表达式等内容。 在程序开发中,变量和常量用来储存和传递数据。类型用来描述变量或常量中保存的是什么样的数据。 变量 Kotlin 中的变量可以分为两类: 可变变量 和 只读变量(read-only variab…
Select a result to preview