低代码开发平台YonBuilder移动开发,开发阅读APP教程
设计实现效果如下图:
主要包括书架,阅读,收藏功能。

经过分析,我们可以先实现底部导航功能,和书架列表页面。
1. 使用 tabLayout 高级窗口实现底部导航 。 使用tabLayout 有两种方式,一种是使用 api.openTabLayout 接口打开,如果在app首页使用 tabLayout 布局,则可以使用配置json 文件的方式:
{
    "name": "root",
    "preload": 1,
    "vScrollBarEnabled": false,
    "tabBar": {
        "height": 55,
        "fontSize": "14",
        "textOffset": "8",
        "reload": true,
        "frames": [{
            "title": "页面一",
            "name": "main",
            "url": "pages/main/main.stml",
            "bgColor": "rgba(255,255,255,1.0)"
        }, {
            "title": "页面二",
            "name": "mylist",
            "url": "pages/main/mylist.stml",
            "bgColor": "rgba(255,255,255,1.0)"
        }],
        "list": [{
            "text": "书架",
            "iconPath": "widget://image/book1.png",
            "selectedIconPath": "widget://image/book.png"
        }, {
            "text": "收藏",
            "iconPath": "widget://image/shoucang1.png",
            "selectedIconPath": "widget://image/shoucang2.png"
        }]
    }
}


接着我们将APP入口配置为以上json 文件,这样打开APP后,即会出现我们配置好的底部导航了。

2. 使用list-view实现书目列表
先看官方文档的示例代码和效果:
<template>
    <list-view id="listView" class="main" enable-back-to-top onscrolltolower={this.onscrolltolower}>
        <cell class="cell" onclick={this.itemClick}>
            <text class="title">{item.title}</text>
            <text class="subtitle">{item.subtitle}</text>
        </cell>
        <list-footer class="footer">
            <text>加载中...</text>
        </list-footer>
    </list-view>
</template>
<style>
    .main {
        width: 100%;
        height: 100%;
    }
    .cell {
        padding: 8px;
        height: 60px;
        border-bottom: 0.5px solid #ddd;
        background-color: #fff;
    }
    .cell:active {
        background-color: #ddd;
    }
    .title {
        font-weight: bold;
        font-size: 18px;
        color: #000;
    }
    .subtitle {
        color: #333;
    }
    .footer {
        justify-content: center;
        align-items: center;
    }
</style>
<script>
    export default {
        name: 'test',
        methods:{
            apiready() {
                this.initData(false);
            },
            initData(loadMore) {
                var that = this;
                var skip = that.dataList?that.dataList.length:0;
                var dataList = [];
                for (var i=0;i<20;i++) {
                    dataList[i] = {
                        title: '项目' + (i + skip),
                        subtitle: '这里是子标题'
                    }
                }
                var listView = document.getElementById('listView');
                if (loadMore) {
                    that.dataList = that.dataList.concat(dataList);
                    listView.insert({
                        data: dataList
                    });
                } else {
                    that.dataList = dataList;
                    listView.load({
                        data: dataList
                    });
                }
            },
            onscrolltolower() {
                this.initData(true);
            },
            itemClick(e) {
                api.alert({
                    msg: '当前项索引:' + e.currentTarget.index
                });
            }
        }
    }
</script>



我们根据示例稍加改动,填充上我们从服务器请求回来的数据即可。
<template>
	<safe-area>
		<list-view id="listView" class="main" enable-back-to-top onscrolltolower={this.onscrolltolower}>
			<cell class="cell" data-title={item.title} data-url={item.bookurl} data-bookid={item.bookid}
				onclick={this.itemClick}>
				<text class="title">{item.title}</text>
				<text class="subtitle">{item.subtitle}</text>
				<img class="love" data-url={item.bookurl} data-bookid={item.bookid} data-title={item.title}
					data-subtitle={item.subtitle} onclick='this.fnchagelove' src={item.icon} alt=""></img>
			</cell>
			<list-footer class="footer">
				<text>{toasttext}</text>
			</list-footer>
		</list-view>
	</safe-area>
</template>



3. 实现打开书籍功能。可以根据不同的书籍类型,选择不同的模块打开 。如 pdf 格式的可选择pdf 阅读器模块 。

var muPDF = api.require('muPDF');
var param = {
    //传入本地路径
   // "path":"/data/user/0/com.apicloud.pkg.sdk/filePDF.pdf", 
    //传入网络路径
    "path":"网络路径",
    "fileName":"文件保存的自定义名称",
    "showLoading":true,
    "diaLogStyle":"horizontal"
}
muPDF.viewpdfFile(param,function(ret){
    alert(JSON.stringify(ret));
});


使用YonBuilder移动开发平台开发APP体验是很好的,尤其是使用最新的 avm 多端框架,其语法类似vue ,react ,有前端基础的,非常容易上手。新建应用时,可以选择模板,通过学习模板应用的代码可以很快上手。
低代码开发平台YonBuilder移动开发,开发阅读APP教程的更多相关文章
- 商业创新不能等?用友低代码开发平台YonBuilder为您加速!
		
随着云计算.人工智能.物联网.大数据.5G等新一代技术的快速发展,越来越多的企业希望借助技术的力量加速数智化转型,期许通过更加敏捷和强大的应用系统推动企业的商业创新速度.但传统软件开发周期长.开发成本 ...
 - 用友低代码开发平台YonBuilder首次亮相DevRun开发者沙龙
		
2020年的今天,没有人会再质疑企业上云的必要性与价值所在.从高科技行业到传统领域,大大小小的企业都希望走在变革道路前列,通过企业云加快业务数字化转型,更好地维护和管理企业数据. 然而,大多数企业都很 ...
 - 什么是aPaas?aPaas与低代码又是如何促进应用程序开发现代化的?
		
从软件即服务(SaaS)到基础设施即服务(IaaS),云计算的兴起使“一切皆服务”(XaaS)模型得以泛滥,而aPaaS可能是这些模型中最鲜为人知的模型.随着aPaaS市场预计将从2018年的近90亿 ...
 - SNF开发平台WinForm之二-开发-单表表单管理页面-SNF快速开发平台3.3-Spring.Net.Framework
		
2.1运行效果: 2.2开发实现: 2.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...
 - 低代码BPM平台
		
为了做出明智的决策并为客户提供服务,员工需要在正确的环境中使用正确的工具和访问关键信息的权限.但是,当业务关键信息分散在多个现成的和自定义编码的应用程序中时,员工效率会降低,客户体验也会受到影响. 低 ...
 - 微服务低代码Serverless平台(星链)的应用实践
		
导读 星链是京东科技消金基础研发部研发的一款研发效能提升的工具平台,面向后端服务研发需求,尤其是集成性.场景化.定制化等难度不太高.但比较繁琐的需求,如服务前端的后端(BFF).服务流程编排.异步消息 ...
 - 快速开发平台分享-UCML快速开发七种武器
		
传统的快速开发平台强调的是组件重用.构件重用,主要解决功能重用层面,一般提供了软件开发最常用的功能:表单设计.BPM(业务流程管理).报表.组织机构及权限等功能.但只有功能重用,没有过程重用,要么只能 ...
 - 分享一个全开源的ASP.NET快速开发平台,能快速开发OA CRM ERP 等系统
		
bingo炸了 2017/3/30 16:28:14 阅读(870) 评论(0) 公司业务量比较大,接了很多项目,为了缩短开发周期老板让我牵头搭建了一个快速开发平台. 我们主要的业务是做OA.CRM. ...
 - 迅为最新推出iTOP-6818开发平台无缝支持4418开发板
		
iTOP-6818开发板是一款四核ARM 八核开发板与iTOP-4418开发板完全兼容,CPU主频1.4GHz,内存1GB DDR3(2GB可选),存储16GB EMMC,板载千兆以太网,GPS,WI ...
 
随机推荐
- 【软件学习】如何下载安装Mathtype,并将其加载至Word
			
参考视频: https://www.bilibili.com/video/BV1cV41117SR?from=search&seid=11224207889712369816 首先,需要安装. ...
 - getColumnName 和 getColumnLabel 的区别
			
select id as user from * getColumnName返回:"id" getColumnLabel 返回:"user"
 - super关键字的使用
			
1.super理解为:父类的 2.super可以用来调用:属性.方法.构造器 3.super的使用:调用属性和方法 3.1 我们可以在子类的方法或构造器中.通过使用"super.属性&quo ...
 - Oracle数据库的两种授权收费方式介绍!
			
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
 - 8.pygame-定时器
			
使用定时器添加敌机 游戏启动后,每隔一秒出现一架敌方飞机 每架飞机向屏幕下方飞行,速度各不相同 没加敌机出现的水平位置也不进相同 当敌机从屏幕下方飞出,不会再飞回到屏幕中 定时器 pygame中使 ...
 - C# Linq 查询汇总
			
分组取值.求和.计数 1 var resultlist = orderllist.GroupBy(oo => new { oo.Deptname, oo.Userid, oo.Username ...
 - 为什么CSS中的calc函数可能会不生效?
			
前言 在早期如果想要对某一些样式进行动态计算,绝大多数的做法都是使用JavaScript来进行,当时的CSS在面对这种场景显得有点无能为力.但是,当CSS3中新增了calc函数时,面对这种场景,Jav ...
 - 怎么样子盒子能撑起父盒子?浮动,BFC,边距重叠
			
怎么样子盒子能撑起父盒子? 从行内元素跟块元素来看: 一般情况下,行内元素只能包含数据和其他行内元素. 而块级元素可以包含行内元素和其他块级元素. 块级元素内部可以嵌套块级元素或行内元素. 建议行内元 ...
 - Pycharm自定义实时模板
			
pycharm添加模板 添加装饰器模板 # 1.file-->Setting-->Editor-->Code Style -->Live Templates# 2." ...
 - JetBrains新产品Aqua——自动化测试开发工具(抢鲜体验)
			
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/9a093c88.html 你好,我是测试蔡坨坨. 随着行业内卷越来越严重,自动化测试已成为测试工程师的必备技能,谈及自动化测 ...