解析用Pixate制作shared element元素扩展转场效果

   很久没有更新教程了。最近一阵比较忙。今天简单分享下如何用Pixate制作利用单个元素进行扩展转场的效果。

  效果如下:


  其实这个效果在Pixate里制作并不难,只是步骤相对有点繁琐。

  最重要的是,一定要自己清楚想要达到一个什么效果以及在此过程中如何去拆分、组合一些原来来达到目的。

  首先,我分析了一下我想要的效果的一些关键细节点,这有助于我更好的选择有哪种方式在达到我想要的效果。

  一、 关键细节点如下:

  Cover image(封面图)的Transition(转场动画)在视觉上需要看上去是无缝连接的。

  在默认状态下表现出Card(图片)特有的属性。即:Cover image(封面图)的左/右上角与Card(卡片)需要有一致的圆角效果)

  在Cover image(封面图) 转到Detail(详情页)后,所显示的Thumbnail(缩略图)需要是四个角都是直角

  Card(卡片)上得 Title(标题)单独具有fade in/out的渐隐效果

  Card(卡片)在转入detail(详情页)时有从中间拉伸打开的效果

  根据以上这几个关键细节,我将所需要的元素单独提取出来。

  将封面页的卡片拆分成4个不同作用的元素:

  Image for transition (作为转场动画时使用,同时用作Detail页面的Thumbnail)

  Cover image(作为默认显示下使用)

  Card background(用于默认显示的Card背景,同时在制作时我复制了一个相同的层用于转场时拉伸时显示的动画素材)

  Title(独立的标题用于fade-in/out渐隐动画)


  二、 实现原理:

  其实实现原理很简单,我们一开始将带有圆角的cover image与card background一起默认显示出来,同时将image for transition放置于cover image一样的位置,并把它设置为隐藏。

  当点击目标卡片时候,带有圆角的默认cover image隐藏,同时image for transition马上显示出来,并进行位置的移动和缩放。最后设置其大小和位置在detail详情页面中的制定位置。这样一个“偷梁换柱”的过程就可以实现在默认情况下看到是带有圆角属性的图片卡片,但是在转到详情页之后图片则显示为正常的四个角为尖角的图片。

  最后再单独设置Title标题的动画即可。

  三、 布局结构:

  接着利用这些素材来进行以下的布局。(理论上来说,在布局上没有严格规定Image for transition必须放在cover image的上面。但是在实际项目中我们会发现,无论是从整理打包层级的角度出发还是设置整个项目中得几个关键场景的角度出发。将cover image与Card打包成组为一个主题会方便很多。让image for transition独立依附于card组合之上是比较好的一种选择。)


  四、 过渡动画原理:

  在pixate内没有自定义的动画路径。所以想要制作类似路径动画比较困难。

  但是我们通过简单的分析还是可以模拟一部分的路径动画。

  在这个案例中我们可以知道cover image其实是经过Y轴的下降和X轴的平移以及自身的缩放来制造出曲线路线的动画效果。

  从下图中我们可以看到目的是从A点得位置移动到B点位置。

  在这一过程中下降和平移虽然是2个分开的步骤,但是我们可以通过设置2个move之间delay的延迟差来表现下降的同时平移,并且再配合缩放和设置合适的动画曲线来缩放来达到最终的效果。

  这个过程需要耐心的不断的调试才能调试出比较满意的效果。所以各位在制作类似的效果时一定要耐心,不断地尝试。切忌浮躁~

时间: 2024-10-27 02:41:50

解析用Pixate制作shared element元素扩展转场效果的相关文章

[译]Workcation App – 第四部分. 场景(Scenes)和 RecyclerView 的共享元素转场动画(Shared Element Transition)

本文讲的是[译]Workcation App – 第四部分. 场景(Scenes)和 RecyclerView 的共享元素转场动画(Shared Element Transition), 原文地址:Workcation App – Part 4. Shared Element Transition with RecyclerView and Scenes 原文作者:Mariusz Brona 译文出自:掘金翻译计划 译者:龙骑将杨影枫 校对者:张拭心.Feximin Workcation App

jsoup解析html时,若没有查找到相关标签,Element元素的返回值如何判断为空?

问题描述 jsoup解析html时,若没有查找到相关标签,Element元素的返回值如何判断为空? 1900119429(美)Cay S. Horstmann,Gary Cornell著TP312JA978-7-111-25611-311,852页CNY118.00机械工业出版社2008JAVA核心技术.卷Ⅱ,高级特性.Volume II,Advanced featuresJAVA语言1 10000023610-13-081933-6737p.RMB13.00Sun Microsystems P

Photoshop制作花朵为主元素的报纸广告设计

  Photoshop制作花朵为主元素的报纸广告设计.本实例中通过色调的调整制作出热情.活泼的画面背景,结合卡通元素,让广告充满童趣,可爱的感觉,让画面整体具有亲和力.先看看效果图操作 本实例中通过色调的调整制作出热情.活泼的画面背景,结合卡通元素,让广告充满童趣,可爱的感觉,让画面整体具有亲和力. 先看看效果图 操作步骤: 1.新建空白图像文件,设置参数如下: 宽度:12cm高度:8.03cm分辨力:300px 2.打开素材"花丛.jpg"文件,将其拖拽到当前图像文件中,调整大小和摆

CSS教程:block element与inline element元素详解

块元素(block element)一般是其他元素的容器元素,块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P"."form"这个块元素比较特殊,它只能用来容纳其他块元素. 如果没有css的作用,块元素会顺序以每次另起一行的方式一直往下排.而有了css以后,我们可以改变这种html的默认布局模式,把块元素摆放到你想要的位置上去.而不是每次都愚蠢的另起一行.需要指出的是,table标签也是块元素的一种,table based layout和css

实例详解网页制作中CSS元素的定位应用

css|网页|详解 1. position:static|无定位 position:static是所有元素定位的默认值, 一般不用注明,除非有需要取消继承的别的定位 example: #div-1 {  position:static; } 2. position:relative|相对定位 使用position:relative,就需要top,bottom,left,right4个属性来配合,确定元素的位置. 如果要让div-1层向下移动20px,左移40px: example: #div-1

解析jquery获取父窗口的元素

("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementByIdx_x("父窗口元素ID"): 取父窗口的元素方法:$(selector, window.parent.document); 那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document); 类似的,取其它窗口的方法大同小异 $(s

详细解析7个制作GIF动画的心得技巧

  同学们喜闻乐见的大多是来自设计师个人的经验分享,由于是过来人,他的技巧可能就能解决你现在的问题,实用性很强,今天针对Gif动画方面,分享7个鲜为人知的技巧,全是私人藏品,在这方面有问题的同学来瞧瞧有木有你想要的答案吧. 在InVision,GIF可不是消磨时间的玩意--它们在市场和教育方面扮演着强有力的角色.更有甚者,我们在首页上用的就是GIF,而不是基于代码的炫酷动画.实际上,人们开始询问,"那些GIF你们怎么做出来的?"是时候透露一下秘密了. 设计GIF 1. 秘密武器 这就是

《深入理解C++11:C++ 11新特性解析与应用》——2.9 扩展的friend语法

2.9 扩展的friend语法 类别:部分人 friend关键字在C++中是一个比较特别的存在.因为我们常常会发现,一些面向对象程序语言,比如Java,就没有定义friend关键字.friend关键字用于声明类的友元,友元可以无视类中成员的属性.无论成员是public.protected或是private的,友元类或友元函数都可以访问,这就完全破坏了面向对象编程中封装性的概念.因此,使用friend关键字充满了争议性.在通常情况下,面向对象程序开发的专家会建议程序员使用Get/Set接口来访问类

《深入理解C++11:C++ 11新特性解析与应用》——2.3 扩展的整型

2.3 扩展的整型 类别:部分人 程序员常会在代码中发现一些整型的名字,比如UINT.__int16.u64.int64_t,等等.这些类型有的源自编译器的自行扩展,有的则是来自某些编程环境(比如工作在Linux内核代码中),不一而足.而事实上,在C++11中一共只定义了以下5种标准的有符号整型: 标准同时规定,每一种有符号整型都有一种对应的无符号整数版本,且有符号整型与其对应的无符号整型具有相同的存储空间大小.比如与signed int对应的无符号版本的整型是unsigned int. 在实际