漫画软件开发: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项目地址

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EasyComic 中文版是一款免费的、基于矢量图形技术的漫画创作软件,功能强大,操作灵活。即使您是一位初学者,也可以轻松创建出高质量的漫画作品。 我们给您提供了丰富的漫画模板。您可以将自己喜欢的作品保存为模板,还可以在线下载更多的模板。EasyComic内置了几种常用的颜色表,您可以快速选取任何想要的颜色。所有的图形元素(包括线条),都可以填充渐变色,包括线性渐变、放射渐变、扇形渐变。此外,您的电脑中一定存储了很多照片,这些照片可以直接拖放到漫画作品中,然后给照片中的人物加上对白。 无论是漫画文件、漫画包,还是普通的图形元素,都可以被导出为图片,支持PNG、JPG、BMP等格式。在未来的版本中,我们还会支持SVG格式。漫画包(*.ecp)的机制,可以帮助您集中管理一系列的漫画文件(*.ecf),就像制作一本漫画书一样。EasyComic 功能 漫画文件(File)和漫画包(Package) 多文档选项卡 多图层机制 打印和预览 导出为图片 绘制线条:直线、曲线、折线 绘制形状:矩形、圆形、椭圆、多边形、气泡(对白) 向线条插入端点,剪断线条、连接线条 旋转 / 翻转 放大 / 缩小 撤销 / 重做 组合 / 撤销组合 锁定 / 撤销锁定 置顶 / 置底 复制格式 / 粘贴格式 颜色表:通用、人物、自然 渐变色:线性、放射、扇形 屏幕取色 模糊 调节曲线张力 复制形状 / 复制图层 创建模板、在线下载模板

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值