MIUI论坛 下载APP

MIUI开发组

Rank: 8Rank: 8

积分
4191
机型
小米手机1/1S
签到次数
66
MIUI版本
V10.0.3.0.ODGCNFH
私信

[制作教程] 【总教程2】百变锁屏 2.0 【1.22 更新】

  [复制链接]
579891 2387 |
2011-11-24 12:42 | 来自PC
| |
|
跳转
本帖最后由 米青 于 2014-8-14 10:55 编辑

感谢大家的支持,百变锁屏自发布以来一直断续更新,虽然不算太多,到现在无论是功能还是资源跟刚发布时相比已经不可同日而语了。由于我只有小部分时间投入,一直没有做较大的新功能。最近投入了一些时间加了一些有用的功能,是时候进入2.0的新时代了,以后不出意外的话还会持续发力,加入更多更酷的新功能,

完整版在线wiki教程
http://wiki.dev.xiaomi.com/index.php?title=MAML%E6%95%99%E7%A8%8B

新增功能:
2.28
音乐控件支持歌名和歌手文字分开
  1. <MusicControl name="music_control"  />
复制代码
引用歌名: @music_control.title
    引用歌手:@music_control.artist

增加系统时间格式变量
#time_format
0: 12小时制;    1: 24小时制

ContentProviderBinder  uri和where支持表达式
uriExp                uri表达式
uriFormatExp    uri格式表达式
whereExp          where表达式
whereFormatExp    where格式表达式
如果uriExp表达式不为空则计算uriExp表达式取得uri,如果uriExp为空但uriFormatExp不为空,则计算uriFormatExp获得格式字符串,然后用uriParas参数填充格式字符串
因为原来的uriFormat只能格式化字符串和整数,如果uri需要由浮点数组成就不能满足,用uriExp的话可以用加号连接字符串和浮点数或者整数作为一个uri字符串


1.22
Image元素支持截取锁屏界面以下的系统界面
  1.         <Image name="homescreen" srcType="Screenshot"/>
复制代码
命令控制重新截屏
  1.                 <Command target="homescreen.animation" value="play"/>
复制代码
可以用来做一些效果,比如把锁屏下面的桌面从左到右拖动出现。

支持接收broadcast并从中取数据
name: 变量名   extra:broadcast中的extra名称,type:类型 int string double float long.
支持Trigger,接收到broadcast并更新变量后可触发若干命令
  1. <VariableBinders>
  2.     < BroadcastBinder name="" action="">
  3.         <Variable name="battery_level" type="int" extra="level"/>
  4.         <Variable name="battery_plugged" type="int" extra="plugged"/>
  5.        <Trigger>
  6.             <Command target="" value=""/>
  7.         </Trigger>
  8.     </BroadcastBinder>
  9. </VariableBinders>
复制代码
11.30 支持延迟解锁,可以在解锁前做一些过渡动画   
<Unlocker delay="" />    delay: 毫秒

11.14
新增滑动及解锁控件的endpoint状态变量
<EndPoint name="end1" ...>
   #end1.state   0: normal  1:pressed 2:reached

11.2
所有元素包括Group支持旋转,缩放,3D旋转功能
http://www.miui.com/thread-829033-1-1.html

增加取字符串子串操作函数: substr(string,start)  substr(string,start,length)
string: 源字符串  start:开始位置   length:子串长度,没有指定默认取开始位置后所有字符

8.24
Image元素增加图片大小属性  bmp_width, bmp_height
<Image name="img" src="test.png"/>   #img.bmp_width #img.bmp_height
Command新增功能:
* Intent    触发指定的intent,同EndPoint中的Intent 可配置
  <IntentCommand action="" type="" category="" package="" class=""/> 属性同EndPoint中的Intent
* 条件Command , 增加属性 condition="表达式"
* 延时Command , 增加属性 delay="表达式" (延时指定毫秒后触发)
* Binder Comand,控制VariableBinder的命令,一般用作触发刷新
<ContentProviderBinder name="weather"> // 天气信息
<BinderCommand name="weather" command="refresh"/> //触发查询天气信息

content provider提供了查询应用程序信息的通用接口,并将查询到的信息绑定到变量上。
  1. <VariableBinders>
  2.     <ContentProviderBinder uri="" columns="">
  3.         <Variable name="" type="" column="" row=""/>
  4.         ...
  5.     </ContentProviderBinder>
  6. </VariableBinders>
复制代码
ContentProviderBinder属性:
uri,columns,where,args,order 分别是查询源的地址,列,查询条件,where的参数,排序。类似SQL。
uriFormat,uriParams   支持格式化的uri。
countName   将查询到的记录数量绑定到该变量
ContentProviderBinder支持依赖关系:
  1. <ContentProviderBinder name="name1" dependency="name2">
  2. <ContentProviderBinder name="name2">
复制代码
name2查询结束后会触发name1的查询,name1的查询可以使用name2的变量。

Variable属性:
name 变量名
type  数据类型 string/double/float/int/long
row   column  变量绑定到的行、列


8.3
图片3D旋转支持z轴高度: centerZ   z轴旋转: angleZ  
<Image ... centerZ="250*2" angleZ="60" />

增加触摸开始时间变量#touch_begin_time ,可以在Button的up事件中用来计算滑动速度
v = (#touch_x - #touch_begin_x)/(#time_sys - #touch_begin_time)

支持获取应用程序图标:
http://www.miui.com/thread-673303-1-1.html

图片新增源图片大小属性: bmp_width bmp_height
<Image name="test" src="test.png"/>
#test.bmp_width  #test.bmp_height


7.13
Trigger和Command
Trigger下包含触发后执行的Command。
Trigger属性:
action 触发动作  用于Button: down,up,double
Command类型:
* 系统设置  <Command target=""  value=""/>
   铃声:target="RingMode" value="normal,silent,vibrate"  可以指定其中的几种状态,在指定的多个状态间切换
   WIFI:target="Wifi" value=""   value可指定为toggle/on/off
   数据:target="Data" value=""  同上
   蓝牙:target="Bluetooth" value="" 同上
   USB:target="UsbStorage" value="" 同上
* 属性命令   <Command target="元素.visibility"  value="true/false/toggle" />
                       <Command target="元素.animation"  value="play" />
* 变量赋值   <VariableCommand name=""  expression=""  type="" />   同变量定义<Var>
* 变量绑定   <BinderCommand name=""  command="refresh" />   更新VariableBinder
* Intent命令  <IntentCommand  id="" action="" type="" category="" package="" class="" name="" />
* 声音命令(即将支持)   <SoundCommand  sound=""  volume=""  keepCur=""  loop="" />   volume 音量,0~1的浮点数; keepCur 是否保持当前正在播放的声音,默认false; loop 是否循环播放,默认false。
所有的命令都可以额外指定以下属性:
condition:  触发条件,表达式为真时触发
delay:  延时触发,单位ms

目前支持触发器的元素有:
  1. <!-- 按钮触发 -->
  2. <Button>
  3.         <Triggers>
  4.                 <Trigger action="">
  5.                         <Command   />
  6.                         ....
  7.          </Trigger>
  8.         </Triggers>
  9. </Button>

  10. <!-- 解锁触发 EndPoint -->
  11. <EndPoint>
  12.     <Trigger>
  13.         <Command  />
  14.         .....
  15.     </Trigger>
  16. </StartPoint>

  17. <!-- 变量触发 -->
  18. 详见http://www.miui.com/forum.php?mod=viewthread&tid=820336&page=1&extra=#pid17599095
复制代码
变量动画

  1.     <Var name="ani_offset_x">
  2.         <VariableAnimation>
  3.             <AniFrame value="#ani_begin_x" time="0"/>
  4.             <AniFrame value="0" time="300"/>
  5.             <AniFrame value="0" time="100000000000000"/>
  6.         </VariableAnimation>
  7.     </Var>
复制代码
原有的Var元素可以指定动画,值可以随时间变化

支持个性化设置
http://www.miui.com/thread-373229-1-1.html


7.4
显示音量调节
#volume_level 现在音量   #volume_level_old 调节之前的音量  取值:   1-15   根据二者比较判断是增大还是减小

#volume_type
   //    STREAM_VOICE_CALL = 0;
    //    /* The audio stream for system sounds */
    //    STREAM_SYSTEM = 1;
    //    /* The audio stream for the phone ring and message alerts */
    //    STREAM_RING = 2;
    //    /* The audio stream for music playback */
    //    STREAM_MUSIC = 3;
    //    /* The audio stream for alarms */
    //    STREAM_ALARM = 4;
    //    /* The audio stream for notifications */
    //    STREAM_NOTIFICATION = 5;
    //    /* @hide The audio stream for phone calls when connected on bluetooth */
    //    STREAM_BLUETOOTH_SCO = 6;
    //    /* @hide The audio stream for enforced system sounds in certain countries (e.g camera in Japan) */
    //    STREAM_SYSTEM_ENFORCED = 7;
    //    /* @hide The audio stream for DTMF tones */
    //    STREAM_DTMF = 8;
    //    /* @hide The audio stream for text to speech (TTS) */
    //    STREAM_TTS             = 9;
    //    /* @hide The audio stream for FM */
    //    STREAM_FM              = 10;
一般锁屏下只能调 music   3
#volume_type>=0 表示正在调节音量,调节完毕后值为-1 可根据这个显示或隐藏音量显示


增强ifelse函数功能,支持任意数量条件和值
ifelse(x1, y1, x2, y2, ... , z)
//  if x1>0 return y1; else if x2>0 return y2; ... ; else return z

6.20
文本支持多行 <Text  name="text1" multiLine="true" width="150" .../ >
#text1.text_height 为折行后的高度
可选属性:
spacingMult  行距倍数 默认1
spacingAdd  行距增加量 默认0

动态帧率:  http://www.miui.com/thread-567030-1-1.html
查询Webservice : http://www.miui.com/thread-608966-1-1.html
图片3D旋转和virtual screen: http://www.miui.com/thread-603855-1-1.html
color属性支持:1.常量    2.字符串变量   3.argb(A,R,G,B)函数式,其中A,R,G,B均为表达式.

2.10
百变锁屏支持针对单个主题的个性化设置(需主题支持)可以设置解锁快捷方式

http://www.miui.com/forum.php?mod=viewthread&tid=373229&page=1#pid7597658

1.7 自定义中间变量和数组
新增两个元素<Var>  <VarArray> 分别定义单个变量和变量数组
<Var name="" expression="" type="" const=""/>
name 变量名
expression 变量对应的表达式或常量 注意:如果定义字符串常量需要多一套单引号: expression="'my string'"
type= number/string  定义数值变量或字符串变量   默认:number
const =true变量只会在初始化时计算一次,以后不会重新计算,可以提高效率。如果变量值会在锁屏运行期间改变,const设为false 默认:false
  1. <VarArray type="string">
  2.   <Vars>
  3.     <Var name="date_format1" index="#time/2000%5"/>
  4.     <Var name="date_format2" index="2" const="true"/>
  5.          ...
  6.   </Vars>
  7.    
  8.   <Items>
  9.     <Item expression="ifelse(isnull(@date_format),'MMMMd日 EEEE', @date_format)"/>
  10.          <Item value="EEEE"/>
  11.          ...
  12.   </Items>
  13. </VarArray>
复制代码
Item  数组元素定义
expression 元素对应的表达式
value 如果元素是常量,则用value指定常量值
  1. // 定义了一个每隔两秒轮换一次日期显示格式的DateTime元素.
  2. //数组元素可以用来根据数字变量值显示不同的字符串
  3. <!-- if const is true, the variable will only evaluate once at the initial time, -->
  4. <Var name="show_date" expression="ifelse(isnull(#show_date),1,#show_date )" type="number" const="true"/>
  5. <Var name="text_size_date" expression="ifelse(isnull(#text_size_date),18,#tex t_size_date)" type="number"
  6. const="true"/>
  7. <VarArray type="string">
  8.      <Vars>
  9.           <Var name="date_format1" index="#time/2000%5"/>
  10.           <Var name="date_format2" index="2" const="true"/>
  11.      </Vars>
  12.      <Items>
  13.           <Item expression="ifelse(isnull(@date_format),'MMMMd日 EEEE', @date_format)"/>
  14.           <Item value="EEEE"/>
  15.           <Item value="yyyy年"/>
  16.           <Item value="MMMM"/>
  17.           <Item value="d日"/>
  18.         </Items>
  19. </VarArray>
复制代码
  1. // 显示英文月份
  2. <VarArray type="string">
  3.   <Vars>
  4.     <Var name="month_str" index="#month"/>
  5.   </Vars>
  6.    
  7.   <Items>
  8.     <Item value="January"/>
  9.          <Item value="February"/>
  10.     ...
  11.          <Item value="November"/>
  12.          <Item value="December"/>
  13.   </Items>
  14. </VarArray>
  15. <Text text="@month_str" color="#FFFFFFFF" size="20" ... />
复制代码
Var新增变量阈值触发:threshold 阈值;    <Var>下面的<Trigger>用来指定触发。
详见http://www.miui.com/forum.php?mod=viewthread&tid=820336&page=1&extra=#pid17599095
20111124_123901.jpg

TF3 锁屏 天气.mtz

2.62 MB, 下载次数: 13753

NexusOne_1.2.02_liqucn.com.apk

670.92 KB, 下载次数: 13541

收藏435 分享  

已有 71 人评分 经验 理由  

我是败天吖 + 1 原创内容^_^
52B.me + 1 欢迎访问我的主页,限男士。有惊喜!.
A348033986 + 1 MIUI 因你更精彩!
八爪鱼462 + 1 感谢分享^_^
裸奔的大麦 + 1 精品文章^_^
一YY阳 + 1 MIUI 因你更精彩!
qpzm78952 -1 好一个“图文并茂”啊,就一张跟编程无关的.
v_chl + 1 精品文章^_^
清泠7731 + 1 精品文章^_^
沙漠水手@ + 5 学习
爱小米MISS + 5 感谢分享^_^
RoyalWu + 1 MIUI 因你更精彩!
第四占梦人 + 2 MIUI 因你更精彩!
NIU1S + 2 MIUI 因你更精彩!
海时空 + 5 精品文章^_^
小枫 + 5 有人做支持接收broadcast的锁屏了吗.
我是陈风 + 1 MIUI 因你更精彩!
monkeyiou + 3 精品文章^_^
KevinCobain + 1 太需要了!太强大了!太感谢了!.
zhughe + 2 好。

经验 +101  查看全部评分

玩机之王

Rank: 5Rank: 5

积分
2738
机型
未知设备
签到次数
36
MIUI版本
3.2.22
私信

1000万用户纪念勋章

2011-11-24 13:08 | 来自PC
|
本帖最后由 乱弹心弦 于 2011-11-24 13:08 编辑

沙发么?绝对支持啊!

已有 1 人评分 经验 理由  

讷讷珍坏 + 2 沙发加分 不解释

经验 +2  查看全部评分

玩机狂人

Rank: 3Rank: 3

积分
211
机型
MOTO DEFY
签到次数
3
MIUI版本
1
私信
2011-11-24 13:12 | 来自PC
|
前排吗 支持一下

荣誉开发组

I9000的Anzh

Rank: 6Rank: 6

积分
27778
机型
未知设备
签到次数
138
MIUI版本
7.11.9
私信

MIUI 3000万MIUI 2000万1000万用户纪念勋章小米手机2终身荣誉勋章小米手机1终身荣誉勋章MIUI三周年关注微信疾风测评勋章MIUI V5内测元勋关注腾讯微博关注新浪微博MIUI 100周发烧友俱乐部VIP贵宾小米手机元器件合体活动勋章

2011-11-24 13:14 | 来自PC
|
支持一下~
性浪微博:http://weibo.com/anzh
热心机友兼小白一枚 爱冲动 多见谅
对小米手机的触感体验表示无限怨念
MIUI官方小米手机2 交流6群:133976183

玩机大师

Rank: 4

积分
1138
机型
MOTO DEFY
签到次数
7
MIUI版本
1
私信
2011-11-24 13:14 | 来自PC
|
前排支持啊!!!!

玩机之王

山路十八掌

Rank: 5Rank: 5

积分
3696
机型
小米手机2/2S
签到次数
41
MIUI版本
4.1.24
私信

MIUI 100周小米手机元器件合体活动勋章

2011-11-24 13:14 | 来自PC
|
地板,这次我也得红了
别看资料,看聊效,聊效好,才是真的好

玩机之皇

赠人玫瑰,手有余香。

Rank: 6Rank: 6

积分
18609
机型
未知设备
签到次数
215
MIUI版本
6.12.1
私信

MIUI 3000万MIUI 2000万1000万用户纪念勋章小米手机3终身荣誉勋章小米手机2终身荣誉勋章小米手机1终身荣誉勋章MIUI三周年极客勋章MIUI V5内测元勋关注腾讯微博关注新浪微博MIUI 100周小米手机元器件合体活动勋章

2011-11-24 13:15 | 来自PC
|
本帖最后由 hcl666@qq.com 于 2011-11-24 13:21 编辑

好东西啊~~~~~希望多出点锁屏主题,毕竟官方的对主题制作比较熟悉~~

玩机之王

Rank: 5Rank: 5

积分
2938
机型
未知设备
签到次数
113
MIUI版本
V9.2.4.0.NCACNEK
私信
2011-11-24 13:18 | 来自PC
|
很给力!!!!!!!!

玩机大师

Rank: 4

积分
1707
机型
HTC Desire S
签到次数
30
MIUI版本
1
私信

小米手机元器件合体活动勋章

2011-11-24 13:18 | 来自PC
|
本帖最后由 k10230983 于 2011-11-24 13:19 编辑

不容易啊
第一次这么前面.

玩机大师

Rank: 4

积分
1928
机型
MOTO Defy+
签到次数
33
MIUI版本
JHBCNBL29.0
私信

MIUI 100周小米手机元器件合体活动勋章

2011-11-24 13:21 | 来自PC
|
技术贴,支持下
快速回复 返回顶部 返回列表