Andorid 翻书效果
本文内容
- 项目结构
- 环境
- 演示
- 参考资料
翻书效果,主要采用绘制贝塞尔曲线的方法。本文有三个演示:
简单翻书效果。翻下一页后,当前页不会消失。 翻书时的贝塞尔曲线。演示翻书时,贝塞尔曲线的路径和要素。 完整翻书效果。
下载 Demo
(运行源代码,请先将压缩包内 test.txt 文件复制到 SD 卡根目录)
项目结构


图 1 项目结构 图 2 程序主界面
环境
- Windows 2008 R2 64 位
- Eclipse ADT V22.6.2,Android 4.4.2(API 19)
- SAMSUNG GT-8618,3.5英寸屏(7.5x5 cm,苹果一样),Android OS 4.1.2
演示
实现翻书效果,就是对当前页和下一页的剪切、组合过程。如图 3 所示,可以看到3个部分:当前页的可见部分(绿色部分);当前页的不可见部分(黄色部分),即当前也的背面;下一页(蓝色部分)。
如果你不了解贝赛尔曲线,先查点资料单独体会一下贝塞尔曲线,也不用太仔细。本例是从触摸屏幕的那个点开始,确定绘制贝塞尔曲线的各个要素,基本都是数学问题。最后,加上效果。
图 3 程序中各个点的标识
需要注意的地方:
1,翻书时,页背面有两部分处理,一是将原图翻转,利用Matrix mMatrix和float[] mMatrixArray 实现,而是,原图翻转后的光影效果,需要使用 ColorMatrixFilter。
2,书边缘的阴影部分。

图 4 简单翻书效果(左:当前书页;中:翻下一页;右:翻上一页)

图 5 翻书时的贝塞尔曲线(左:当前书页;中:翻下一页;右:翻上一页)
在图 5 你可以看到,贝塞尔曲线的各个区域和要素。

图 6 翻书完整效果(第一个:当前书页;第二个:翻下一页;第三个:翻下一页时消失,出现书第二页;第四个:翻上一页)
贝塞尔曲线
数值分析领域中,贝塞尔曲线(Bézier curve)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。
贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau算法开发,以稳定数值的方法求出贝塞尔曲线。
- 线性贝塞尔曲线
其路径由给定点 P0、P1,线性贝塞尔曲线只是两点之间的一条直线。其贝塞尔曲线 B(t):
![]()
线性贝塞尔曲线演示动画,t 在 [0,1] 区间
因此,线性贝塞尔曲线等同于线性插值。
- 二次方贝塞尔曲线
其路径由给定点 P0、P1、P2,其贝塞尔曲线 B(t):
![]()
二次贝塞尔曲线演示动画,t 在 [0,1] 区间
TrueType 字型就运用了以贝塞尔样条组成的二次贝塞尔曲线。
- 三次方贝塞尔曲线
P0、P1、P2、P3 四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于 P0 走向 P1,并从 P2 的方向来到 P3。一般不会经过 P1 或 P2;这两个点只是在那里提供方向资讯。P0 和 P1 之间的间距,决定了曲线在转而趋进 P3 之前,走向 P2 方向的“长度有多长”。其贝塞尔曲线 B(t):
![]()
三次贝塞尔曲线演示动画,t 在 [0,1] 区间
现代的成像系统,如 PostScript、Asymptote和Metafont,运用了以贝塞尔样条组成的三次贝塞尔曲线,用来描绘曲线轮廓。
四次、五次贝塞尔曲线演示动画,t 在 [0,1] 区间
- 一般化
n 阶贝塞尔曲线可做如下推断。给定点 P0、P1、…、Pn,其贝塞尔曲线 B(t):
![]()
![]()
假设 n=5,则
![]()
上面公式可用递归表达。
用
表示由点 P0、P1、…、Pn 所决定的贝塞尔曲线。则,
![]()
换句话说,n 阶的贝塞尔曲线,即双n-1 阶贝塞尔曲线之间的插值。
参考资料
Andorid 翻书效果的更多相关文章
- turn.js实现翻书效果
JS插件网 http://www.ijquery.cn/?p=173 描述:Turn.js 是一个轻量级的 (15kb) jQuery/html5 插件用来创建类似书本和杂志翻页效果,支持触摸屏设备. ...
- Unity3d:megaFierstext(翻书效果插件)
附件中是一款翻书效果插件,由于附件上传大小限制,在下载完后,需要在megaFierstext_BHYF\Assets\Resources\Textures下添加图片精灵并修改属性为Texture,即可 ...
- 基于CSS3新属性Animation及transform实现类似翻书效果
注:本实例JS部分均以原生JS编写,不善用原生JS的,可用jQuery等对三方框架改写 先上效果图:(样式有点丑,可以忽略一下下,效果出来了就好,后期加到其他项目中方便更改0.0) 类似翻书效果,原本 ...
- Turn.js 实现翻书效果的学习与总结
最近CTO给我分配了一个移动端H5开发的任务,主要功能是需要实现翻书效果,我听过主要需求后,当时是呀!!!接下来自己尝试使用fullPage.js和Swiper来实现翻书效果,结果效果都不是非常的理想 ...
- JS实现图片翻书效果示例代码
js 图片翻书效果. picture.html <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- JS实现图片翻书效果
picture.html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http- ...
- HTML5 3D翻书效果(双面效应)
最后使用HTML5翻书效果达到测试,比较简单,它的升级版是 最后一个问题: 1)后,原来的页面连环画将成为一面镜子 2)无法实现双面翻书. 3)明显感觉页面似有近遮挡标志. 这次的升级版本号实现过程比 ...
- [知了堂学习笔记]_css3特效第一篇--旋转的背景&翻书效果
一.html遮盖层与css3的旋转动画 >效果图(加载可能会慢一点儿,请稍等...): >实现思路:在一个大的div中装入一个底层img和顶层的div(里面的内容按照以上图片呈现的样式布局 ...
- 纯css实现翻书效果
前言 最近研究了一下css3的3D效果,写了几个demo,写篇博客总结一下实现的经过.PS:如果对transform-origin/perspective/transform-style这些概念还不了 ...
随机推荐
- SystemParametersinfo的用法(一)
SystemParametersinfo的用法(一) 函数功能:该函数查询或设置系统级参数.该函数也可以在设置参数中更新用户配置文件. 函数原型:B00L SystemParametersinfo(U ...
- Net Framework 2.0 MSI returned error code 1603解决方法
出现这种情况的原因,主要是用ghost做的系统,有很多系统中把ie给绑架了.下面的截图就是ghost做的系统中注册表的显示,通过上面的方法就可以解决这种Microsoft .NET Framework ...
- iReport使用方法
新建报表,依次单击“文件/New…”,弹出窗口 选择”Blank A4”,单击”Open this Template” 依次单击“下一步/完成”,得到一个新的report 单击”OK”按钮完成数据集设 ...
- .NET:Attribute 入门(内训教程)
背景 接触过的语言中,C#(.NET 平台的多数语言都支持).Java 和 Python 都支持这个特性,本文重点介绍 C# 中的应用,这里简单的对 C#.java 和 Python 中的 Attri ...
- windows 下运行 UglifyJS
Node 0.52版本支持windows,因此UglifyJS可以在windows上运行,下面简介他的方法: 1.下载node.exe,现在最新版本0.52,他的官网http://nodejs.org ...
- SharePoint 压缩打包文件代码分享
前言 最近碰到这样一个需求,用户需要批量打包下载sharepoint文档库中的文档,所以,就需要开发一个打包下载的服务. 然后,把打包的代码分享给大家,也许会有需要的人. static void Ma ...
- 详细解读Volley(五)—— 通过源码来分析业务流程
一.初始化请求队列并运行 我们用Volley时,最先开始的就是初始化请求队列,一种常见的写法如下: public class MyApplication extends Application { p ...
- Material Designer的低版本兼容实现(三)——Color
在Material Designer中,色彩再一次被摆到了重要的位置上.官方文档中竟然给出了500种配色方案进行选择.就是为了给不同的手机.电视.手表上带来一直的用户体验. 更多用于控制色彩的属性,可 ...
- Linux Shell 裡一些很少用到卻很有用的指令
Linux Shell 裡一些很少用到卻很有用的指令 2009年11月30日 13:53:00 yaoyasong 阅读数:414 Linux Shell 裡一些很少用到卻很有用的指令 你是不是已 ...
- 再有人问你Java内存模型是什么,就把这篇文章发给他
前几天,发了一篇文章,介绍了一下JVM内存结构.Java内存模型以及Java对象模型之间的区别.有很多小伙伴反馈希望可以深入的讲解下每个知识点.Java内存模型,是这三个知识点当中最晦涩难懂的一个,而 ...





表示由点 P0、P1、…、Pn 所决定的贝塞尔曲线。则,