请教大家一个问题,类似阅读器仿真纸张翻页 有什么好的思路。 <使用 1 个 view 多个 bitmap 交替绘制思路,无法应对复杂的子 view 布局,view 广告引入,复杂的点击区域处理,所以后来放弃了> ios 的解决方案很优秀,人家 view 就能卷曲,android 的一言难尽[Facepalm]
目前使用 recyvlerview 作为 view 缓存管理,利用 layoutmanager 制作了,平移,y 轴翻转动画 详细可看这里: https://www.jianshu.com/p/1992d49e5fbf 现在想引入卷曲动画(俗称仿真动画)
目前方案 A:基于根 view 缓存整体渲染效果到 bitmap 在根布局 onDrawForeground 绘制卷曲动画,view 接受滑动事件,绘制效果,并将平移距离传递给 recyclerview 更新坐标 优点:单页 view 依然保持解耦,无需关系事件 缺点盲点:上一页怎么办?如何处理上一页效果呢,子 view 刷新了呢?
/:8*希望大家多多帮忙,分析可行我都尝试下
![]() |
1
fansangg 2020-07-30 13:44:53 +08:00 ![]() 那么多开源的阅读器,都找不到你认为的「优秀解决方案」?
|
2
loginbygoogle 2020-07-30 15:22:32 +08:00 via iPhone ![]() 我的建议是转行
|
3
AoEiuV020 2020-07-30 16:10:21 +08:00
然而 4 个小时过去了,没有人帮楼主想办法,
|
![]() |
4
darmau 2020-07-30 16:21:55 +08:00
1 、2 楼两个嘴炮帝能灭掉两个美国航母吧
|
5
lwlizhe 2020-07-30 16:56:56 +08:00
额,没太看懂楼主说的目前方案,简书的那个方法我也没试过…………不过看这么长时间也没人说,那我自告奋勇献个丑
先根据我自己理解说下哈 不过既然都有 recyclerView 管理子 View 了,为啥不直接拦截 recyclerView 的拖拽这块的手势(其他手势当然放行了),自己通过代码控制处理,然后分发给相应的子 View 呢? 讲道理 recyclerView 本身拿到了,像 layoutmanager 什么的也能拿到,那应该基于 layoutManager 管理的那些 measure,layout 布局也能修改; 举个例子, recyclerView 监听到翻到下一页这个手势,那么分发给当前页,让它做出相应的翻页动画; 监听到上一页这个手势,那么分发给上一页,让第一页做出相应动画呗; 我感觉贴出来的那个简书文章方案很不错啊,唯一问题是仿真翻页那块他用 openGL 改写的,我感觉可以直接重写子 View 的 draw 方法,在 canvas 上改改,应该基于 canvas 的翻页动画不少吧,不至于在翻页的时候都要求可以点击相应的区域吧 |