新闻中心

花式实现图片3D翻转效果

时间:2019-09-10 02:32

  一直想搞一个,最近撸出来一个自定义View,包含多个效果,其中一种与之相近。

  camera有一个三维坐标系,x轴水平,Y轴竖直,Z轴垂直屏幕指向你。上面三个API意思很明显就是绕着三个轴旋转一定的角度,camera的处理对象是matrix,将处理后的matrix应用在图片上,就会让一个平铺在屏幕上的图片产生绕x轴或者y轴旋转过后的3D效果了。像这样(盗个图):

  (图片出自另一篇将camera和matrix讲得很不错的文章:传送门在这里)

  这里的preTranslate()和postTranslate()有什么作用?

  通常上理解,preTranslate()就是在一个matrix发生变化之前,给它做一个平移,postTranslate()是在一个matrix发生变化之后做平移。通过参数来看,这里的动作是把它先往左上方移动,然后往右下方移动,目的只有一个:在matrix做旋转处理时改变旋转中心的位置。

  camera旋转matrix时,中心点在(0,0),这是它的旋转中心,而(0,0)点只是matrix的左上角,如果不处理就旋转的话,旋转轴就是matrix的顶边或者左边,这里竖直方向先向上移动了整个bitmap的高度,让它的旋转轴变成了bitmap的底部,如果不移动,则在bitmap的顶部。

  蓝色框的中心就是旋转操作的中心,如果移到绿框位置,则对图片进行以中心为旋转的处理。

  上面这段内容其实就是整个所有效果实现的核心了,如果你跟着这个思路理清楚了,再看代码应该要省力得多。

  其实讲到这里,最关键的原理已经说完了,下面没有什么太干的货了,我们简单梳理一下分割变化的过程吧。

  整体3D翻转,我们处理的是图片的整个bitmap。分割翻转的道理其实是一样的,只是要先做一步:将bitmap均等分割成若干块,放到数组里备用。当启动效果时,依次拿出每个bitmap,处理它的旋转、位移,就可以了。

  1.分割合并效果:这个没啥好说的,整体3D是操作一个,这里分成3个照整体3D哪样处理就可以了。唯一要注意的一点是:每一块bitmap平移回来的时候,记得算对参数,把图片完整的拼回一起。

  2.百叶窗效果:唯一的不同就是每一块bitmap翻转的中心不同了,其他的旋转轴都在边沿,而它是在中心位置。3.轮转效果:这个我认为最炫的一个效果,其实原理也就那么回事了,每块bitmap依次执行3D翻转,最后全部翻转过来,就是这样了。

  下面我要说的是一个什么效果呢?例如我们看到的一种人物卡牌,卡牌的前面是人物形象,后面是人物技能。我们今天要做的效果就是卡片的3D翻转翻面。鼠标放在卡片上面卡片翻面,可以看到反面的文字等,正面的图片就卡...博文

  最近公司项目要求做一个图片3d立体旋转的效果,领导给了我一个参考文件,链接稍后附上,今天主要讲实现效果关键的几点:perspective+transform-style+transform...博文

  我的博客已经全部迁移至新地址,欢迎收藏我的个人博客。推荐一个自己的博客:JS--手动实现数组原生方法没想到刚开始没两天就突然断了。还是要时刻鞭策自己啊。主要实现效果:鼠标从不同的方向进入图片,图片所在...博文

  在线预览地址(chrome手机模式,或用手机浏览)github地址:博文

  今天我们来简单的实现一个个人照片墙照片呈不规则的角度摆放,当鼠标放在照片上时,照片会放大;鼠标离开照片时,照片回到原来的状态。其实只要用CSS3的一些属性完全就可以实现这样的效果,无须一行js(因为还...博文

  今天我们来看看如何实现一个立方体翻转的效果,如图看上去很麻烦,实际上实现起来还是蛮轻松的。这里我们使用到的有两个类。android.graphic.Camera 这是在图像学概念里的摄像机,这是一个透...博文

  原由scale(x,y)translate(x,y)解决方案方法一方法二总结原由在看萧大直播写代码,第10次直播时,遇到一个在Canvas内进行图片翻转,里面用到了一块代码,理解起来有点绕,代码如下:...博文

  很酷/em

  款3D特效可以为你的图片增加阴影的效果,而且可以让图片在鼠标滑过的时候出现3D翻转的动画效果。这和之前分享的HTML5 3D动画HTML5 3D正方体旋转动画有着类似的效果 参考示例:

  各位高手,有没有做过下面的这种立体翻转效果的?当然图片是从网络服务端上传的

  之前学习react+webpack,偶然路过webpack官网,看到顶部的LOGO,就很感兴趣。最近觉得自己CSS3过于薄弱,想着深入学习一番,遂以这个LOGO为切入口,好好研究学习了一下相关的CSS...博文

  本周是学习h5并制作一个相关的页面。我最初的想法是做一个骰子,然后还可以自己旋转。但是很遗憾得是没有实现,因为最开始我就直接在画布上画正方体,画了好久没成功。后来去找别人的实例,慢慢跟着学,最后做了一...博文

  高仿3D翻转切换效果效果图:高仿3D旋转效果.gif前言作为Android程序员,或者是想要去模仿一些酷炫的效果,或者是为了实现视觉的变态需求,或者是压抑不住内心的创造欲想要炫技,我们不可避免地需要做...博文

  前段时间看到QQ群里面有朋友问一组图片的3D旋转效果怎么做,虽然之前看到过flash版本的这种效果,但是自己却也没有做过这种效果。于是,就想来练习练习,最终的效果是这样的:其实,这个东西就是要利用椭圆...博文

  Android手机上有众多的炫酷的设计风格,动画必然是APP的一大亮点,所以一个好看的动画效果的实现一直是很多程序员所追求的,所以今天我就给大家分享一个不错的3D翻转动画,让你的APP炫酷起来.首先对...博文

  多的不说,先看效果图:其实,实现起来很简单,就是前面几张博客讲的内容。下面是Demo链接:博文

  原文如果说3D打印是从虚拟到现实的桥梁,那么3D扫描就是那段回程。3D打印要想得到普及,普通消费者能够非...博文

  参考网上的代码,主要是通过动画类,实现图片的3D旋转效果。代码简单易懂,移植方便。下载链接...博文

  最近,3D影片盛行,3D电视技术也层出不穷,3D技术在带给大家非凡的视觉冲击同时,也在告诉大家这背后隐藏了太多的商机。   目前的3D技术大体分为两种:软件技术和硬件技术。所谓硬件技术就是在拍摄影片时...博文

  经常能在展示案例logo的时候见到。logo原本是黑白色,鼠标移入时logo翻转成为彩色。一、实现一张图片的翻转一、HTML结构FrontBack...博文

  公司最近有一个需求,是打算做一个轮播图的展示界面,不过和传统意义上不同,并非是在手机app的顶部展示几张定时切换的固定大小宽高的图片,而是中间长方形,两边向里倾斜,形成对称感的特殊界面,如下图:需要实...博文

环亚