`
花籽的泪
  • 浏览: 9683 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

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

阅读更多
本文主要介绍书架的架构
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阅读器技术框架解析之一《代码预览和分析》

    这篇博客文章“QQ阅读器技术框架解析之一《代码预览和分析》”主要探讨了QQ阅读器在代码层面的一些关键技术和设计思路。 首先,我们关注的是“源码”这个标签,它意味着文章会深入到QQ阅读器的源代码中,揭示其内部...

    MFC开发的仿QQ表情的程序源代码

    4. **用户界面设计**:仿QQ表情程序可能包含表情选择界面、预览窗口、发送按钮等元素,需要使用MFC的对话框类和控件类来创建和定制UI。 5. **事件处理**:MFC使用消息映射机制处理用户交互,比如点击按钮、选择表情...

    mac 上解析和编辑math公式

    用户和开发者可以通过阅读源代码学习OC编程技巧,以及如何处理Math公式解析和显示的具体实现。 总的来说,这个项目涉及了Math公式解析技术、Objective-C编程、UI设计、文件操作和可能的开源社区参与。对于Mac用户和...

    SSH电子商务Demo

    SSH电子商务Demo是一个基于Java开发的电子商务平台演示项目,利用了三个主流的开源框架:Struts1、Spring3.0和Hibernate3。这三个框架在Java Web开发中被广泛使用,组合在一起,可以构建出高效、模块化的应用系统。...

    c++ logview源码自己学习使用

    源码中可能包含解析器模块,用于从原始日志数据中提取关键信息,如时间戳、日志级别、模块名和消息内容等。 2. **用户界面设计**:为了方便用户查看和搜索日志,LogView 往往会提供一个友好的图形用户界面。这涉及...

    COCOS2D_X粒子编辑器原码

    通过阅读和分析代码,你可以了解到如何在C++或 Lua 中操作粒子系统,如何处理用户输入以实现交互式编辑,以及如何利用窗口程序(如"particleTool_win32")来构建桌面应用程序。 对于有经验的开发者,这个编辑器原码...

    多功能工具箱微信小程序源码.rar

    【标题解析】:“多功能工具箱微信小程序源码.rar”这个标题揭示了我们即将探讨的核心内容:一个微信小程序的源代码,它被设计成一个具备多种功能的工具集合。"多功能工具箱"通常指的是一个应用程序,它整合了各种...

    PDF转图片java内含demo和SDK.zip

    这两个库是IcePDF库的一部分,这是一个开源的Java PDF阅读器和处理框架。`icepdf-core`包含了PDF解析和渲染的基础组件,而`icepdf-viewer`则提供了用户界面相关的功能,如预览PDF文档。 `PdfToJpg.java`是包含的...

    实现二维码扫码源码

    "qzxing"是一个基于ZXing(Zebra Crossing)库的Android二维码扫描框架,ZXing是一个强大的、跨平台的条码阅读库。这个库支持多种条码格式,包括常见的QR码和Data Matrix,同时也支持一维条形码。 使用"qzxing"库...

    二维码+CAlaryer+WKweb+controllers

    - **扫描**:通过相机捕获二维码图像并解析其内容,这通常涉及`AVCaptureSession`和`AVCaptureMetadataOutput`。用户只需对准二维码,系统就能自动识别并处理相关信息。 2. **CAlaryer**(可能是`CameraLayer`):...

Global site tag (gtag.js) - Google Analytics