Android开发--MVP demo+Jsoup在线小说阅读器(一)

小说阅读app(源码+开题) 首先,通过用户调研和数据分析,了解用户对小说阅读app的需求和使用习惯。通过深入研究用户、书籍类型、小说阅读、热度书籍、我的书架、排行榜、用户统计、书籍统计等系统功能,揭示小说阅读app在用户体验、内容推荐、数据统计等方面的优势和不足。同时,研究还能为开发者提供改进方向,推动小说阅读app在功能、性能、界面设计等方面的不断创新和提升,从而增强市场竞争力。本研究拟解决的主要问题包括:如何提升小说阅读app的用户体验、如何优化内容推荐算法以满足用户个性化需求、如何利用数据统计功能指导内容更新和运营策略等。 阅读详情

因为最近身体不好又是偷懒了一阵子没有更新…这次带来的是一个在线的小说阅读器.目前已经实现了基本的功能,完成了大概的框架,剩余的部分慢慢来更新。先放上源码github https://github.com/CallMeSp/ToRead_MVP.git 求star。里面也有这个项目没有应用mvp结构的源码可以用来对比一下。
最近看了MVP框架,所以这个项目也采用了mvp框架,参考了mvp入门解析 、浅谈mvp入门由于经验不够,有些粗糙。还使用了picasso图片加载库,Jsoup来实现网页解析功能。先看一下代码结构
代码结构
然后看一些效果图。
这里写图片描述
这里写图片描述这里写图片描述这里写图片描述
这就是用了MVP结构的代码结构了,明显感觉就是类的类别明显增多了,不过解耦性明显增强了,最大程度分离了view的交互和model的逻辑处理,view和model之间则通过presenter来沟通。
不过这又产生了一个问题:
这样一个view和一个presenter对应一个界面,要是一个完整的项目,界面肯定不少,那和以view和presenter会暴增,这样怎么办呢?
利用组合思想。V和P是一一对应的,但是,我们可以把通用的VP提取出来。一个Activity implements 多个View,然后利用组合包含几个P。举个例子。有个LoginPresenter。我们现在要在登陆页面中用到,另外在一个回复页面,也需要做个快速登陆功能。那么我们可能需要在LoginActivity和ReplyActivity中都包含这个LoginPresenter,两个Activity都各自去实现LoginView。可能ReplyActivity还有其他功能,他还要包含自己的ReplyPresenter,并实现自己的ReplyView。
利用组合来实现Presenter的复用,这个是MVP的优雅之一。但是别忘了不要持有View实例,记得detach。
然后言归正传,这个项目功能主要的实现依靠的是Jsoup的解析功能。来看一下bookbiz中根据搜索的书名来获取书籍列表的这一段。

@Override
    public void showbookslist(final String searchname){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    books.clear();
                    Document doc = Jsoup.connect("http://so.37zw.com/cse/search?q=" + searchname + "&click=1&s=2041213923836881982&nsid=")
                            .get();
                    Elements items=doc.select("div.game-legend-a");
                    for (Element Item : items) {
                        Log.e("0","Item:"+Item);
                        String title=Item.select("h3").text();
                        String detail=Item.select("p.result-game-item-desc").text();
                        String ur=Item.select("div.game-legend-a").attr("onclick");
                        ur=ur.substring(17, ur.length() - 1);
                        String writer=Item.select("p.result-game-item-info-tag").first().text();
                        String IMG=Item.select("img").attr("src");
                        book mybook=new book();
                        mybook.setBook_name(title);
                        mybook.setBook_writter(writer);
                        mybook.setBook_details(detail);
                        mybook.setBook_cover(IMG);
                        mybook.setContenturl(ur);
                        books.add(mybook);
                    }
                    presenter.updatelist(books);
                } catch (IOException e){

                    e.printStackTrace();
                }
            }
        }).start();
    }

jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可操作HTML元素、属性、文本;此处运用的就是使用DOM选择器来查找和取出数据。本来相用正则来自己解析的..想想..还是算了吧..
http://www.open-open.com/jsoup/ 附上jsoup开发中文文档。里面讲的也很详细。大家也可以写写demo来测试一下。下面看一下picasso的应用:

Picasso.with(myholder
Android本地小说阅读器(仿真、覆盖、滑动翻页,支持大文件) 项目地址:https://github.com/PeachBlossom/treader分享下之前写的小说阅读器,项目结构是传统mvc这样来做,欢迎大家star。如风小说阅读器,添加书签、目录跳转、(仿真、覆盖、滑动、无)翻页动画效果、日夜间模式、字体/字体大小/主题/亮度设置、本地txt书籍阅读(支持大文件)首页阅读翻页效果文件搜索 项目地址:https://github.com/PeachBl 阅读详情

相关推荐

【android】在线小说阅读器的实现——MissZzzReader

一个基于android小说的阅读器。这段时间正好有空,就花了大概一个月时间做了这么个东西。由于本人美术功底为0,界面有所借鉴,项目已经开源,详细信息请移步GITHUB,这里不便多说,文章最后附上项目地址。 v1.6.0 新增自动滚屏 v1.7.0 新增书籍缓存,缓存后可离线阅读 v1.7.1 修复章节过多造成的UI界面卡顿问题 v1.7.2优化章节数巨大(>1000)的小说的加载速度............

MissZzz的博客 3万+

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

qq_73523062的博客 2087

Linux之SUSE系统SAP-HANA经常系统内存不足使得SAP应用不能使用解决方案

问题描述 Linux内存使用量超过阈值,使得sap应用程序无可用内存,最终导致程序崩溃。 问题原因 自己查阅了一些资料,也基于zabbix的可用内存和实际不太一样入手去找原因发现问题出现于Cached的值过大,导致系统没有可以再分配的内存空间。Cached只要用来缓存文件的,经常读写的文件会被缓存到Cached中,可以增加读写效率,该功能是Linux系统内核提供的,而SAP-HANA的日志文件很大...

liuxiangyang_的博客 6709

【读论文】AI陪伴场景长期记忆(用户画像)解决方案

在长程人机交互中,如何让 AI 记住用户,不再是简单的“检索增强(RAG)”就能解决的问题。传统的向量数据库面临“信息信噪比低”、“人格不一致”以及“随着对话无限增长而崩塌”的困境。MemTensor 团队联合人大提出的Inside Out框架,从认知心理学汲取灵感,提出了一种基于PersonaTree(人格树)的显式记忆进化机制。该方案通过训练一个轻量级的(使用 DeepSeek-R1 蒸馏数据 + GRPO 强化学习),实现了将非结构化对话流实时压缩为结构化树操作(新增|更新|删除)。

kakaZhui的博客 816

ptrade量化策略之ST股弱转强,回测年化115%

本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强

qq_29301281的博客 1785

嵌入式Linux Qt应用程序卡死问题分析记录

根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。

V10_x的博客 1641

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!!

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。

拥抱具身智能,昇腾Ascend C 3104

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 791

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Android学习笔记(八)--CoordinatorLayout的应用-仿支付宝界面
下一篇: Android学习笔记(九)--Retrofit初探索&Rxjava来掺和
CallMeSP
博客等级 码龄10年 48粉丝 39原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值