领先android的锁屏技术教程
我们的目标是最大化锁屏界面的自由度,让解锁界面和解锁方式可以通过主题包很方便的更换。 百变锁屏时时候进军2.0新时代了,我们仍会继续发力,加入更多更酷的新功能!
Manifest(清单).xml 百变锁屏在主题包里的lock screen(锁定屏幕)/advance(推进)目录下,manifest.xml文件是描述脚本
frameRate(帧速率): 指定帧率,如果动画缓慢,可以指定小一点的值,省电。默认为30。
displayDesktop(桌面显示)属性,默认为false(假),透视到桌面功能,如果没有锁屏壁纸或者锁屏壁纸可以被移开或透明时可以看到桌面launcher(发射器)或者是锁屏前的应用程序。可以完美实现WP7,Meego,阿里云等的解锁界面。
界面元素的遮挡取决于在xml中出现的先后,最先出现的在最下层。 (锁定屏幕) version(版本) ="1" frameRate="" displayDesktop="boolean"> (图像) /> 锁屏控件
1
< Unluckier /> 锁屏控件 时间 日期 文本
壁纸元素
Wallpaper元素引用系统设置的壁纸,除了不能指定图片源外其他和Image元素相同,可以有动画和其他属性控制。如果没有此元素则不显示壁纸。可以有多个。 例子:
变量及变量数组
> 分别定义单个变量和变量数组 name 变量名
expression 变量对应的表达式或常量 注意:如果定义字符串常量需要多一套单引号: expression="'my string'" type= number/string 定义数值变量或字符串变量 默认:number
2
const = false/true,=true变量只会在初始化时计算一次,以后不会重新计算,可以提高效率。如果变量值会在锁屏运行期间改变,const设为false 默认:false <Vars> 增值
index="#time/2000%5"/> ... - expression="ifelse(isnull(@date_format,'MMMMd日 EEEE', @date_format"/>
- value="EEEE"/> ...
Item 数组元素定义
expression 元素对应的表达式
value 如果元素是常量,则用value指定常量值
// 定义了一个每隔两秒轮换一次日期显示格式的DateTime元素. //数组元素可以用来根据数字变量值显示不同的字符串
3
< !——如果常量是真的,该变量在初始时间只能评价一次,- - >
显示日期expression="ifelse(isnull(#show_date,1,#show_date " type="number" const="true"/> expression="ifelse(isnull(#text_size_date,18,#tex t_size_date" type="number" const="true"/>
4
// 显示英文月份
...
变量表达式,src除外
当前支持变量: 变量以#开头
* 解锁物件属性: 格式:物件名.属性名
#unlocker.move_x
5
move_x 解锁时在x方向移动距离 move_y 解锁时在y方向移动距离 move_dist 解锁时移动距离
state 解锁状态: 正常:0 按下:1 到达解锁位置:2 * 全局变量: time 当前时间,long touch_x 当前触摸点 x touch_y 当前触摸点 y battery_level 电池电量 0-100 sms_unread_count 未读短信 call_missed_count 未接电话 // 时间日期变量
time_sys 变量,为系统当前时间毫秒数。 ampm 上下午 // 0 am, 1 pm hour12 小时,12小时制 hour24 小时,24小时制 minute 分钟 second 秒 year 年
month 月 //0-11 date 日
day_of_week 星期 // 1-7 星期日到星期六
6
screen_width 屏幕宽度 screen_height 屏幕高度
battery_state 电池状态: 正常:0 充电:1 电量低:2 已充满:3 例子:alpha值的变量表达式表示该图片只有在非充电状态显示,并且随着解锁水平方向的拖动逐渐变透明至 消失。
alpha="(255-#unlocker.move_x/100*255*min(1, abs(1-#battery_state"/>
表达式
支持加减乘除取模括号和函数 加减乘除取模
: + - * / % 支持函数:sin, cos, tan, asin, acos, atan, sinh, cosh, sqrt, abs, min, max 不解释
len(数字 给定数字位数
len(1234=4 digit(数字, 第几位 取给定数字的第几位 digit(1234, 2 = 3 round( 四舍五入取整 int(向下取整 eq(x, y // x==y ? 1 : 0 ne(x, y // x!=y ? 1 : 0 ge(x, y // x>=y ? 1 : 0
7
gt(x, y // x>y ? 1 : 0 le(x, y // x<=y ? 1 : 0 lt(x, y // x isnull(x // x==null ? 1 : 0 // 是否表达式包含空变量,通常用于判断绑定的变量是否查到数据
not(x x>0 ? 0 : 1 ifelse(x, y, z // x>0 ? y : z ifelse(x1, y1, x2, y2, ... , z if x1>0 return y1; else if x2>0 return y2; ... ; else return z +可以拼接字符串 , 一些函数也可以支持字符串,isnull可以判断字符串变量是否为空,ifelse可以选择字符串,字符串比较函数eqs(@string1, @string2 元素可见性支持表达式
visibility=“表达式” <=0 不可见 >0可见 Image, Text, Time的属性