【 Flutter 手势探索】我的第二本小册来了,嵌入式音视频方向
继 《Flutter 绘制指南 - 妙笔生花》 小册之后,经过小半年的业余时间:从整体构思
到代码案例实现
,从源码调试
到 分析码字
,我的第二本小册 《Flutter 手势探索 - 执掌天下》 终于和大家见面了。
2. 想说在前面的话
手势
、绘制
、动画
、布局
四个大部分是界面构成
和交互体验
的核心,一切可视的展现
、交互的触发
都脱离不了这四者。 Flutter 作为一个优秀的跨平台框架,但很多人对他并没有全面的认知,只停留在表面的使用上。如果需求的 UI 表现没有内置组件
支持,就无法继续进行,只能找三方库,找不到的话就只能止步于此。这就很容易达到一个瓶颈期: 绘制不会画
、手势不太懂
、动画不会做
、布局一团糟
。
其实无论是 Flutter 、iOS 、Android 也好,Dart 、Swift、 Koltin 也罢,框架
和语言
本身都只是 工具
。而作为工具,就必定要服从于人
,以致其表现的价值
会因使用者的能力而出现云泥之别
。比如说刀,刀因类型不同而作用不同,可削木、可切菜、可解牛、可雕花。但无论是何种刀,都脱离不了 工具
的范畴,而工具的最终目的
是为了拓展人的能力
,是为了解决问题。这时,人就一定要起到主观的能动性
,经验
和技法
的差异就让使同样刀的人,在解决问题时出现优劣之别
。
如果一个工具会和你朝夕相伴
,或可能成为你饭碗
的时候,那你对这个工具再怎么深入研究
都是不为过的,因为我们就是干这个的
。一个演员,台上三分钟,台下十年功。说出流利的台词、克服表演中的重重困难、研究各种表现形式,本就是一个演员的本分。如果只是流于表面,那和流量明星
就没什么区别。既然是干这个
的,我们自然角色就绝不仅仅是一个使用者
,对工具的认识
和了解
,是工具使用者最基础的能力。
思考
是非常重要的过程,这是我们作为人
而言得天独厚
的能力,思之愈甚,得之愈深,人的 经验
就是在不断地探索与尝试
中通过思考而凝结
的。当完整解决一个问题后,在遇到与之类似
的问题时,就会产生自己的预判
,分析问题可行性,来初步构想解决方案。自己的经验是宝贵的,别人的经验只能是别人的,这也是为什么我很不喜欢:别人打着 “不懂就问”
的旗号,自诩 “刚刚入门”
为由,只要遇到点问题,就 “不耻下问”
。无论是学习还是解决问题,独立自主的思考
永远都要排在首位,而 求教询问
一定要建立在自己对为问题的足够思考
和认知
之上,以探讨的姿态
和他人想法交涉,这也是对别人最起码的尊敬。绝非是一味抛出问题
和索求答案
的粗劣行径。
3. 手势操作的价值
对于设备中的应用而言,手势
对于可操作性
而言非常重要。试想一下,如果界面无法响应手势
,那很就难与用户 产生交互
。就像门没有钥匙孔,电脑没有键盘,是无法完成使用需求的,手势响应是应用可交互
的前提。当然除了手势事件外,还有很多其他的场景可以触发事件,比如鼠标事件
、键盘事件
、语音事件
等,不过本册讨论的主体是手指事件。
在一个界面中,小到一个按钮
的点击、复选框
的选择,大到白板绘制
的控制、视口的滚动
,都或多或少存在手势操作的身影。界面通过事件响应
向用户提供操作的可能性。这些操作绝大多数是由手势接触
触发的,无论是单击
、双击
、长按
、拖拽
,还是双指缩放
、双指旋转
、滑动
。其根源都是对用户触点进行响应,触发相关逻辑处理。总的来说手势非常重要,它和应用的关系,就相当于电和电视
的关系,没有电,电视将毫无使用
价值。
工具可以产生的价值
一半源于工具本身,它为功能实现提供了可能性
;还有一半源于使用它的人。Flutter 的手势响应主要是 GestureDetector
提供的回调,让使用者有处理事件的 可能性
。工具非常公平,它对于所有人都是一样的,但它具体可以干什么,这完全取决于使用工具的人
。其实跳出 Flutter
的局限,无论是 Android,还是 web 平台,只要找到对应的工具,那么人的能力
就能施展。就像刀具虽然不同,但是雕刻大师只要找到一把刀,他的经验
和技法
就有用武之地。对于广大的编程者而言,语言和框架也仅是工具
,它对于所有人都是平等的。而我们的 经验
和技法
就是在解决问题中积累的认知
和思想
,在读码中见证的风采
与境界
。
4. 小册内容概述 - 使用层
本册的整体结构非常简单,主要围绕着两个主题:手势回调的使用
和 手势相关源码的探索
。其中 1 ~ 6 章
会通过几个有趣的案例,来讲述一下各种手势回调如何使用。
竖直拖拽手势
:在第 3 章
会实现可随竖直手势拖拽
而伸缩
的弹簧,放手时恢复原长的展示效果。是一个手势入门体验的绝佳案例。
点击相关手势
:在第 4 章
会通过一个有趣的案例介绍关于点击的事件。比如下面按下时添加一个灰色的图章;抬起时变为蓝色;按下后,如果发生移动,会触发触点的取消事件,来去除按下的图章。如何根据触点的回调,来维护界面的数据,使之呈现是一个比较综合的能力。
继手势添加图章后,我们会逐步实现如下井字棋的案例,包括棋子的胜负判定
逻辑。这个案例更为综合,更能锻炼你对数据和逻辑的把握。可以让你更好地体会到手势改变数据,数据决定展现的奥义。
拖拽手势
: 在第 5 章
,会完成白板绘制的效果。根据按下和抬起维护线段列表,就可以实现手势移动时的白板绘制。如下,为了有更好的体验,支持颜色和线宽的选择。
长按手势
:这个白板是逐步完善的,从点收集的优化
,到曲线拟合
,再到颜色、线宽
的选择,最后到长按拖拽
,每个步骤都非常明确,你可以跟着本册,一步一个脚印,一点点完成。
变换手势
:在第 6 章
,开始会介绍如下基于scale
相关回调进行的缩放
、旋转
、平移
变换操作。
| 缩放 | 旋转 | 平移 || ---
| --- | --- ||
|
|
|
评论