制作Android7.1关机充电动画

    在Android7.1系统上面,关机充电动画已不再是5.1里的几张图片,如下:
    在Android5.1的system/core/healthd/images目录下,有如下文件:
    battery_0.png
    battery_1.png
    battery_2.png
    battery_3.png
    battery_4.png
    battery_5.png
    battery_charge.png
    battery_fail.png
    capacity_text_bottom.png
    capacity_text_left.png
    capacity_text_right.png
    capacity_text_top.png
    而在Android7.1的同一目录下,则只有如下文件:
    battery_fail.png
    battery_scale.png
    其中,battery_scale.png为相应的动画文件,我们查找了一翻,发现在bootable/recovery目录下有interlace-frames.py文件,该文件用于将几张PNG图片合成一张PNG图片,我们使用如下命令将上面的battery_scale.png解包:
    python interlace-frames.py -d battery_scale.png -o battery.png
    会生成battery00.png、……、battery05.png共6个文件,而这6个文件刚好对应system/core/healthd/healthd_mode_charger.cpp文件里的default_animation_frames定义:
static struct animation::frame default_animation_frames[] = {
    {
        .disp_time = 750,
        .min_level = 0,
        .max_level = 19,
        .surface = NULL,
    },
    {
        .disp_time = 750,
        .min_level = 0,
        .max_level = 39,
        .surface = NULL,
    },
    {
        .disp_time = 750,
        .min_level = 0,
        .max_level = 59,
        .surface = NULL,
    },
    {
        .disp_time = 750,
        .min_level = 0,
        .max_level = 79,
        .surface = NULL,
    },
    {
        .disp_time = 750,
        .min_level = 80,
        .max_level = 95,
        .surface = NULL,
    },
    {
        .disp_time = 750,
        .min_level = 0,
        .max_level = 100,
        .surface = NULL,
    },
};
    表示在对应的level范围内显示对应的图片,6帧动画一一对应,这个可以按需修改参数。
    我们将自己的6张新动画制作好后,使用如下命令打包成新的图片:
    python interlace-frames.py -o battery_scale.png new/battery00.png new/battery01.png new/battery02.png new/battery03.png new/battery04.png new/battery05.png
    该命令执行好后,新的battery_scale.png文件生成,我们只需替换使用即可。
    在制作过程中碰到如下问题需要留意:
    1.每一张图片文件,必须保存为PNG-8格式(即8位的PNG格式图片);
    2.interlace-frames.py脚本需要修改如下:
       将
       import Image
       import PngImagePlugin
       修改为
       from PIL import Image
       from PIL import PngImagePlugin

评论

此博客中的热门博文

I/O映射之I/O端口

通过Netlink检测网线插拔

使用seq_file