漫画软件开发:EasyComic

  • 说明
  • 软件开发的初衷
    • 开发准备
    • 第一步:准备好图片资源
    • 第二步:确认爬取内容
    • 第三步:漫画滚动实现
  • 结尾
  • 附录

说明

本博文里所有的内容均为学习交流,切勿使用项目内容作为商用,不鼓励大家观看盗版。

软件开发的初衷

我是一个特别喜欢看漫画的人,不过我这个人又不大喜欢付费,所以经常在盗版网站上看漫画(这个行为不太好,我鼓励大家去支持正版),众所周知:盗版网站里充斥着各种不堪入目的广告,为了能够更加绿色清新的观看漫画,我在想能不能在我们日常使用的APP上去爬取这些网站的图片,然后在手机软件上看。有了这个想法我立马就开始了动手。

开发准备

我在这里列出我所使用的 IDEA 和 第三方类库:

  1. Android Studio (IDEA );
  2. Glide (第三方类库 );
  3. Jsoup (第三方类库 );
  4. http://bnmanhua.com/ (爬取的网站);
  5. https://www.iconfont.cn/ (图标素材网);

第一步:准备好图片资源

名称 样式
开屏图片
软件图标
菜单突变
返回图标

第二步:确认爬取内容

我这边决定爬取这个网站的热门榜单的内容,漫画热门榜单地址,我们观察仔细发现有四处内容需要我们爬取,一共是漫画图片地址,漫画最新章节,漫画名称,最新更新时间。由此我确认了热门榜单页面的模型。

Comic.java

package top.ieasycloudy.easycomic;public class Comic {private final String iconUrl;private final String title;private final String sub;private final String date;private final String href;public Comic(String iconUrl, String title, String sub, String date, String href) {this.iconUrl = iconUrl;this.title = title;this.sub = sub;this.date = date;this.href = href;}public String getIconUrl() {return iconUrl;}public String getTitle() {return title;}public String getSub() {return sub;}public String getDate() {return date;}public String getHref() {return href;}
}

这里面还有一个href的属性,是对应着这个漫画所对应的跳转页面,方便我们后续的内容爬取。这里爬取漫画热门榜单的代码我放在这里。

Document document = Jsoup.connect("http://bnmanhua.com/page/hot.html").get();
Element element = document.getElementById("list_img");
assert element != null;
Elements elements = element.getElementsByTag("li");
for(Element element1 : elements) {comics.add(new Comic(element1.getElementsByTag("img").attr("src"),element1.select("p").text(),element1.select("span").text(),element1.select("em").text(),element1.getElementsByTag("a").attr("href")));
}

内容爬取之后再把的数据放在RecycleView里面展示即可,如果大家想看具体的页面设计,可以在博文底部看见我的GitHub地址,这里就不赘述太多,好奇的可以直接去看。

第三步:漫画滚动实现

爬取到漫画对应章节的所有图片之后,如何让将他们拼接在一起?然后实现滚动观看呢?我在这里使用了scrollview作为根控件,然后将动态创建的ImageView至于LinearLayout布局中,最后将LinearLayout置于ScrollView里,代码如下:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams rootParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
LinearLayout rootLayout = new LinearLayout(LookActivity.this);
rootLayout.setOrientation(LinearLayout.VERTICAL);
rootLayout.setLayoutParams(rootParams);
for(String str1 : list) {String picUrl = "https://img.hltongchen.com/" +str1.replace("\"", "").replace("\\", "");ImageView img = new ImageView(LookActivity.this);img.setLayoutParams(params);img.setAdjustViewBounds(true);Glide.with(LookActivity.this).load(picUrl).into(img);rootLayout.addView(img);
}
picList.addView(rootLayout);

图片里的内容我是通过Glide加载网络图片的方法。所以这样就实现了基本的漫画软件功能呢。

结尾

我希望大家都可以在日常生活中多把自己的想法付诸实现,这样可以磨练自己的技术,也可以获得成就,一举两得。最后放上我的GitHub地址,大家如果喜欢的话可以点点star和关注,我们下次再见。

附录

EasyComic项目地址

漫画软件开发:EasyComic相关推荐

  1. 漫画 | 软件开发的门槛是如何降低的?

    上古时代,程序员绝对是个高门槛职业,只能用汇编编程,写个程序非常难. 机器指令集互不兼容,程序不可移植,只能重写. IBM决定改变这种状况,推出了有着相同体系结构和指令集的机器家族System/360 ...

  2. 困扰程序员的30种软件开发问题,你是否时曾相识?

    来自:程序师 链接: https://www.techug.com/post/30-programmer-meet-problems.html 开发应用程序是一项压力很大的工作,人无完人,工作中遇到各 ...

  3. 通过造车来了解软件开发模式

    看到 好的 东西, 老是忍不住收藏一下,谢谢作者:伯乐在线 - 艾凌风 的文章, 若有不妥,请留言. 1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的 ...

  4. @程序员,物联网软件开发不得不克服的七大挑战

    物联网软件开发是个雷区.市场需要高质量.具有可扩展性.强大.安全且人性化的解决方案,为了将所有风险都考虑在内,物联网开发团队必须重新评估程序和工作流程.本文列出了物联网软件开发项目所面临的七大挑战. ...

  5. 软件开发中会使用到的图

    文章目录 软件开发中会用到的图 一.背景 二.图为了解决什么问题 三.不同流程中适合运用的图 四.实际的运用 五.结语 软件工程中的各种图 软件工程用的15种图 数据关系流图怎么画?这款软件教你轻松绘 ...

  6. 电脑抢票软件-电脑自动化订票软件开发

    电脑抢票软件-电脑自动化订票软件开发 看了这个漫画,有什么想法? 确实,人想和机器人去抢资源太难了,一个人只有一只手能去抢,而软件却可以用10线程,100线程的去抢,还能做到每个页面用不同的IP.

  7. 干掉软件开发的超级怪兽:狼人!

    你看到的漫画只是冰山一角,在公众号回复关键字"漫画"可以看到更多精彩文章 后记:软件开发就是这么神奇,表面上看起来好像没有任何一个单独的问题会导致困难, 每个都能被解决, 但是当它 ...

  8. 最佳实践:怎样评估软件开发时间

    作者 | DDI Development 译者 | 王强 策划 | 王一鹏 据统计,有差不多 70% 的项目都没能准时完成,你的项目也可能是其中之一.总是 delay 是不是很烦人?你也希望在满足市场 ...

  9. 【软件工程】RUP与软件开发5大模型

    软件开发的5大模型 1.瀑布模型:按照人的思维一步一步的开发下去,如果需求分析得当,每个阶段顺利,结果还不错! 2.快速原型模型:后来人们发现,自己不可能一下子就把所有的需求搞清楚,总是在开发的过程中 ...

最新文章

  1. boost::metis_reader用法的测试程序
  2. C# :试玩EventLog
  3. wordmaker html转为word,PHP HTML生成word
  4. mysql管理数据_MySQL 管理
  5. SAP License:自动创建带内部订单预算管控的在建工程
  6. LinkedList原码分析(基于JDK1.6)
  7. C++设计模式之Strategy(策略模式)
  8. 快速上手友盟推送前后端
  9. 互联网产品用户体验设计方法和用户体验优化方法
  10. vue中svg转png下载
  11. 基础知识 | node js基础知识
  12. 解决Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these...问题
  13. Java Review(三十六、IO)
  14. Ubuntu Linux开机黑屏的永久解决办法
  15. 【mp3】洗脑循环了!龙珠超 自在极意功 【究极の圣戦】串田アキラ 背景纯音乐...
  16. 知乎1w视频播放能赚多钱?今天来大揭秘
  17. VS2012 BIDS之Reporting Service/SSRS 项目2--开发过程问题总结(全)
  18. 使用vue脚手架的项目使用https: true,报错:Invalid typed array length: -4095
  19. 成长,没你想象得那么迫切
  20. GitChat-RabbitMQ 原理,免费名额,先到先得

热门文章

  1. 蓝桥杯单片机省赛——第四届“模拟智能灌溉系统”程序
  2. MAT内存分析工具-独立版安装教程及实战教学
  3. Fluke Ti401 PRO,TI400+ 热像仪替代老型号FLUKETI400,TI300.TI200
  4. 软件加入使用时间_新人如何才能玩转时间机器字幕制作软件?时间机器字幕制作软件使用测评...
  5. 为什么00后全部使用全键盘输入,而9080使用九宫格,原因这么简单
  6. 2023开户选哪个证券公司比较好?哪个券商服务最好?
  7. 【世界上最好用的编程语言】PHP基础入门详解
  8. svn server运行和解决条目不可读问题
  9. Jude - 体验UML高速建模
  10. 秋荣创投:本品牌成立的意义与价值、使命愿景价值观