自从之前发布了《Android 实现书籍翻页效果----完结篇 》之后,收到了很多朋友给我留言,前段时间由于事情较多,博客写得太匆忙很多细节地方没有描述清楚。所以不少人对其中的地方有不少不明白之处,也有不少人对其中出现的Bug进行了反馈。今天终于找出了段时间对这段时间的一些问题做个简单的总结。

之前给出的例子只是能使书籍进行简单的拖拽,没有实现翻页的动画效果,很多人希望我能加上这一个,所以首先我们就来说说这个翻页的动画。

其实翻页的动画很容易实现,只要在Touch抬起后不断的刷新mTouch.x , mTouch.y 的值就行了,   你可以使用handler,thread,也可以使用Scroller,我个人比较喜欢Scroller,这个比较简单。

新添两个函数:

private void startAnimation(int delayMillis) { int dx, dy; // dx 水平方向滑动的距离,负值会使滚动向左滚动 // dy 垂直方向滑动的距离,负值会使滚动向上滚动 if (mCornerX > 0) { dx = -(int) (mWidth + mTouch.x); } else { dx = (int) (mWidth - mTouch.x + mWidth); } if (mCornerY > 0) { dy = (int) (mHeight - mTouch.y); } else { dy = (int) (1 - mTouch.y); // 防止mTouch.y最终变为0 } mScroller.startScroll((int) mTouch.x, (int) mTouch.y, dx, dy, delayMillis); } public void computeScroll() { super.computeScroll(); if (mScroller.computeScrollOffset()) { float x = mScroller.getCurrX(); float y = mScroller.getCurrY(); mTouch.x = x; mTouch.y = y; postInvalidate(); } }

接着在按下抬起时调用就行了

if (event.getAction() == MotionEvent.ACTION_UP) {
   if (canDragOver()) {   //判断是否可以翻页
    startAnimation(1200);
   } else {
    mTouch.x = mCornerX - 0.09f;   //如果不能翻页就让mTouch返回没有静止时的状态
    mTouch.y = mCornerY - 0.09f;   // - 0.09f是防止mTouch = 800 或mTouch= 0 要不在这些值时会出现BUG
   }

还需要修改的地方是calcPoints() 这个函数,之前为了防止一个bug出现,添加了if (mBezierStart1.x < 0 || mBezierStart1.x > mWidth) {这个判断,但是在翻页动画时mTouch.x会小于0(从右向左翻时)或者mTouch.x>mWidth(从左往右)这时并不需要在进入这个函数进行处理,所以要在这个情况时将其屏蔽,改为:

if (mTouch.x > 0 && mTouch.x < mWidth) {
   if (mBezierStart1.x < 0 || mBezierStart1.x > mWidth) {

……}

}

经过上边的修改就可以完成动画效果了。

还有的童鞋想将这个做成一个电子书阅读器,但是不知道如何将txt中的内容转换为翻页所需的图片,并在翻页后进行切换。所以我新添加了一个简单的类BookPageFactory,用来读取SD卡中的一个txt,并将读取的内容转换为一个bitmap用于显示。哈哈,这个只是一个功能很小的类,只是给大家做个演示,起到抛砖引玉的作用。大家请根据自己所需的功能酌情修改。

源码附带的是一个简单的带翻页动画的电子书阅读器,大家测试时请将test.txt放于SD卡根目录下:

pagefactory.openbook("/sdcard/test.txt");

新的界面截图:

源码下载地址:

http://download.csdn.net/source/3278901

Android 实现书籍翻页效果----升级篇相关推荐

  1. Android 实现书籍翻页效果----原理篇

    之前看到像ipad上的ibook的模拟书籍翻页的特效感觉很炫,在android上也有像laputa和ireader等应用实现有这个特效,在网上搜索了一下好像也没有现成的例子,所以自己动手实现了一个,现 ...

  2. Android 实现书籍翻页效果----完结篇

    By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 之前由于种种琐事,暂停了这个翻页效果的实现,终于在这周末完成了大部分功能,但是这里只是给出了一个基本的雏形,没有添 ...

  3. Android 实现书籍翻页效果---番外篇之光影效果

    By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 对于之前发布的翻页效果的源码,由于写得太匆忙,注释讲解的不多,且本人文笔较差,至使很多人对其中的很多部分不是很清楚 ...

  4. Android viewpager2实现翻页效果

    为什么要实现翻页效果?减少用户的操作 viewpager2是基于recyclerview实现的,自带懒加载功能 viewpager2是对recyclerview的封装 要实现下面这个效果 viewpa ...

  5. Android ListView 滚动翻页效果

    http://blog.csdn.net/top_code/article/details/9629259

  6. android 模拟真书翻页效果的博客

    http://topic.csdn.net/u/20110422/20/5A405A2E-09B4-4665-A601-FBF38AE16A0F.html

  7. unity 制作书本 翻页效果

    unity 制作书籍翻页效果 unity C# 翻书效果 2D 真实翻页 不使用插件 自制 实现思路: 将书本分为两边,一边一个翻页实现: 下图为书本的右面,以OA为分界线,△OAB是下一面的如上图的 ...

  8. 图书浏览界面html代码,javaScript+turn.js实现图书翻页效果实例代码

    为了实现图书翻页的效果我们在网上可以看到很多教程 在这里推荐turn.js 网上的turn.js 有api 不过是英文的  很多人看起来不方便 .关于代码也是奇形怪状在这里我将详细讲解如何使用turn ...

  9. linux+手机+翻页,在Android手机上实现阅读器的翻页效果

    本篇文章来谈谈怎么使用java实现翻页效果,就像电子阅读器那样. 现在先来看看翻页的原理图: 先了解各个字母表示的含义: A-把书页翻起来后看到的背面区域 B-把书页翻起来后看到的下一页的一角 C-当 ...

最新文章

  1. uiswitchbutton 点击不改变状态_Redux 包教包会(一):解救 React 状态危机
  2. note同步不及时 one_你的生活一团糟,就是因为不懂得管理
  3. 如何防止GSM手机被窃听
  4. secureCRT The remote system refused the connection. .
  5. sklearn逻辑回归 极大似然 损失_收藏!攻克目标检测难点秘籍二,非极大值抑制与回归损失优化之路...
  6. field module的on input和on request区别
  7. 稀疏多项式的运算用链表_用漫画告诉你—什么是HashMap?
  8. 同步逻辑电路和异步逻辑电路
  9. Nodejs入门[在互联网上非常经常,非常疯狂的一个转载]
  10. Github新安全措施:停止Git客户端账号密码登录的解决方案
  11. jquery mobile 中文在线文档
  12. filezilla server 下载、安装、配置教程(包含新版使用配置)
  13. 云台山风景区,感受人生最美的风景
  14. 影视文件下载,合并,修复,转换…
  15. Flask模板中可以直接访问的特殊变量和方法
  16. 让图片和文字在一行中垂直居中对齐的方法
  17. The following packages have unmet dependencies问题解决
  18. 漫画中国式项目管理摘录
  19. 图神经网络用于RNA-蛋白质相互作用的新预测
  20. oracle 000000000A2F6630,数据导入新库时发生错误

热门文章

  1. 如何判断笔记本蓝牙硬件坏了_怎么看笔记本蓝牙版本 不是蓝牙4.0?
  2. 对称加密和非对称加密体系
  3. 软件测试是干什么的?
  4. java解析五元组_抓包分析提取五元组
  5. Python 之父——仁慈的独裁者
  6. 使用php语言开发网站的注意事项
  7. qt designer Scroll Area控件不显示滚动条
  8. vue2项目中实现字体自适应(使用px2rem插件将px转rem)
  9. 五一大降价,骁龙8+手机比骁龙7G2手机划算
  10. php分类信息模板,phpcms 分类信息模型