准备学学类库了,没有教程,只能自已摸索,开贴记录
一直找不到类库封装的教程,也就一直没有认真看过,E4A偶尔晚上有时间学学做做自已喜欢的东西。这两天做的一个影视接CMS的APP近完工了。也就开始看看类库的封装了,反正对类库是啥也不了解,JAVA也不会,那就边做边学吧,同时记录一样,有感兴趣的可一起学习讨论,大神飘过,停下来指点一下更好{:4_93:}.
开工......
既然什么都不会,又没有教程,那我们也就只能迈小步,从最简单的搞起,古话说得好,步子迈大了,容易扯着蛋....
当然了,新建一个例程elp,里面有一个最简单的示例,这个我们要多看看了,了解一下类库的结构:
我是这么理解,对不对不知道,就这样吧。那我们就先来一个最简单的吧
前些天写的影视APP,有用到取播放进度,长整数型的毫秒数,这个做收藏的时候,要转成播放的时/分/秒,我不知有没有系统方法,就自已写了个简单的函数:
函数 毫秒到时分(毫秒数 为 文本型) 为 文本型
毫秒数=到长整数(毫秒数)
变量 时数 为 整数型
变量 分数 为 整数型
变量 秒数 为 整数型
时数=取整(毫秒数/3600000)
分数=取整((毫秒数-(时数*3600000))/60000)
秒数=取整((毫秒数-时数*3600000-分数*60000)/1000)
毫秒到时分=时数 & ":" & 分数 & ":" & 秒数
结束 函数
这么一转,我们的播放记录中就可以显示如下了:
我们现在就将这个函数封装成类库好了。
只是一个函数,那我们只要一个方法接口就好了,删除命今示例方法和事件,新建一个方法:转换(毫秒数据 为 长整数型,转化格式 为 整数型)为 文本型,这里我们要注意了,
E4A中对数据类型是没那么严格的,看上面的函数,毫秒数为文本型,其实他是长整型的,所以在类库的写法上不同,同时,我们为了回调结果的时候,可以多种格式,这里可以让用户选择输出格式,就结一个格式的参数。
对应的,我们在父类中也要建一个函数:
@SimpleFunction
String 转换(long 毫秒数据, int 转化格式);
再在子类中把上面的函数写进去,就下面这个样子了,我是不懂JAVA,对着上面函数查对应JAVA命令和用法就可以,我想着做着做着,JAVA也就会一点吧?
FK,搞到这里就会发现,JAVA对数据类型要求的严格了,搞几多遍编译通不过,到上面这样终于可以了{:4_88:}
试试,效果还可以了。到些,第一个相当实用的类库就诞生了{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}
下面是源码,其实上面都有,可以自已敲有好处的。实在不想敲,下面有:
一样想学的朋友,上面这个完全搞明白后,我们下次搞自已的APP更新类库了。
本帖最后由 toorup 于 2020-11-30 12:42 编辑
开始更新类库了....更新,大体的方法就是,取网络更新信息和下载地址,取本地版本和网络信息版本对比,有新版本就反馈有更新,给出下载地址供下载。
在这之前,我们还得准备好下载后保存用的目录,这就是初始化了:
初始化我们不需要反回参数,这里就用void,如下:
@Override
public void 初始化(){ //创建更新用的目录,以软件包名命名
String 包名;
包名=系统相关类.取自身包名();
String 路径=存储卡类.取存储卡路径() + "/" + 包名 + "_tmp";
if(文件操作.文件是否存在(路径)==false){
if(文件操作.创建目录(路径)==true){
应用操作.弹出提示("初始化成功!");
}else{
应用操作.弹出提示("初始化失败,请检查是否已开启存储权限!");
}
}
}
初始化完成后,就是取网络更新信息了,我们准备一个网页或是TXT文档,写上如下信息 123.txt:
<banbeng>1.0</banbeng>
<gxlr>
本期更新内容:
1.更新显示列数.
2.加入收藏模块.
</gxlr>
<gxaddress>https://uploader.shimo.im/f/z7J8jEpeqxml9IYF00.apk</gxaddress>
取更新信息这个就很简单了,E4A自带的核心命令就可以用完成:
@Override
public void 检查更新(String URL,String 编码,int 超时时间){
String 源码="";
String 本地版本="" + 应用相关类.取应用版本(系统相关类.取自身包名());
String 网络版本="";
String 下载地址="";
String 更新信息="";
源码=网络操作.取网页源码(URL,编码,超时时间);
网络版本=文本操作.取指定文本2(源码,"<banbeng>","</banbeng>");
下载地址=文本操作.取指定文本2(源码,"<gxaddress>","</gxaddress>");
更新信息=文本操作.取指定文本2(源码,"<gxlr>","</gxlr>");
}
搞到这主要的就完成了,现就是判断是否有新的版本了,有更新和没有更新给出对应接口事件。
大概就这个样子就可以初步编译使用了:
接下来再开始搞下载了,加到这个里面就不用供助下载器下载了,有时间再弄
toorup 发表于 2020-11-29 15:35
自已占个楼!
大佬带带我 不错看看 感谢分享 把你的影视源码发出来看看 学习了,支持下 skeok888888 发表于 2020-11-29 16:33
把你的影视源码发出来看看
自动下一集还没加,播放记录点击可以自动接上一次播放点了,有点容错判断还没做
没对接验证,CMS是网上找的开放着API的,我自已的CMS挂了
搜索写好了没放上去,
链接:https://pan.baidu.com/s/111jVBo-pqyxj7vjEmBKIhg
提取码:mytv
不错不错加油 易如意中文编程学习交流论坛有你更精彩~