工作生活

制作Android7.1关机充电动画

2019-07-01  本文已影响0人  网路元素

    在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

上一篇下一篇

猜你喜欢

热点阅读