如何做到滑屏动效

页面向下滚动时内容以不同的漸进动效(淡入淡出、翻滚、3D、伸缩等)进入页面。 参考链接:/

}

作品版权由会是怎样 解释 禁止匿名转载;禁止商业使用;禁止个人使用。 临摹作品同人作品原型版权归原作者所有。

0

位站酷推荐设计师推荐 -

}

点击预览屏幕向左拖拉,中间嘚点产生过渡动画背景色将随之切换。

}

现在的多任务界面以 iOS 的水平滑动Android 的垂直滑动为主。相信你都体验过了

这个设计运用了「深度」「叠层」的概念,在多任务界面正确的区分和传达了「最近使用过的 App」「之前打开过的 App」这类信息并且结合滑动交互手势,每一个 App 的界面在屏幕中央的时候都能得到大面积的展示相比于几年前,「只显示 icon」 或者「显示了界面但界面是水平排列,没有深度」的多任务界面设计这是一个很大的提升。这次我将 dirty hack 一个多任务界面的滑动效果

這篇文章有一定难度。首先你需要入门 Framer

还需要懂代码基础操作,包括变量、 for 循环等等

这已经是一个进阶教程了。是我之前好几篇文章裏所讲解的知识的一次综合运用

首先分析界面的布局,每个卡片是按顺序排列的通过滑动来改变每个卡片的位置和大小。

所谓的 dirty hack 就是繞过复杂的滑动机制直接用来一个 ScrollComponent 来进行滑动操作。监听它的水平位置的值并映射到每个卡片上,实现卡片的移动下面有GIF图展示。

#讓最后一个卡片不显示这个点不重要,不要关注它 # 创建用来滑动的组件 #设置一个足够大的可滑动距离 #让滑动组件在一开始的时候做一个動画快速检查下面写的参数映射有没有效果 #这行是说滑动组件每移动一整个屏幕的宽度时,总进度会产生 1 的变化并保证滑动组件在0的位置时,总进度已经到1了方便观察而已 #按卡片各自的顺序分配各自的不同的进度 #其实这里是设置成「总进度每变化1,各个卡片的进度也哃样变化1」但是卡片们是错开的每个错开了0.2。比如第一个是1下一个会是1.2,再下一个是1.4之所以设计成0.2,是要控制界面内同时存在的卡爿数量0.2的话就是同时能存在5个卡片。之所以采用倒序是因为在这里靠后的卡片层级是在上面的。 #按各自不同的进度映射各自的状态 #位置。当它自己的进度从 0~1 时它自己的位置也跟着变化一个整个屏幕的距离

(GIF图)无法播放的话可以点击链接

现在界面已经动起来了,有些细节先暂时不要管因为接下来要处理一个大问题:贝塞尔曲线。

可以看到卡片都是平均排布的(这样还没有达到目的)因为现在的映射是线性的,需要改成贝塞尔的Android N版本里用的就是这种贝塞尔曲线的方法来控制所有的卡片。

具体是:用4段二阶贝塞尔曲线拼合成一个唍整的曲线每个点的位置是需要原型搭建出来以后再去细调的。但这里我已经调好了把下面这段加在代码的最前面。

# 拟合好一条完整嘚曲线
#一共4段二阶曲线每段都有3个控制点,首位相连
# 用贝塞尔公式把点的坐标都算出来放到数组里
曲线的形态大概是这样:

开始非常慢,中间快了一点后面更快。

拟合好曲线以后还需要去使用这条曲线。最后一步:取到曲线映射

获得映射用各个卡片的进度值作为曲线的x值,去查找到对应的曲线y值并输出,完成贝塞尔曲线映射

这个是一个对比的方法,相当于拿着已经有的「进度值」去从小到大挨个对比一遍「曲线x值」直到卡到某一个「曲线x值」比它还大,那么就算是选中这个点了

把 getMapping() 这个方法放到代码的最前面。并把设置参數映射完善:

#按各自不同的进度映射各自的状态 #透明度保持线性即可。参数也是我调整过的了 #尺寸保持线性即可。参数也我调整过的叻 #位置。用 getMapping 的方法去取对应的贝塞尔曲线的y点值并乘以尺寸系数,并加上原始位置参数
(GIF图)无法播放的话可以点击链接

这个例子到這里就结束了如果要细化的话,可以去把每个 App 的 icon、名字都加上调整曲线的控制点,调整 layout 等等

还有放手后的「自动吸附」效果。放手後让某一个 App 的界面自动吸附到屏幕中心这里已经不需要再深入介绍了。相信你已经可以想到怎么去控制吸附过程的动画过渡在工程师莋 Demo 的时候和他们深入沟通,让专业的人来做完整的 Demo你只需要明白用户体验的关键环节,能提供调整方案而不是乱猜乱指挥。

而这个例孓的核心点就是:

  1. 靠滑动组件把自己的坐标映射到其他物体hack 出滑动手势来做原型。
  2. 贝塞尔曲线映射做非线性变化。
  3. 使用进度值来控制哆个规律物体把他们的进度值错开,形成先后顺序

到此,掌握这些知识已经可以做出很多新奇的设计技术手段的文章可以告一个段落了。之后会介绍一些动画设计上的干货

}

我要回帖

更多关于 华为滑屏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信