Android翻书效果-双页模式

本文介绍了如何实现Android应用中的双页翻书效果,参考了已有翻页原理并记录了自己的实现思路。在翻页过程中,当手指触碰点位于右下角且X轴值小于View一半时,通过数学计算调整触碰点,模拟真实翻页。文中涉及到贝塞尔曲线的应用和坐标点的计算。
摘要由CSDN通过智能技术生成

在写这个双页模式前,首先先借鉴了一下 http://blog.csdn.net/hmg25/article/details/6306479  这里的翻页原理

然后根据自己的理解实现了一下双页模式,但是在加贝塞尔曲线的时候,效果不是很理象,这里把自己的思路记录一下。

这里来讲述一下以右下角开始翻页(参见上图)

当我们开始翻动的时候,与X轴有交战P,与Y轴有交战Q

当X轴上的值(Px)小于View的一半的时候,我们需要重新计算这个点所带来的其他值,我们要将P点移动到M

这里已知T点,M点,O点三点坐标   线段MO=MS ,做垂线TB交PO于B,垂线SA交PO于A

求出S点坐标即可

 

已知T、M两点,可以求出TM的长,TB的长,MB的长,

MO = SM,显然 △TMB∽△SMA ,可以求出SA的长,MA的长,可解得S点坐标

 

这里S点 就是我们的Touch点坐标,根据这个新的Touch点我们去重新计算与X轴,Y轴的交点坐标等等

 

 下面给出一个模型

public class TurnPage extends View {
	
	/**
	 * 页角的枚举 
	 */
	public enum Corner {
		LeftTop,
		LeftBottom,
		RightTop,
		RightBottom,
		None
	}
	
	PointF touch = new PointF();		// 触摸点
	PointF corner = new PointF();		// 页角点
	PointF middle = new PointF();		// 触摸与页角的中点
	
	PointF crossX = new PointF();		// 与X轴的焦点
	PointF crossY = new PointF();		// 与Y轴的焦点
	
	Corner footer = Corner.None;		// 表示页脚
	
	Path all = new Path();				// 全部掀起的Path
	Path part = new
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值