MAML教程
MAML教程
MORE MAML 概述
MAML在百变锁屏中的应用
MAML在百变壁纸及动态图标中的应用
壁纸元素
变量
变量数组
全局变量
表达式
文本
时间
日期
图片
数字图片
图片遮罩
元素动画
Slider
按钮
音乐播放器
音量调节
Content Provider
Trigger Command
动态帧率
传感器调用
MAML引擎脚本语言
MIUI Application Markup Language for MORE (MIUI MORE引擎应用标记语言)
MORE渲染引擎
Markup Oriented Rendering Engine (基于标记语言的渲染引擎)
概述
最初用于百变锁屏,使用xml用特定的语法描述锁屏界面。后来不断增强功能,逐步演化成一套接近通用的界面描述语言和图形渲染引擎,在一定需求下可用于开发风格多变的用户界面。可方便地通过更换皮肤改变界面风格、动画甚至交互方式。
MAML语言和Android的界面描述xml 类似. 所不同的是Android描述的是静态界面,对界面元素的更改依赖java代码。MAML描述的是静态界面+动态属性,UI在时间线上按一定的帧率不断刷新,UI显示根据元素属性的变量表达式的计算结果实时更新。MAML语言和运行时引擎已经从锁屏中独立出来作为MIUI内置的通用框架,除了显示时间日期等,还支持查询标准Content Provider来获取各种信息如天气。显示图片文本等各种元素,各种动画,滑动点击等界面交互控件,适于实现展示信息或有简单交互操作的界面。比如时钟、天气小部件、闹钟响铃界面。
框架支持动态帧率,不必按照固定帧率不停渲染,在没有动画和更新的时侯停止渲染,此时仅占用极少资源,对于缓慢变化的动画使用低帧率渲染,高动态的动画开始后立即调整到高帧率全速渲染。全速渲染时全屏帧率基本可以达到60帧。合理使用可以既炫酷又不费电。
MORE引擎适用哪些类型的界面开发
1. 展示性的信息,如图片,文字 (不适合列表信息和大段文本,不适合用户输入)
2. 需要有丰富的界面动画及交互动画。
3. 较简单的交互,拖拽、点击 (但不限于拖拽点击,通过xml代码可以实现部分类似java编程中onTouchEvent所能做到的交互)
4. 使用标准控件无法实现的信息展示方式,或者无法实现的交互方式,需要自制控件的,大部分可以通过xml代码方便地描述实现。
5. 需要灵活更换皮肤风格,并且界面动画和交互动画甚至部分交互方式都可以通过皮肤更换。无需更改应用程序。
比如一些简单的工具类应用程序、无输入的操作界面希望能更换操作模式(例如来电接听界面)和桌面小工具可以考虑使用,也可以作为一个动画框架实现类似电子贺卡的界面,可支持交互,做为应用程序中的彩蛋(比如短信中的生日彩蛋)
MIUI主题使用MORE的模块
百变锁屏 ernal.policy.impl.AwesomeLockScreen
桌面时钟 com.miui.home.launcher.gadget.AwesomeClock
相框小工具 com.miui.home.launcher.gadget.PhotoFrame
闹钟响铃界面 com.android.deskclock.AlarmAlertFullScreen
自由桌面动态小部件 com.miui.home.launcher.gadget.AwesomeGadget
百变壁纸 com.miui.home.launcher.MiWallpaper (基于SurfaceView)
动态图标
天气小工具 com.miui.home.launcher.gadget.Weather_2x4_custom v4
MAML在百变锁屏中的应用
百变锁屏在主题包里的lockscreen/advance目录下,manifest.xml文件是描述脚本
Lockscreen frameRate displayDesktop showSysWallpaper screenWidth 720 … frameRate: 指定帧率,如果动画缓慢,可以指定小一点的值,省电。默认为30。
displayDesktop: 默认为false,透视到桌面功能,如果没有锁屏壁纸或者锁屏壁纸可以被移开或透明时可以看到桌面launcher或者是锁屏前的应用程序。可以完美实现WP7,Meego,阿里云等的解锁界面。
showSysWallpaper: 默认为false,是否在锁屏界面显示桌面壁纸。开启后如果没有指定锁屏壁纸 ,会将桌面壁纸作为锁屏的壁纸。
screenWidth: 设定屏幕宽度标准。如果指定为720,锁屏中所有元素的位置都按720p的布局编写,480p的手机会自动进
原创力文档

文档评论(0)