本文主要介绍书架的架构

BookStandActivity extends ReaderBaseActivity implements DialogInterface.OnCancelListener, View.OnCreateContextMenuListener

入口函数:onCreate
1. 设置notitle(这个可以放到activity的配置文件中)
2. 设置layout为new_bookstand.xml:顶部阴影,两侧图片中间是自定的listview:com.qq.reader.view.SpringListView.java,这个list是可以支持整体滑动效果的,从1.0版本到现在始终是这个listview。
3. 初始化listview的适配器
1. 获取屏幕宽度,除以每本所占的宽度,计算每行可以展示书本个数cols,这样解决了多种屏幕展示的问题
2. 获取屏幕高度,除以每行书架所占的高度,计算每屏幕可以展示的书架行数rows,书架最小行数为cols+1;
3. getCount即list的行数等于:(书本总个数 + 1)除以每行展示的个数;
4. getView,单个视图为new_liner_item.xml,它其实是个linearLayout,用于存放单个书本的view,本质上是每行的容器,其中设置了背景等基本排版信息。
1. 生成每本书的layout对象bookmarkstanditem.xml,渲染模板后,添加到父容器linearLayout中。直到填满每行展示的书本个数。
2. 如果父容器已经存在,则便利父容器的子视图对象,逐一渲染
5. getItem/getItemId,大家都懂得。
6. listview添加了header,本质是textView,就是书架上方的广告栏,支持点击事件
7. 书本的点击函数在哪里?
1. 不可在listview上添加点击,因为书本知识listview每行中的一本,点击事件只能添加到每本书的布局视图上
2. QQ的点击事件在书本视图的最外层RelativeLayout上,并把当前书本的id放在tag中,当点击书本时,点击函数从getItem传入tag,获取书本对象,打开书本。
8. 书本的长按函数在哪里?
1. 同样也在layout上,长按函数本质是图案出一个对话框,根据layout的tag中的书本id获取书本对象后,渲染dialog的内容。

QQ阅读器技术框架解析之三《代码预览和分析》相关推荐

  1. QQ阅读器技术框架解析之一《代码预览和分析》

    据说,腾讯的产品的三字名言是:抄.糙.超.即,先抄袭.在模仿.最终实现超越.互联网软件天下一大抄,彼此抄袭是常事,关键使我们如何超越他人,实现自我.下面我们采用最新的QQ阅读器反编译代码,并恢复源代码 ...

  2. 哪个读书app可以导入txt_QQ阅读iphone版怎么导入电子书 三种手机QQ阅读器导入本地图书图文教程...

    QQ阅读iphone版是一款比较方便的移动终端阅读软件,除了从电子书城下载或者购买电子书外,我们也可以把自己电脑中的电子书上传到QQ阅读软件中,不过果粉们都知道苹果手机没有文件管理器,无法使用qq阅读 ...

  3. CAD(dxf、dwg格式)文件的读取和显示,真正实现通过代码预览CAD文件,包含解析dwg、dxf文件,可以提取标注信息,可以转换为pdf、png、tiff、gif等6种格式的文件,可以永久免费实用

    真正实现通过代码预览CAD文件,包含解析dwg.dxf文件,可以提取标注信息,可以转换为pdf.png.tiff.gif等6种格式的文件,可以永久免费实用. 网上看了很多资料,不是缺这个就是少那个,反 ...

  4. 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览

    ### 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览 http://segmentfault.com/a/1190000002583569 转载于:https://www.cnb ...

  5. HTML完成如下网页效果代码,JS实现可直接显示网页代码运行效果的HTML代码预览功能实例...

    本文实例讲述了JS实现可直接显示网页代码运行效果的HTML代码预览功能.分享给大家供大家参考.具体如下: JavaScript实现HTML代码预览功能,直接在网页上显示代码运行的效果,就例如点击&qu ...

  6. js直接显示html,JS实现可直接显示网页代码运行效果的HTML代码预览功能实例.pdf...

    JS实实现现可可直直接接显显示示网网页页代代码码运运行行效效果果的的HTML代代码码预预览览功功能能实实例例 本文实例讲述了JS实现可直接显示网页代码运行效果的HTML代码预览功能.分享给大 供大 参 ...

  7. Foxit 修复PDF阅读器中的多个代码执行漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Foxit 阅读器更新版本,修复了可导致任意代码执行后果的多个释放后使用漏洞. Foxit 向用户提供了大量功能,包括通过 JavaScript ...

  8. 阅读器护眼模式android代码,pdf阅读器如何设置护眼模式?手机app原来也可以这么强大.docx...

    pdf阅读器如何设置护眼模式?手机app原来也可以这么强大.docx 还剩 6页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 轻快 PDF 阅读器 w ...

  9. 利用微信的weui框架上传、预览和删除图片

    jQuery WeUI 是专为微信公众账号开发而设计的一个框架,jQuery WeUI的官网:http://jqweui.com/ 需求:需要在微信公众号网页添加上传图片功能 技术选型:实现上传图片功 ...

最新文章

  1. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.7 小结
  2. [Android] ubuntu 下不识别 Android 设备
  3. curl: (7) couldn‘t connect to host 解决方法
  4. 几个常用算法的适应场景及其优缺点
  5. dao获取到mysql存储函数_GreenDao3.0使用
  6. Java实现PDF转HTML
  7. 基于HTTP协议的Java文件传输
  8. D11:Chickens and Rabbits(鸡兔同笼问题,附题解)
  9. 使用CORS解决跨域问题
  10. 移动web网页开发——动画
  11. 新疆计算机操作题,新疆维吾尔自治区教师计算机操作题复习8套.pdf
  12. 婚姻家庭法重点复习提纲
  13. Netflix继续开源,更多猴子进入视野
  14. 【文件上传】——文件上传后需要重启服务器方可访问到异常
  15. nginx报错找不到指定路径
  16. GBase XDM用户管理
  17. 计算机word文例试题及答案,大学计算机考试word试题及答案
  18. NLP顶会近三年小众研究领域
  19. Codeforces Global Round 2 B. Alyona and a Narrow Fridge
  20. CF - 791A. Bear and Big Brother - 模拟

热门文章

  1. php laravel 抢红包防止并发(超卖也是同理)
  2. android微信的抢红包插件
  3. cocos2d-js 使用正片叠底实现图片剪裁
  4. 2048小游戏----嵌入式系统实训
  5. 基于聚类的异常值检测算法依据及python实现
  6. 简单工厂模式——2016手机也疯狂
  7. 魏文王问扁鹊的注释_魏文王问扁鹊出处是什么
  8. jmeter 性能监控PerfMon Metrics Collector的讲解
  9. 热播 何赛飞受肯定梅婷被批无韵味
  10. ​年会视频直播如何做