toorup 发表于 2020-11-29 15:34:45

准备学学类库了,没有教程,只能自已摸索,开贴记录

       一直找不到类库封装的教程,也就一直没有认真看过,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-29 15:35:09

本帖最后由 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>");

}

搞到这主要的就完成了,现就是判断是否有新的版本了,有更新和没有更新给出对应接口事件。
大概就这个样子就可以初步编译使用了:




接下来再开始搞下载了,加到这个里面就不用供助下载器下载了,有时间再弄



yunshao 发表于 2020-11-29 15:37:43

toorup 发表于 2020-11-29 15:35
自已占个楼!

大佬带带我

蓝色天空 发表于 2020-11-29 15:52:23

不错看看

wmzlk 发表于 2020-11-29 16:28:43

感谢分享

skeok888888 发表于 2020-11-29 16:33:21

把你的影视源码发出来看看

AIKAN 发表于 2020-11-29 16:38:48

学习了,支持下

toorup 发表于 2020-11-29 16:42:22

skeok888888 发表于 2020-11-29 16:33
把你的影视源码发出来看看

自动下一集还没加,播放记录点击可以自动接上一次播放点了,有点容错判断还没做
没对接验证,CMS是网上找的开放着API的,我自已的CMS挂了
搜索写好了没放上去,

链接:https://pan.baidu.com/s/111jVBo-pqyxj7vjEmBKIhg
提取码:mytv

eyy 发表于 2020-11-29 16:59:13

不错不错加油

zhaitao666 发表于 2020-11-29 17:32:11

易如意中文编程学习交流论坛有你更精彩~
页: [1] 2 3 4
查看完整版本: 准备学学类库了,没有教程,只能自已摸索,开贴记录