0.开源说明

  • 本程序完全开源,可用于学习,但是不能用于商业.

    遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

  • 你可以提取里面的功能来使用,但是请勿二次打包.

    1.使用说明

  • 打包环境
    • 此工程推荐使用Aluaj编译打包.
    • 也可以把src的文件提出来当成AndroLu+/Onelua等工程使用(注意主题(style.xml)/以及部分src/java封装的代码将无效),在代码中以及备注.
    • 也可以配合AndroLua+.jar等,在Android Studio打包,但是会有功能上的缺陷!
  • 基本功能

简单理解就是本程序就是一个提供脚本功能的空壳

  • 你可以通过脚本实现某些定制某些功能(xx毕业班的电子版同学录,可以存放各式各样的文件和信息)
  • 当然默认是有一些小工具
  • 下载脚本的方法我还没有想好
  • 最基本的功能–定制软件
    • 全部数据都存放在**alittlemc/**目录中
    • 读取alittlemc/diy中的脚本,可以根据其中的文件,动态的修改(在启动时加载一次,如果开启了预加载将不会动态加载,推荐在确定代码稳定不再需要修改时开启)程序的界面和各种事件.
      • 一个脚本的表现形式分为两种(后面会具体解释):
        • 单个文件:alittlemc/diy/xxx.diy(单文件脚本后缀也可以是add)
          • 推荐没有额外的媒体文件时使用,而且会优先于文件夹加载
        • 文件夹:alittlemc/diy/xxx/main.diy
          • 请把本脚本的全部额外输出的文件/需要调用的文件都放在在里面,方便备份和删除
          • main.diy是固定的入口

Github源代码链接:{com.alittlemc.gather}
Code_aliyuan源代码链接(未完成):{com.alittlemc.gather}

Code_aliyuan脚本链接:{alittlemc_by_diy}(持续更新)
Bmob_alittlemc:{这个由我维护}


1.1源代码文件的结构

  • src-
    • files/(其他文件,如图片/压缩包等)
      • diy.zip(初始化自带的diy脚本)
      • xxx.png(图标素材)
    • java/(封装的java源代码)
      • AddFuncstion.java(一些杂乱的方法)
    • lua/(lua脚本)
      • alert_dialog.lua(旧版dialog封装)
      • alm.lua(功能函数)
      • code_diy_split.lua(diy解释)
      • fun.lua(最基本函数)
      • 其他,用于测试
    • openSource/(开源的文件夹)
      • CustomDialog/
        • LICENSE(开源说明)
        • main.lua(CustomDialog主代码,已经魔改,请配合link.CD.lua使用)
      • NumConvert.lua(任意进制转换,增强为任意进制转换)
        • main.lua
    • build.lua(布局,基于开源v7模拟修改)
    • icon.png(程序图标)
    • include.lua(import通用存放)
    • init.lua(AndroLua+的工程清单文件)
    • main.lua(主程序入口)
    • main_ui.lua(列表等布局事件)

1.2外部文件数据的结构

所有的文件都在你的手机中的**..alittlemc/**目录中,如果需要完全卸载请同此也删除

  • alittlemc-
    • diy/(存放/执行脚本的目录,谨慎操作!)
      • 文件(如xxx.diy,xxx.add就是脚本文件)
      • 文件夹(比如xxx/main.diy,里面要有mian.diy文件夹,一般文件夹中还有其他资源文件和依赖)
    • list/(存放临时的脚本数据,比如获取网上脚本的列表,保质期未一天)
      • query编号.json(从bmob获取网上脚本的列表,一天刷新一次)
      • 其他(一些脚本也会用上)
    • data.json(用户设置的文件,比如xxx功能的开启或者关闭,允许修改,但是不保证修改后能否正常使用)
    • func.json(和下面的是配套出现,如果你打开了**”预加载”,下一次启动会读取脚本到这个文件,这样以后启动就不需要再读取脚本,**但是新的脚本也不会生效)
    • func.lua(配套)
    • 应该没有其他了

1.3常用全局变量

  • 布局类
    • hsn(状态栏高,integer)
    • mTheme(当前主题ID,源于gen/目录中的R.java参数,integer)
    • theme_n,theme_l(夜间,白天主题色的字符串:eg-“#FF303030”,string)
    • theme_n_int,theme_l_int(夜间,白天主题色的数字:eg-0xFF303030,integer)
  • 数据类
    • data(全部设置的数据数组,table)
    • mulu(绝对目录的前缀,string:”../alittlemc/“)
    • sdk(Android版本,integer)
    • string(列表封装,table)
    • diyname(存放含义布局diy脚本名称,table)
    • diyname_all(存放所有的脚本明,table)
    • diyabout(存放脚本概述,table)
  • 常用函数
* integer jishu(string a,string c)-->统计a中c字符串出现的次数
* string colordx(integer a)-->把a转为布局表中#取色码
* boolean app_bool(string path)-->判断包名为path的程序是否存在
* string getJqb()-->获取系统当前的剪切板内容
* void setJqb(string sr)-->设置系统剪切板内容为sr
* void tableChange(string sr,table a,table b)-->批量替换字符串
* void intent_url(string url)-->依据url调取其他软件
* void OpenFile(string path,string mod)-->调用第三方程序打开path路径的文件,如果找不到打开方式强制用mod文件类型打开(eg:txt)
* string sgg(string str,integer i,integer j)-->截取str的i到j位置的字符串,eg:sgg("abc",1,1)-->a
* string shell(string cmd)-->执行内容为cmd的shell命令,并却返回
* integer randomJava([integer min,integer max,integer seed])-->取以seed为种子范围在min-max的随机数,其中任意值都可以缺省
* string/integer getChar(i)-->为字符串返回第一个字符的u码,为数字返回对应的字符
* void setBz(viewid a,...)-->将当前壁纸设置为id为a,...的图像控件背景
* void DH(...忘记了)-->请参照属性动画参数
* void start_app(string s1,string s2)-->启动包名为s1的s2进程
* string fr(string f)-->读取路径为f文件的内容
* void fw(string f,string str,string mod)-->将str以mod模式(默认"w")写入文件路径f,**将会调用进程,请注意时间,先fw随后fr会读取的旧文件,而不是新文件**
* void fw_a(string f,string str)-->与fw同,只不过是追加模式
* boolean fd(string f)-->删除路径为f的文件,返回是否存在文件
* void fod(string f)-->删除f文件夹
* boolean fbool(string f)-->返回是否存在路径为f的文件
* string/integer ft(string f,boolean mod)-->如果mod为true,返回带有单位文件大小字符串eg:123Kb,否则返回文件占用字节
* void fchange(string f,string str,string sr)-->把文件路径f的内容中str替换为sr
* void fchange_get(string f,string get,string str,string sr)-->把字符串get中str替换为sr并且写入f文件路径
* string/table fr_data(string f,boolean mod)-->f为相对路径的私有文件,如果mod为true将私有文件f的内容返回,否则返回以\n分割的字符串数组
* void fw_data(string f,string str)-->与fr_data类似,只不过是将str写入f为相对路径的私有文件中,调用线程
* table fr_data(string f)-->将文件路径为f的文件内容,以\n为分割,返回字符串的数组
* void frenmae(string f,string f_)-->路径为f的文件/文件夹,修改为f_,重命名:把data.json重命名为data.txt,frenmae("alittlemc/data.json","alittlemc/data.txt"),把data.json移动到为/diy/data.txt,frenmae("alittlemc/data.json","alittlemc/diy/data.txt")
"都在**lua/fun.lua**和**lua/alm.lua**中,自己看吧,太多了不写了"

2.第三方包解释说明

2.1.CustomDialog (CD)

FileName: CustomDialog.lua
Author: SmallDi
Version: 1.0.2
Date: 2019-07-24
Email: 1753520469@qq.com
Github: https://github.com/smalldi/CustomDialog
Description: 纯LuaJava代码编写的高度自定义对话框

  • :build(integer theme)
    • 建立Dialog(integer 主题)
      dialog=CustomDialog:build(android.R.style.Theme_Material_Light_NoActionBar) 
      return __index

  • :setCancelable(boolean bool)

    • 能否从外侧区域点击关闭(bool=true可以;false不可以;默认nil)
      dialog:setCancelable(true)
      return __index
  • :setTitle(string title)

    • 添加标题控件及其内容(string支持Html)
      dialog:setTitle("<font color='red'>Title</font>")
      return __index
  • :setMessage(string message)

    • 添加内容控件及其内容(string支持Html)
      dialog:setMessage("<font color='red'>Message</font>")
      return __index
  • :addView(table_layout view)

    • 添加自定义的控件
      dialog:addView(loadlayout{
      TextView;
      textSize="20sp";
      text="标题";
      paddingTop="16dp";
      Typeface=FONT_BOLD;
      paddingLeft="16dp";
      paddingRight="16dp";
      layout_width="fill";
      })
      return __index
  • :setContentView(table_layout view)

    • 设置主布局
    • addView效果相同
  • :addButton(table_string[0-3] buttons,table_integer[0-3] color)

    • 添加按钮控件以及设置颜射
  • :setOnClick(function(dialog,view) event)

    • 设置按钮控件的点击事件
      dialog:setOnClick(function(d,v)
      switch(v.Text)
      case "关闭"
      ...
      end
      end)

      return __index
  • :setOnLongClick(function(dialog,view) event)

    • 设置按钮控件的长按事件
    • setOnClick相同
  • :enterAnimation(Animation anima,number fromX, number toX, number fromY, number toY)

    • 设置打开动画
      • animafalse/nil 时:默认使用TranslateAnimation(平移),并且继续使用fromX, toX, fromY, toY(其中若参数不全,用0补全)
      • anlma 为 补间动画类时,执行其动画,后面的参数将不生效
        dialog:exitAnimation(nil,0, 1000, 0, 0)
        --或者
        dialog:exitAnimation(AlphaAnimation(0, 1))
        --动画时长默认为
        activity.getResources().getInteger(android.R.integer.config_mediumAnimTime)

        return __index,anima 若第一个参数为动画类 即额外返回该动画修改后赋值,可以用于动画事件
  • :exitAnimation(Animation anima,number fromX, number toX, number fromY, number toY)

    • 设置关闭动画
    • exitAnimation相同
  • :setGravity(Gravity gravity)

    • 设置位置,默认Gravity.BOTTOM
      dialog:setGravity(Gravity.BOTTOM)
      --常用
      Gravity.TOP
      Gravity.CENTER
      Gravity.BOTTOM

      return __index
  • :setRadius(integer color,number leftTop,number rightTop,number rightBottom,number leftBottom)

    • 设置背景颜色/圆角大小(分别是左上,右上,左下,右下)
      dialog:setRadius(0xFF00796B)

      return __index
  • .show()

    • 显示Dialog,无参数,使用.,使用后新追加的(即上面函数的修改)不生效
      dialog.show()

      return __index
  • .hide()

    • 立即关闭Dialog,无参数,使用.
      dialog.hide()

      return __index

说明

  • 在本项目中请使用该方法调用
    CenterDialog=require "openSource.CustomDialog.main"
  • 以上方法都可以叠起来用
    dialog=CustomDialog.build()
    :setTitle(t.title or "标题")
    :setRadius(Color.WHITE,10,10)
    .show()