Skip to content

Page ​

点击后跳转到一个页面

用法 ​

xml
<page 
      title="Click This"
      config="file:///android_asset/samples/page.xml" />

WARNING

config只能指定应用assets下的文件,其中file:///android_asset/是固定前缀,可以省略不写

属性 ​

属性名称用途
config配置指定另一个配置文件作为子页面的内容
html网页指定一个网页作为子页面的内容
activity活动名称点击后要打开的activity,格式为action或packageName/activityClass
link链接地址点击后要打卡的网页地址(将调用浏览器)
config-sh动态配置写一段脚本,输出配置文件所在路径或完整内容
before-load读取配置前指定在加载配置文件前要执行的代码(仅限使用config、config-sh的page定义有效)
after-load读取配置后指定配置文件读取完成后要执行的代码(仅限使用config、config-sh的page定义有效)
  • config-sh 属性需设置为一段脚本,通过echo输出配置文件所在位置,或直接输出配置文件完整内容
xml
<!--输出配置文件绝对路径。支持以 “file:///android_asset” 开头指定assets中的文件-->
<page after-read="sleep 1" before-read="sleep 1"
    config-sh="echo 'file:///android_asset/kr-script/pages/custom_kernel_tuner.xml'">
    <title>测试config-sh【assets路径输出】</title>
    <desc>通过config-sh输出配置页所在位置,它可以是在assets中的文件</desc>
</page>

<!--输出配置文件绝对路径-->
<page config-sh="echo '/sdcard/text_test.xml'">
    <title>测试config-sh【路径输出】</title>
    <desc>通过config-sh输出配置页所在位置</desc>
</page>

<!--输出配置文件内容(框架识别到输出内容以“<?xml”开头 且以“>”结尾,按照此模式解析)-->
<page config-sh="cat /sdcard/text_test.xml">
    <title>测试config-sh【全文输出】</title>
    <desc>通过config-sh输出配置页内容</desc>
</page>
  • activity 示例
xml
<!--格式之一:activity=[action] -->
<page activity="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS">
    <title>开发者选项</title>
</page>

<!--格式之二:activity=[packageName/activityClass] -->
<page activity="com.android.settings/.Settings$MemorySettingsActivity">
    <title>内存使用情况</title>
</slice>

页面的菜单 ​

  • 你可以为子页面定制右上角菜单、悬浮按钮
  • 并单独设置一个脚本handler来处理菜单和按钮点击事件
  • 为了区别多个菜单按钮,你可以为menu指定id
  • 例如:
xml
<page config="samples/configs/empty.xml">
    <title>在页面右上角显示菜单</title>
    <menu type="default" id="AAA">自定义 2</menu>
    <menu type="file" id="BBB" style="fab">选择文件</menu>
    <menu type="refresh">刷新界面</menu>
    <menu type="finish">关闭页面</menu>
    <menu type="file">选择文件</menu>
    <handler>
        echo '点击的菜单项' $menu_id
        echo '选择的文件' $file
    </handler>
</page>

为page定义menu节点 ​

PIO做了一些语法兼容,所以下面几种写法都可以识别且没有区别

xml
<menu>菜单选项</menu>
<menu-item>菜单选项</menu-item>
<option>菜单选项</option>
<page-option>菜单选项</page-option>
属性作用有效值示例
auto-off、auto-close执行完handler代码以后关闭日志输出true falsetrue
auto-finish执行完handler代码以后关闭当前页面true falsetrue
reload-page执行完handler代码以后刷新当前页面true falsetrue
interruptible是否可中断handler执行true falsetrue
id用于区别多个menu的标识任意不重复的idA001
type用于区别多个menu的标识详见下方说明default
style菜单显示方式,设为fab时将显示未悬浮按钮default fabfab
icon悬浮按钮的图标文件路径文件路径samples/icons/icon-test.png
  • 注意:目前的版本,同一个Page只能设置一个style=fab的菜单按钮!
取值作用
default默认的按钮类型,点击后将menu的id传给handler处理
refresh、reload点击后刷新当前子页面,不会执行handler
exit、finish、close点击后关闭当前子页面,不会执行handler
file点击后需要用户选取文件,再将文件路径和menu的id传给handler

handler 处理菜单点击事件 ​

框架做了一些语法兼容,所以下面几种写法都可以识别且没有区别

xml
<handler>echo $menu_id</handler>

<!--你可以和picker、switch一样统一使用set节点来写处理脚本
并且可以直接使用state变量-->
<set>echo $state</set>

<script>echo $menu_id</script>
  • handler会收到 menu_id、state 和 file(其中menu_id值state是相同的)
  • 例如:
xml
<handler>
    echo '点击的菜单项' $menu_id
    echo '选择的文件' $file
</handler>

本文档基于 kr-scripts(GPL v3)修改整理。