教你仿写 Flipboard 的翻页效果

本文介绍如何仿写Flipboard的翻页效果,通过分析翻页的核心原理,利用属性动画、canvas几何变换和camera旋转平移来实现。提供详细流程和代码示例,帮助读者理解和实现这一动画效果。
摘要由CSDN通过智能技术生成

前言

自从清明放假之后,状态就一直一般般,(放假使我快乐,不要上学,我要放假!)导致更文也断了一段时间,鸽了好一段时间。痛定思痛,最近决定重新恢复更文。鉴于前段时间在学习扔物线大大 HenCoder 的自定义View系列文章,看到其中给出了一些可供仿写的酷界面,打算尝试仿写其中的 Flipboard 红板报的翻页效果(加强版)

动画效果如下:
效果

分析

  • 核心:图片本身不旋转,旋转的是”翻折的 canvas “,在处理过后的canvas中绘制图片
    1. ”右侧”(指 最开始 “翻折的 canvas”)翻折一定角度,”左侧”(指 最后 “翻折的 canvas”)无变化,分别绘制;
    2. 将 “右侧” 旋转 270°,”左侧” 配合旋转,分别绘制;
    3. “右侧”无变化, “左侧” 翻折一定角度
  • 涉及知识点

    1. 属性动画 的使用,不了解的可以看我的另一篇分享Android 属性动画
    2. canvas 的使用,主要是 几何变换
    3. camera 的 旋转平移
    4. 关关关键 要区别二者的 坐标系,这一点很重要,不了解清楚可能做出来的效果面目全非,别问我怎么知道的。。。。

    上述不清楚的,或者想要深入学习自定义View的,推荐大家去 扔物线大大的 HenCoder 专栏学习一波

  • 简要流程图
    就简单解释一下旋转到90度时的处理流程(没找到方便的画图软件,很难受,读者有合适的给推荐一哈啊~)
    流程图

    1. 图一为正常状态下的坐标系,灰色部分表示当前canvas
    2. 图二:假定此时进行到动画2,且旋转到90度,canvas的坐标系旋转90度,然后绕camera的y轴旋转一定角度,应用到canvas后,canvas变为图中红+粉色那个样子(现需要注意二者坐标系,图中仅仅标识canvas的坐标系)
    3. 然而我们只需要翻折的那部分用来绘制翻折起来的图片,因此对红色部分进行裁切。
    4. 图三:而由于我们原本的图片是不进行旋转的,因此我们需要将坐标系还原回来,这样我们绘制图片时候,就只会在红色翻折起来的canvas中绘制。

    剩下的另一半原理也是一样的,大家自己脑补吧。。

    (不知道合适的绘图软件,用windows自带的画图实在太难受。。)

实现

Demo地址 FilpboardAnimation

直接放代码吧,注释比较详细,对比上面的分析,不难理解。

MapView.java

public <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值