pyqt 鼠标离开按钮_知乎的药丸按钮(一)知乎的问题出在哪?

6f5b7989df131ff2276ce03ac878761b.png

什么按钮?

众所周知,知乎非常重视用户体验,自从将网页版变成白色以来,各个客户端就频频改版,好几次都是天翻地覆。

近期,iOS 版本的知乎将切换回答的操作从左右划动,改为了上下滑动。

1fbdea5be83e84c0d8768e2a66693454.png
上下滑动提示

为了方便,还添加了一个切换至下一个回答的按钮。这个按钮最近也改动了:

06f0435a0f0d2268a72f2aa0752e839b.png
新按钮

按钮没事的时候还会缩成一个球:

a0136a548288e4fa01bc6e9084d1829e.png
缩成球的按钮

实际上,这个按钮有点点小问题。


什么问题?

第一个问题是外形。

首先啊,球里面的这个图标,难看不说,这么狭长的形状,搞得整个小球看上去就像个椭圆。

而且这个球,太小了:

fae10c62dcda8921afcfee082514f3ee.png
比指甲盖小得多

人机交互领域有个经典的「费茨法则(Fitt's Law)」,用公式表示的话是这样的:

公式左边的 T 是完成动作(比如点击小球按钮)的耗时,右边……

按照人话来说,就是如果按钮越大、按钮位置距离用户位置(比如鼠标位置)越近,用户就能越轻松地完成点击按钮的操作。

实际上费茨法则表示的不光是完成点按的难易度,它也能预知到,用户对这一操作的信心将会有多大。国内特色的开屏广告 + 跳过按钮就是费茨法则的反向运用:

7de6316d398f13d62e7842e00d43b7ac.png
广告 + 非常小的跳过按钮

eb7e6eeae6bbe37dc6995594a52b7dc2.png
让用户收到挫折,主动放弃

所以法则的正向运用,就是让操作不需要集中太多的精力。所以说,知乎的这个小球按钮…有点小。


还有什么问题?

「惯性」。

如果小球挡住了你正在浏览的内容,你可以把它拖动到别的位置去:

179cb4fef32de28c240e9ec9ca123a97.png
https://www.zhihu.com/video/1062808690792472576

当然了,它这么小,实在挡不住什么内容,所以很多人没发现这个功能。

这本应该是一个趣味丰富的出彩的设计细节,但实际上却手感奇差。

讲道理,人去用手指触摸和摩擦一块玻璃,是没有什么「手感」可言的。这块玻璃上的文字、视频等,包括这个按钮,都不是立体可感的。那么为什么这个小球会带来如此生涩的感受呢?

在慢镜头下,我们能发现问题所在:

17cf2c48e94673e4b2443879611b3e75.png
https://www.zhihu.com/video/1062808795176189952

视频中可以看到,第一个动作,我把这个按钮拽住,向屏幕上方移动,然后松开手指。本来紧随着我的手指移动的小球,立即停在了手指最后脱离的位置。

第二个动作,我先把小球拖到了屏幕底部,然后用了很大的力气(手指移动得极快,小球都跟不上了),试图把小球向上扔出去,但小球并没有任何惯性,仍旧停在了我手指离开屏幕的地方。

视频恢复正常速度之后,我又尝试了两次抛掷小球,这时就很清楚这小球为什么这样呆板无趣了。


怎么解决?

要让按钮具有可玩性,我们应该参照物理世界中的规律:

07e18ebbf6bbab45891b455c1c8873f9.png
https://www.zhihu.com/video/1062818664843186176

砂纸手感的小球按钮,距离真实世界的盖子的运动过程,还有两个欠缺:离开手指时的初速度,离开手指后的减速度。

初速度可以认为是由我的手指决定的,我踢球用的力越大,球在离开我的脚时的速度就越大。减速度则取决于摩擦力,表面越粗糙,物体就越早停下。

为此,我们可以用上 Spring 动画。这是一种通过模拟物理属性来生成动画曲线的方式。

我们可以用 Principle 做一个简单的原型,使用 Spring 动画:

c4ecdef24135dc30b4feb01371cb1fa8.png
Principle 中被称为弹性动画

「张力」越大,速度越快;增大「摩擦力」可以使动画更“泥泞”,减小「摩擦力」动画会更“光滑”,甚至来回弹跳。

关于 Spring 更具体的内容可以另外开一篇文章讨论讨论。总之这两个参数做出的原型是这样的:

90bac128b0682a121664c8da9703901c.png
被压缩成 30 帧了,所以不流畅https://www.zhihu.com/video/1062826199293689856

怎么实现?

如何在 iOS 中实现这样的动画效果呢?

请看第二篇:知乎的药丸按钮(二)我的 iOS 实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值