《Android-实现书籍翻页效果----完结篇》由会员分享,可在线阅读,更多相关《Android-实现书籍翻页效果----完结篇(76页珍藏版)》请在金锄头文库上搜索。
1、您还未登录!|登录|注册|帮助 CSDN首页 资讯 论坛 博客 下载 搜索 更多o CTO俱乐部 o 学生大本营 o 培训充电 o 移动开发 o 软件研发 o 云计算 o 程序员 o TUP 何明桂的小窝坐而言,不如起而行 目录视图 摘要视图 订阅 安装Chrome浏览器下载资源送30个下载分! CSDN博客“持之以恒”勋章上线了2012年1月MVP申请倒计时13日截止 “IT适合你吗?”智力挑战 Android 实现书籍翻页效果-完结篇 分类: android 2011-04-22 19:55 11553人阅读 评论(126) 收藏 举报 By 何明桂(http:/ 之前由于种种琐事,暂停了
2、这个翻页效果的实现,终于在这周末完成了大部分功能,但是这里只是给出了一个基本的雏形,没有添加翻页的动画效果,由于下个周末开始,需要转向去研究framework层(短暂的酱油期就这样结束啦 o()o唉),将会暂停翻页的开发,所以想要进一步提高功能的童鞋需要自己动手稍后发布的将是本人提供的完结篇代码。 今天一个热心的csdn好友-xiaofanqingzjj告诉我:“这两天把你的代码整了一下,实现了 根据滑动速度或位置翻页自动彈回,或者自动翻转到下一页的动画,等整好了,再发布上来”, 呵呵,感想他的热心,也希望以后大家有什么好的改进也可以发布出来让大家都可以一起学习下。 闲话少说,在最后关头和大家
3、说说完结篇代码里的改进 ,上图看效果: By 何明桂(http:/ 有图可以看到,首先是修复了之前翻起页阴影顶点,定位异常的问题,然后是添加了翻起页背面的显示,以及光影效果,并且修复了,放翻页趋向于垂直方向时,光影效果出现的漂移现象。 文章后边已经上传翻页效果的源码了,我这里不详细讲太多,稍后有时间的话,我会把光影效果这部分代码的原理,另外写一篇博客。下面只是给个概述,方便大家研究代码。 首先分析阴影顶点的定位问题,先来看一种特殊情况: 假设直线aT处于垂直位置,两边阴影宽度都为一致,假设为25px, 容易得aT为25*2=25*1.414,那么处于这种特殊情况下的顶点为:a.x=T.x; a
4、.y=T.y-25*1.414现在我们来看一般性情况:AT依旧为25*1.414,那么如果要定位A点的坐标,就需要求出AB和BT的长度(AB垂直于BT),通过分析可以知道夹角BAT,等于45度角加上夹脚DTE,而夹脚DTE是可以通过Touch点和mBezierControl1的坐标求出的: Math.atan2(mBezierControl1.y - mTouch.y, mTouch.x- mBezierControl1.x); 通过以上计算就可以求出阴影顶点坐标了。翻起页背面分为两部分求解,第一部分是将原图翻转得到:以上效果是通过创建一个Matrix mMatrix和float mMatri
5、xArray 实现mMatrix.setValues(mMatrixArray);mMatrix.preTranslate(-mBezierControl1.x, -mBezierControl1.y);mMatrix.postTranslate(mBezierControl1.x, mBezierControl1.y);翻转之后为了实现翻起后的光影效果,需要使用ColorMatrixFilter ,实现以下效果,对这两个不熟的自己找资料研究去()呵呵,大概就是这些个内容了,具体的自己研究代码去下边给出一个程序中各个点的标示,方便研究: By 何明桂(http:/ 上一篇: 通过重写Adapt
6、er实现多选的ListView 下一篇: Android 实现书籍翻页效果-番外篇之光影效果 查看评论77楼 nglskq85 前天 18:02发表 回复 引用 举报楼主第三个图,属于右下情况,按照代码中的算法,应该是:- Math.atan2(mTouch.y - mBezierControl1.y, mTouch.x- mBezierControl1.x);为何文章写的是:Math.atan2(mBezierControl1.y - mTouch.y, mTouch.x- mBezierControl1.x);例子不正确啊76楼 whyuan9901 2011-09-28 17:10发表
7、回复 引用 举报谢谢你的代码。我现在在改横屏双页翻的效果。调用drawCurrentBackArea函数(画第一页翻起部分的背面)时,传进去的是第2页的bitmap,但由于原来你使用一个计算过的Array来设定Matrix,现在我传进去第2页的内容被水平镜像了,我想把改回来,不知道怎么改,能否给我一下方向。我现在只能把bitmap先通过Bitmap.create先水平镜像一下,就显示正常了,但这样感觉效率太低了,需要处理整个bitmap。75楼 f118119 2011-09-26 17:33发表 回复 引用 举报大神,能给一点如何不全屏显示的思路吗?比如底部留50dip的黑边,可以自定义一些
8、功能菜单。Re: hmg25 2011-09-27 08:47发表 回复 引用 举报回复f118119:我实现的是一个控件阿,你可以在xml中设置下它的大小,不过好像要小小的修改下。74楼 wang882588 2011-09-14 15:07发表 回复 引用 举报AT依旧为25*1.414,那么如果要定位A点的坐标,就需要求出AB和BT的长度(AB垂直于BT),通过分析可以知道夹角BAT,等于45度角加上夹脚DTE,而夹脚DTE是可以通过Touch点和mBezierControl1的坐标求出的:额,按照你的这个意思,AT始终就是25*,还有麻烦你解释一下,为什么角BAT=45+角DTE还有
9、A点是不是直线af的延伸点.af是您下面这个博客中的直线http:/ wang882588 2011-09-14 15:22发表 回复 引用 举报回复wang882588:如果是这样,a点坐标就很好求了哈.degree = Math.atan2(mTouch.y-mCornerY ,mTouch.x-mCornerX);ax=(25*1.414+ Math.hypot(mTouch.x - mCornerX),(mTouch.y - mCornerY)*cos(degree);ay=(25*1.414+ Math.hypot(mTouch.x - mCornerX),(mTouch.y - m
10、CornerY)*sin(degree);73楼 blstbbcxz 2011-09-05 13:29发表 回复 引用 举报LZ为何不回答我的问题。72楼 blstbbcxz 2011-09-02 16:33发表 回复 引用 举报楼主你好!我想问下,在绘制折页阴影条(经过rotate过来的)的时候 rotate之前为何在屏幕外的阴影条上的字是旋转过的(rotate以后是正合适的)而不是正常的(rotate以后是歪的),之前没有将放入其中的canvas也旋转啊?71楼 wwwzhiqiuyiye111 2011-08-30 15:24发表 回复 引用 举报如果是纯文本而不是图像那又怎么翻页呢!R
11、e: hmg25 2011-08-30 16:45发表 回复 引用 举报回复wwwzhiqiuyiye111:你可以查看我升级篇中的例子,我就是读取SD卡中的txt文本,转为图片用于翻页70楼 lang_sri 2011-08-29 11:40发表 回复 引用 举报学习了69楼 yespie 2011-08-29 09:57发表 回复 引用 举报good68楼 wofbhfbvd 2011-08-25 11:07发表 回复 引用 举报好贴果断顶!67楼 wofbhfbvd 2011-08-25 11:07发表 回复 引用 举报好贴果断顶!66楼 dhjcontinent 2011-08-18
12、22:36发表 回复 引用 举报博主文章中这句话“以上效果是通过创建一个Matrix mMatrix和float mMatrixArray 实现”上面的图中有一个BUG,图中背面左下和右上各有一小块没有贴上图,不知有没有好的解决方法?O(_)O谢谢!Re: hmg25 2011-08-18 23:12发表 回复 引用 举报回复dhjcontinent:这个问题在我http:/ dhjcontinent 2011-08-19 21:42发表 回复 引用 举报回复hmg25:博主,那张图中的背面左下和右上有两个地方没有贴上图,升级篇中只是在背面先用0xFFAAAAAA灰色填充,然后用带有文字的bitmap填充,然后再绘制光影效果,看不出BUG,但是如果先用0xFFFF0000,即红色填充,仍旧可以看到背面是有BUG的,背面左下和右上那两个小区域显示红色,没有贴上带文字的bitmap。或者博主哪部分代码修复了这个BUG,可能我没有看出来,麻烦博主指出,O(_)O谢谢。Re: hmg25 2011-08-20 08:46发表 回复 引用 举报回复dhjcontinent:哦,我理解你的意思了,那个不是bug,因为背面的图片是旋转后,直接贴上去的,如果要把那个带有弧度的区域也贴上图的话,操作