android 改充电动画,Android 修改关机充电动画

本文详细介绍了如何修改Android系统的关机和充电时的动画效果,包括lk-cust_display.h文件中的参数调整,以及不同屏幕分辨率下的坐标设置。内容涵盖了不同版本动画的逻辑和相关常量定义,如CAPACITY_LEFT、NUMBER_LEFT等。此外,还提到了如何根据电池容量显示相应的动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在修改关机充电动画的问题,我就把一些需要修改的东西,分享给大家

lk-cust_display.h这个文件是修改动画位置,下面以480*800为例

/*

// new animation parameters example:WVGA (480*800)

// A , start point of first number rectangle

// B , left_top point of battery_capacity fill_in rectangle

// c , left_bottom point of battery_capacity fill_in rectangle

// battery capacity rectangle

#define CAPACITY_LEFT (172) // CAPACITY_LEFT = B.x = 172

#define CAPACITY_TOP (330) // CAPACITY_TOP = B.y = 330

#define CAPACITY_RIGHT (307) // CAPACITY_RIGHT = B.x + fill_line.w = 172 + 135

#define CAPACITY_BOTTOM (546) // CAPACITY_BOTTOM = C.y = 546

// first number rectangle

#define NUMBER_LEFT (178) // NUMBER_LEFT = A.x

#define NUMBER_TOP (190) // NUMBER_TOP = A.y

#define NUMBER_RIGHT (216) // NUMBER_RIGHT = A.x + num.w = 178 + 38

#define NUMBER_BOTTOM (244) // NUMBER_BOTTOM = A.y + num.h = 190 + 54

// % rectangle

#define PERCENT_LEFT (254) // PERCENT_LEFT = A.x + 2*num.w = 178 + 2*38

#define PERCENT_TOP (190) // PERCENT_TOP = A.y

#define PERCENT_RIGHT (302) // PERCENT_LEFT = A.x + 2*num.w +(%).w

#define PERCENT_BOTTOM (244) // PERCENT_BOTTOM = A.y + (%).h = 190 + 54

// top animation part

#define TOP_ANIMATION_LEFT (172) // TOP_ANIMATION_LEFT = B.x

#define TOP_ANIMATION_TOP (100) // 100

#define TOP_ANIMATION_RIGHT (307) // TOP_ANIMATION_LEFT = B.x + fill_line.w = 172 + 135

#define TOP_ANIMATION_BOTTOM (124) // TOP_ANIMATION_BOTTOM = TOP_ANIMATION_TOP + fill_line.h = 100 + 24

*/

#ifndef __CUST_DISPLAY_H__

#define __CUST_DISPLAY_H__

// color

#define BAR_OCCUPIED_COLOR (0x07E0) // Green

#define BAR_EMPTY_COLOR (0xFFFF) // White

#define BAR_BG_COLOR (0x0000) // Black

// LOGO number

#define ANIM_V0_LOGO_NUM 5 // version 0: show 4 recatangle growing animation without battery number

#define ANIM_V1_LOGO_NUM 39 // version 1: show wave animation with battery number

#define ANIM_V2_LOGO_NUM 86 // version 2: show wireless charging animation

// Common LOGO index

#define BOOT_LOGO_INDEX 0

#define KERNEL_LOGO_INDEX 38

#define ANIM_V0_BACKGROUND_INDEX 1

#define ANIM_V1_BACKGROUND_INDEX 35

#define LOW_BATTERY_INDEX 2

#define CHARGER_OV_INDEX 3

#define FULL_BATTERY_INDEX 37

// version 1: show wave animation with battery number

// NUMBER LOGO INDEX

#define NUMBER_PIC_START_0 4

#define NUMBER_PIC_PERCENT 14

// DYNAMIC ANIMATION LOGO INDEX

#define BAT_ANIM_START_0 15

// LOW BATTERY(0~10%) ANIMATION LOGO

#define LOW_BAT_ANIM_START_0 25

#define ANIM_LINE_INDEX 36

// version 2: show wireless charging animation logo index

#define V2_NUM_START_0_INDEX 57

#define V2_NUM_PERCENT_INDEX 67

#define V2_BAT_0_10_START_INDEX 68

#define V2_BAT_10_40_START_INDEX 72

#define V2_BAT_40_80_START_INDEX 76

#define V2_BAT_80_100_START_NDEX 80

#define V2_BAT_0_INDEX 84

#define V2_BAT_100_INDEX 85

// show fast charging animation logo index

#define FAST_CHARGING_BAT_100_INDEX 39

#define FAST_CHARGING_BAT_START_0_INDEX 40

#define FAST_CHARGING_NUM_START_0_INDEX 46

#define FAST_CHARGING_NUM_PERCENT_INDEX 56

#if defined(FHD) || defined(CU_FHD) || defined(CMCC_FHD) || defined(CT_FHD)

// fhd 1080*1920

// battery capacity rectangle

#define CAPACITY_LEFT (387) // battery capacity center

#define CAPACITY_TOP (802)

#define CAPACITY_RIGHT (691)

#define CAPACITY_BOTTOM (1292)

// first number rectangle

#define NUMBER_LEFT (351+84) // number

#define NUMBER_TOP (479)

#define NUMBER_RIGHT (435+84)

#define NUMBER_BOTTOM (600)

// % rectangle

#define PERCENT_LEFT (519+84) // percent number_left + 2*number_width

#define PERCENT_TOP (479)

#define PERCENT_RIGHT (627+84)

#define PERCENT_BOTTOM (600)

// top animation part

#define TOP_ANIMATION_LEFT (387) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (691)

#define TOP_ANIMATION_BOTTOM (152)

// for old animation

#define BAR_LEFT (470)

#define BAR_TOP (356)

#define BAR_RIGHT (610)

#define BAR_BOTTOM (678)

#elif defined(WQHD) || defined(CU_WQHD) || defined(CMCC_WQHD) || defined(CT_WQHD)

// hd720 720*1280

// battery capacity rectangle

#define CAPACITY_LEFT (393) // battery capacity center

#define CAPACITY_TOP (786)

#define CAPACITY_RIGHT (623)

#define CAPACITY_BOTTOM (1155)

// first number rectangle

#define NUMBER_LEFT (410) // number

#define NUMBER_TOP (546)

#define NUMBER_RIGHT (474)

#define NUMBER_BOTTOM (636)

// % rectangle

#define PERCENT_LEFT (537) // percent number_left + 2*number_width

#define PERCENT_TOP (546)

#define PERCENT_RIGHT (618)

#define PERCENT_BOTTOM (636)

// top animation part

#define TOP_ANIMATION_LEFT (393) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (624)

#define TOP_ANIMATION_BOTTOM (182)

// for old animation

#define BAR_LEFT (443)

#define BAR_TOP (337)

#define BAR_RIGHT (574)

#define BAR_BOTTOM (641)

#elif defined(HD720) || defined(CU_HD720) || defined(CMCC_HD720) || defined(CT_HD720)

// hd720 720*1280

// battery capacity rectangle

#define CAPACITY_LEFT (278) // battery capacity center

#define CAPACITY_TOP (556)

#define CAPACITY_RIGHT (441)

#define CAPACITY_BOTTOM (817)

// first number rectangle

#define NUMBER_LEFT (290) // number

#define NUMBER_TOP (386)

#define NUMBER_RIGHT (335)

#define NUMBER_BOTTOM (450)

// % rectangle

#define PERCENT_LEFT (380) // percent number_left + 2*number_width

#define PERCENT_TOP (386)

#define PERCENT_RIGHT (437)

#define PERCENT_BOTTOM (450)

// top animation part

#define TOP_ANIMATION_LEFT (278) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (441)

#define TOP_ANIMATION_BOTTOM (129)

// for old animation

#define BAR_LEFT (313)

#define BAR_TOP (238)

#define BAR_RIGHT (406)

#define BAR_BOTTOM (453)

#elif defined(FWVGA) || defined(CU_FWVGA) || defined(CMCC_FWVGA) || defined(CT_FWVGA)

// fwvga 480*854

// battery capacity rectangle

#define CAPACITY_LEFT (172) // battery capacity center

#define CAPACITY_TOP (357)

#define CAPACITY_RIGHT (307)

#define CAPACITY_BOTTOM (573)

// first number rectangle

#define NUMBER_LEFT (172) // number

#define NUMBER_TOP (213)

#define NUMBER_RIGHT (210)

#define NUMBER_BOTTOM (267)

// % rectangle

#define PERCENT_LEFT (248) // percent number_left + 2*number_width

#define PERCENT_TOP (213)

#define PERCENT_RIGHT (296)

#define PERCENT_BOTTOM (267)

// top animation part

#define TOP_ANIMATION_LEFT (172) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (307)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (184)

#define BAR_TOP (227)

#define BAR_RIGHT (294)

#define BAR_BOTTOM (437)

#elif defined(QHD) || defined(CU_QHD) || defined(CMCC_QHD) || defined(CT_QHD)

// qhd 540*960

// battery capacity rectangle

#define CAPACITY_LEFT (202) // battery capacity center

#define CAPACITY_TOP (410)

#define CAPACITY_RIGHT (337)

#define CAPACITY_BOTTOM (626)

// first number rectangle

#define NUMBER_LEFT (202) // number

#define NUMBER_TOP (266)

#define NUMBER_RIGHT (240)

#define NUMBER_BOTTOM (320)

// % rectangle

#define PERCENT_LEFT (278) // percent number_left + 2*number_width

#define PERCENT_TOP (266)

#define PERCENT_RIGHT (326)

#define PERCENT_BOTTOM (320)

// top animation part

#define TOP_ANIMATION_LEFT (202) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (337)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (235)

#define BAR_TOP (179)

#define BAR_RIGHT (305)

#define BAR_BOTTOM (340)

#elif defined(WVGA) || defined(CU_WVGA) || defined(CMCC_WVGA) || defined(CT_WVGA)

// default wvga 480*800

// battery capacity rectangle

#define CAPACITY_LEFT (172) // battery capacity center

#define CAPACITY_TOP (330)

#define CAPACITY_RIGHT (307)

#define CAPACITY_BOTTOM (546)

// first number rectangle

#define NUMBER_LEFT (178) // number

#define NUMBER_TOP (190)

#define NUMBER_RIGHT (216)

#define NUMBER_BOTTOM (244)

// % rectangle

#define PERCENT_LEFT (254) // percent number_left + 2*number_width

#define PERCENT_TOP (190)

#define PERCENT_RIGHT (302)

#define PERCENT_BOTTOM (244)

// top animation part

#define TOP_ANIMATION_LEFT (172) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (307)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (209)

#define BAR_TOP (149)

#define BAR_RIGHT (271)

#define BAR_BOTTOM (282)

#elif defined(HVGA) || defined(CU_HVGA) || defined(CMCC_HVGA) || defined(CT_HVGA)

// hvga 320*480

// battery capacity rectangle

#define CAPACITY_LEFT (109) // battery capacity center

#define CAPACITY_TOP (189)

#define CAPACITY_RIGHT (211)

#define CAPACITY_BOTTOM (350)

// first number rectangle

#define NUMBER_LEFT (126) // number

#define NUMBER_TOP (95)

#define NUMBER_RIGHT (153)

#define NUMBER_BOTTOM (131)

// % rectangle

#define PERCENT_LEFT (180) // percent number_left + 2*number_width

#define PERCENT_TOP (95)

#define PERCENT_RIGHT (212)

#define PERCENT_BOTTOM (131)

// top animation part

#define TOP_ANIMATION_LEFT (109) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (211)

#define TOP_ANIMATION_BOTTOM (118)

// for old animation

#define BAR_LEFT (129)

#define BAR_TOP (128)

#define BAR_RIGHT (190)

#define BAR_BOTTOM (245)

#elif defined(QVGA) || defined(CU_QVGA) || defined(CMCC_QVGA) || defined(CT_QVGA)

// hvga 320*480

// battery capacity rectangle

#define CAPACITY_LEFT (82) // battery capacity center

#define CAPACITY_TOP (124)

#define CAPACITY_RIGHT (158)

#define CAPACITY_BOTTOM (241)

// first number rectangle

#define NUMBER_LEFT (93) // number

#define NUMBER_TOP (50)

#define NUMBER_RIGHT (109)

#define NUMBER_BOTTOM (73)

// % rectangle

#define PERCENT_LEFT (125) // percent number_left + 2*number_width

#define PERCENT_TOP (50)

#define PERCENT_RIGHT (145)

#define PERCENT_BOTTOM (73)

// top animation part

#define TOP_ANIMATION_LEFT (82) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (158)

#define TOP_ANIMATION_BOTTOM (113)

// for old animation

#define BAR_LEFT (97)

#define BAR_TOP (96)

#define BAR_RIGHT (140)

#define BAR_BOTTOM (184)

#elif defined(WSVGA)

// wsvga 600*1024

// battery capacity rectangle

#define CAPACITY_LEFT (232) // battery capacity center

#define CAPACITY_TOP (442)

#define CAPACITY_RIGHT (367)

#define CAPACITY_BOTTOM (658)

// first number rectangle

#define NUMBER_LEFT (250) // number

#define NUMBER_TOP (300)

#define NUMBER_RIGHT (288)

#define NUMBER_BOTTOM (354)

// % rectangle

#define PERCENT_LEFT (326) // percent number_left + 2*number_width

#define PERCENT_TOP (300)

#define PERCENT_RIGHT (374)

#define PERCENT_BOTTOM (354)

// top animation part

#define TOP_ANIMATION_LEFT (232) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (367)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (260)

#define BAR_TOP (190)

#define BAR_RIGHT (338)

#define BAR_BOTTOM (360)

#elif defined(WSVGANL)

// wsvganl 1024*600

// battery capacity rectangle

#define CAPACITY_LEFT (444) // battery capacity center

#define CAPACITY_TOP (230)

#define CAPACITY_RIGHT (579) // 444 + 135

#define CAPACITY_BOTTOM (446)

// first number rectangle

#define NUMBER_LEFT (466) // number

#define NUMBER_TOP (90)

#define NUMBER_RIGHT (504) // 466 + 38

#define NUMBER_BOTTOM (144) // 90 + 54

// % rectangle

#define PERCENT_LEFT (542) // percent number_left + 2*number_width

#define PERCENT_TOP (90)

#define PERCENT_RIGHT (590)

#define PERCENT_BOTTOM (144)

// top animation part

#define TOP_ANIMATION_LEFT (444) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (579)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (414)

#define BAR_TOP (186)

#define BAR_RIGHT (608)

#define BAR_BOTTOM (477)

#elif defined(WXGANL)

// wxganl 1280*800

// battery capacity rectangle

#define CAPACITY_LEFT (558) // battery capacity center

#define CAPACITY_TOP (265)

#define CAPACITY_RIGHT (721) //558+163

#define CAPACITY_BOTTOM (525)

#define NUMBER_LEFT (585) // number

#define NUMBER_TOP (95)

#define NUMBER_RIGHT (630)//585+45

#define NUMBER_BOTTOM (159) //95+64

#define PERCENT_LEFT (675) // percent number_left + 2*number_width

#define PERCENT_TOP (95)

#define PERCENT_RIGHT (732) //675+57

#define PERCENT_BOTTOM (159)

#define TOP_ANIMATION_LEFT (558) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (721)

#define TOP_ANIMATION_BOTTOM (129)

// for old animation

#define BAR_LEFT (525)

#define BAR_TOP (250)

#define BAR_RIGHT (755)

#define BAR_BOTTOM (640)

#elif defined(WXGA)

// wxga 800*1280

// battery capacity rectangle

#define CAPACITY_LEFT (318) // battery capacity center

#define CAPACITY_TOP (556)

#define CAPACITY_RIGHT (481) //318+163

#define CAPACITY_BOTTOM (815)

#define NUMBER_LEFT (345) // number

#define NUMBER_TOP (385)

#define NUMBER_RIGHT (390) //345+45

#define NUMBER_BOTTOM (449) //385+64

#define PERCENT_LEFT (435) // percent number_left + 2*number_width

#define PERCENT_TOP (385)

#define PERCENT_RIGHT (492) //435+57

#define PERCENT_BOTTOM (449)

#define TOP_ANIMATION_LEFT (318) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (481)

#define TOP_ANIMATION_BOTTOM (129)

// for old animation

#define BAR_LEFT (348)

#define BAR_TOP (238)

#define BAR_RIGHT (453)

#define BAR_BOTTOM (452)

#elif defined(WUXGANL)

// wuxganl 1920*1200

// battery capacity rectangle

#define CAPACITY_LEFT (806) // battery capacity center

#define CAPACITY_TOP (443)

#define CAPACITY_RIGHT (1110)

#define CAPACITY_BOTTOM (929)

#define NUMBER_LEFT (855) // number

#define NUMBER_TOP (124)

#define NUMBER_RIGHT (939) //855+84

#define NUMBER_BOTTOM (245)

#define PERCENT_LEFT (1023) // percent number_left + 2*number_width

#define PERCENT_TOP (124)

#define PERCENT_RIGHT (1131) //1023+108

#define PERCENT_BOTTOM (245) //124+121

#define TOP_ANIMATION_LEFT (806) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (1110) //806+304

#define TOP_ANIMATION_BOTTOM (152)

// for old animation

#define BAR_LEFT (890)

#define BAR_TOP (357)

#define BAR_RIGHT (1030)

#define BAR_BOTTOM (678)

#elif defined(WUXGA) || defined(CU_WUXGA)

// wuxga 1200*1920

// battery capacity rectangle

#define CAPACITY_LEFT (447) // battery capacity center

#define CAPACITY_TOP (803)

#define CAPACITY_RIGHT (751)

#define CAPACITY_BOTTOM (1289)

#define NUMBER_LEFT (494) // number

#define NUMBER_TOP (481)

#define NUMBER_RIGHT (578)//494+84

#define NUMBER_BOTTOM (602) //481+121

#define PERCENT_LEFT (662) // percent number_left + 2*number_width

#define PERCENT_TOP (481)

#define PERCENT_RIGHT (770) //662+108

#define PERCENT_BOTTOM (602) //481+121

#define TOP_ANIMATION_LEFT (447) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (751)

#define TOP_ANIMATION_BOTTOM (152)

// for old animation

#define BAR_LEFT (529)

#define BAR_TOP (357)

#define BAR_RIGHT (672)

#define BAR_BOTTOM (680)

#elif defined(XGA)

// xga 768*1024

// battery capacity rectangle

#define CAPACITY_LEFT (316) // battery capacity center

#define CAPACITY_TOP (442)

#define CAPACITY_RIGHT (451)

#define CAPACITY_BOTTOM (658)

#define NUMBER_LEFT (338) // number

#define NUMBER_TOP (300)

#define NUMBER_RIGHT (376)

#define NUMBER_BOTTOM (354)

#define PERCENT_LEFT (414) // percent number_left + 2*number_width

#define PERCENT_TOP (300)

#define PERCENT_RIGHT (462)

#define PERCENT_BOTTOM (354)

#define TOP_ANIMATION_LEFT (316) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (451)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (334)

#define BAR_TOP (243)

#define BAR_RIGHT (434)

#define BAR_BOTTOM (463)

#elif defined(XGANL)

// xganl 1024*768

// battery capacity rectangle

#define CAPACITY_LEFT (444) // battery capacity center

#define CAPACITY_TOP (314)

#define CAPACITY_RIGHT (579)

#define CAPACITY_BOTTOM (530)

#define NUMBER_LEFT (467) // number

#define NUMBER_TOP (170)

#define NUMBER_RIGHT (505)

#define NUMBER_BOTTOM (224)

#define PERCENT_LEFT (543) // percent number_left + 2*number_width

#define PERCENT_TOP (170)

#define PERCENT_RIGHT (591)

#define PERCENT_BOTTOM (224)

#define TOP_ANIMATION_LEFT (444) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (579)

#define TOP_ANIMATION_BOTTOM (124)

// for old animation

#define BAR_LEFT (486)

#define BAR_TOP (292)

#define BAR_RIGHT (590)

#define BAR_BOTTOM (506)

#elif defined(QXGA)

// qxga 1536x2048

// battery capacity rectangle

#define CAPACITY_LEFT (605) // battery capacity center

#define CAPACITY_TOP (857)

#define CAPACITY_RIGHT (929)

#define CAPACITY_BOTTOM (1375)

#define NUMBER_LEFT (662) // number

#define NUMBER_TOP (517)

#define NUMBER_RIGHT (756)

#define NUMBER_BOTTOM (647)

#define PERCENT_LEFT (850) // percent number_left + 2*number_width

#define PERCENT_TOP (517)

#define PERCENT_RIGHT (968)

#define PERCENT_BOTTOM (647)

#define TOP_ANIMATION_LEFT (605) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (929)

#define TOP_ANIMATION_BOTTOM (155)

// for old animation

#define BAR_LEFT (693)

#define BAR_TOP (381)

#define BAR_RIGHT (844)

#define BAR_BOTTOM (725)

#else

// default wvga 480*800

// battery capacity rectangle背景范围

#define CAPACITY_LEFT (0)//155//(172) // battery capacity center

#define CAPACITY_TOP (0)//154//(330)

#define CAPACITY_RIGHT (400)//245//(307)

#define CAPACITY_BOTTOM (400)//299//(546)

// first number rectangle数字

#define NUMBER_LEFT (168)//(178) // number

#define NUMBER_TOP (56)//(190)

#define NUMBER_RIGHT (196)//(216)

#define NUMBER_BOTTOM (93) //(244)

// % rectangle百分比

#define PERCENT_LEFT (224)// (254) // percent number_left + 2*number_width

#define PERCENT_TOP (56)//(190)

#define PERCENT_RIGHT (252)//(302)

#define PERCENT_BOTTOM (93)// (244)

// top animation part动画更新部分

#define TOP_ANIMATION_LEFT (0)//155//(172) // top animation

#define TOP_ANIMATION_TOP (100)

#define TOP_ANIMATION_RIGHT (400)//245//(307)

#define TOP_ANIMATION_BOTTOM (145)//116

// for old animation

#define BAR_LEFT (176)

#define BAR_TOP (128)

#define BAR_RIGHT (224)

#define BAR_BOTTOM (244)

#endif

/* The option of new charging animation */

#define ANIMATION_NEW

#endif // __CUST_DISPLAY_H__

mediatek\external\libshowlogo\show_animation_common.c这个文件是具体实现的文件,它有分为几个方法,下面以fill_animation_battery_ver_1()为例

/* Copyright Statement:

*

* This software/firmware and related documentation ("MediaTek Software") are

* protected under relevant copyright laws. The information contained herein is

* confidential and proprietary to MediaTek Inc. and/or its licensors. Without

* the prior written permission of MediaTek inc. and/or its licensors, any

* reproduction, modification, use or disclosure of MediaTek Software, and

* information contained herein, in whole or in part, shall be strictly

* prohibited.

*

* MediaTek Inc. (C) 2010. All rights reserved.

*

* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES

* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")

* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER

* ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL

* WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED

* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR

* NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH

* RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,

* INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES

* TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.

* RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO

* OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK

* SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE

* RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR

* STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S

* ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE

* RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE

* MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE

* CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.

*

* The following software/firmware and/or related documentation ("MediaTek

* Software") have been modified by MediaTek Inc. All revisions are subject to

* any receiver's applicable license agreements with MediaTek Inc.

*/

#include

#include

#include

#include "show_animation_common.h"

#include "show_logo_log.h"

#include "fast_charging_common.h"

static int charging_low_index = 0;

static int charging_animation_index = 0;

#define CHECK_LOGO_BIN_OK 0

#define CHECK_LOGO_BIN_ERROR -1

static unsigned short number_pic_addr[(NUMBER_RIGHT - NUMBER_LEFT)*(NUMBER_BOTTOM - NUMBER_TOP)*2] = {0x0}; //addr

static unsigned short line_pic_addr[(TOP_ANIMATION_RIGHT - TOP_ANIMATION_LEFT)*2] = {0x0};

static unsigned short percent_pic_addr[(PERCENT_RIGHT - PERCENT_LEFT)*(PERCENT_BOTTOM - PERCENT_TOP)*2] = {0x0};

static unsigned short top_animation_addr[(TOP_ANIMATION_RIGHT - TOP_ANIMATION_LEFT)*(TOP_ANIMATION_BOTTOM - TOP_ANIMATION_TOP)*2] = {0x0};

/*

* Check logo.bin address if valid, and get logo related info

*

*/

int check_logo_index_valid(unsigned int index, void * logo_addr, LOGO_PARA_T * logo_info)

{

unsigned int *pinfo = (unsigned int*)logo_addr;

logo_info->logonum = pinfo[0];

LOG_ANIM("[show_animation_common: %s %d]logonum =%d, index =%d\n", __FUNCTION__,__LINE__,logo_info->logonum, index);

if (index >= logo_info->logonum)

{

LOG_ANIM("[show_animation_common: %s %d]unsupported logo, index =%d\n", __FUNCTION__,__LINE__, index);

return CHECK_LOGO_BIN_ERROR;

}

// LOG_ANIM("show_animation_common, pinfo[1]=%d, pinfo[2+index]=%d, pinfo[3+index]=%d, pinfo[3+index] - pinfo[2+index]= %d, pinfo[1] - pinfo[2+index] =%d \n",

// pinfo[1],pinfo[2+index],pinfo[3+index], pinfo[3+index] - pinfo[2+index],pinfo[1] - pinfo[2+index]);

if(index < logo_info->logonum - 1)

logo_info->logolen = pinfo[3+index] - pinfo[2+index];

else

logo_info->logolen = pinfo[1] - pinfo[2+index];

logo_info->inaddr = (unsigned int)logo_addr + pinfo[2+index];

LOG_ANIM("show_animation_common, in_addr=0x%08x, logolen=%d\n",

logo_info->inaddr, logo_info->logolen);

return CHECK_LOGO_BIN_OK;

}

/*

* Fill a screen size buffer with logo content

*

*/

void fill_animation_logo(unsigned int index, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

LOGO_PARA_T logo_info;

int logo_width;

int logo_height;

if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK)

return;

decompress_logo((void*)logo_info.inaddr, dec_logo_addr, logo_info.logolen, phical_screen.fb_size);

//RECT_REGION_T rect = {0, 0, phical_screen.width, phical_screen.height};

logo_width =phical_screen.width;

logo_height = phical_screen.height;

if (phical_screen.rotation == 270 || phical_screen.rotation == 90) {

logo_width =phical_screen.height;

logo_height = phical_screen.width;

}

RECT_REGION_T rect = {0, 0, logo_width, logo_height};

fill_rect_with_content(fill_addr, rect, (unsigned short *)dec_logo_addr, phical_screen);

}

/*

* Fill a rectangle size address with special color

*

*/

void fill_animation_prog_bar(RECT_REGION_T rect_bar,

unsigned int fgColor,

unsigned int start_div, unsigned int occupied_div,

void *fill_addr, LCM_SCREEN_T phical_screen)

{

unsigned int div_size = (rect_bar.bottom - rect_bar.top) / (ANIM_V0_REGIONS);

unsigned int draw_size = div_size - (ANIM_V0_SPACE_AFTER_REGION);

unsigned int i;

for (i = start_div; i < start_div + occupied_div; ++ i)

{

unsigned int draw_bottom = rect_bar.bottom - div_size * i - (ANIM_V0_SPACE_AFTER_REGION);

unsigned int draw_top = draw_bottom - draw_size;

RECT_REGION_T rect = {rect_bar.left, draw_top, rect_bar.right, draw_bottom};

fill_rect_with_color(fill_addr, rect, fgColor, phical_screen);

}

}

/*

* Fill a rectangle with logo content

*

*/

void fill_animation_dynamic(unsigned int index, RECT_REGION_T rect, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

LOGO_PARA_T logo_info;

if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK)

return;

decompress_logo((void*)logo_info.inaddr, (void*)dec_logo_addr, logo_info.logolen, (rect.right-rect.left)*(rect.bottom-rect.top)*2);

fill_rect_with_content(fill_addr, rect, (unsigned short *)dec_logo_addr, phical_screen);

}

/*

* Fill a rectangle with number logo content

*

* number_position: 0~1st number, 1~2nd number

*/

void fill_animation_number(unsigned int index, unsigned int number_position, void *fill_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

LOG_ANIM("[show_animation_common: %s %d]index= %d, number_position = %d\n",__FUNCTION__,__LINE__, index, number_position);

LOGO_PARA_T logo_info;

if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK)

return;

// draw default number rect,

decompress_logo((void*)logo_info.inaddr, (void*)number_pic_addr, logo_info.logolen, number_pic_size);

//static RECT_REGION_T number_location_rect = {NUMBER_LEFT,NUMBER_TOP,NUMBER_RIGHT,NUMBER_BOTTOM};

RECT_REGION_T battery_number_rect = {NUMBER_LEFT + (NUMBER_RIGHT - NUMBER_LEFT)*number_position,

NUMBER_TOP,

NUMBER_RIGHT + (NUMBER_RIGHT - NUMBER_LEFT)*number_position,

NUMBER_BOTTOM};

fill_rect_with_content(fill_addr, battery_number_rect, (unsigned short *)number_pic_addr,phical_screen);

}

/*

* Fill a line with special color

*

*/

void fill_animation_line(unsigned int index, unsigned int capacity_grids, void *fill_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

LOGO_PARA_T logo_info;

if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK)

return;

decompress_logo((void*)logo_info.inaddr, (void*)line_pic_addr, logo_info.logolen, line_pic_size);

RECT_REGION_T rect = {CAPACITY_LEFT, CAPACITY_TOP, CAPACITY_RIGHT, CAPACITY_BOTTOM};

int i = capacity_grids;

for(; i < CAPACITY_BOTTOM; i++)

{

rect.top = i;

rect.bottom = i+1;

fill_rect_with_content(fill_addr, rect, (unsigned short *)line_pic_addr, phical_screen);

}

}

/*

* Show charging animation version 0

*

*/

void fill_animation_battery_ver_0(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr,

LCM_SCREEN_T phical_screen)

{

unsigned int capacity_grids = 0;

if (capacity > 100) capacity = 100;

capacity_grids = (capacity * (ANIM_V0_REGIONS)) / 100;

LOG_ANIM("[show_animation_common: %s %d]capacity =%d, capacity_grids = %d\n",__FUNCTION__,__LINE__, capacity, capacity_grids);

//show_logo(1);

fill_animation_logo(ANIM_V0_BACKGROUND_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen);

// Fill Occupied Color

//RECT_REGION_T bar_rect = {BAR_LEFT, BAR_TOP, BAR_RIGHT, BAR_BOTTOM};

RECT_REGION_T rect_bar = {bar_rect.left + 1, bar_rect.top + 1, bar_rect.right, bar_rect.bottom};

// RECT_REGION_T rect_bar = {BAR_LEFT + 1, BAR_TOP + 1,BAR_RIGHT, BAR_BOTTOM};

fill_animation_prog_bar(rect_bar,

(unsigned int)(BAR_OCCUPIED_COLOR),

0, capacity_grids,

fill_addr, phical_screen);

fill_animation_prog_bar(rect_bar,

(unsigned int)(BAR_EMPTY_COLOR),

capacity_grids, ANIM_V0_REGIONS - capacity_grids,

fill_addr, phical_screen);

}

/*

* Show charging animation version 1

*

*/

void fill_animation_battery_ver_1(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

LOG_ANIM("[show_animation_common: %s %d]capacity : %d\n",__FUNCTION__,__LINE__, capacity);

if (capacity >= 100) {

//show_logo(37); // battery 100

fill_animation_logo(FULL_BATTERY_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen);

} else if (capacity < 10) {

LOG_ANIM("[show_animation_common: %s %d]charging_low_index = %d\n",__FUNCTION__,__LINE__, charging_low_index);

charging_low_index ++ ;

fill_animation_logo(LOW_BAT_ANIM_START_0 + charging_low_index, fill_addr, dec_logo_addr, logo_addr,phical_screen);

fill_animation_number(NUMBER_PIC_START_0 + capacity, 1, fill_addr, logo_addr, phical_screen);

fill_animation_dynamic(NUMBER_PIC_PERCENT, percent_location_rect, fill_addr, percent_pic_addr, logo_addr, phical_screen);

if (charging_low_index >= 9) charging_low_index = 0;

} else {

unsigned int capacity_grids = 0;

//static RECT_REGION_T battery_rect = {CAPACITY_LEFT,CAPACITY_TOP,CAPACITY_RIGHT,CAPACITY_BOTTOM};

capacity_grids = CAPACITY_BOTTOM /*- (CAPACITY_BOTTOM - CAPACITY_TOP) * (capacity - 10) / 90*/;

LOG_ANIM("[show_animation_common: %s %d]capacity_grids : %d,charging_animation_index = %d\n",__FUNCTION__,__LINE__, capacity_grids,charging_animation_index);

//background

fill_animation_logo(ANIM_V1_BACKGROUND_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen);

//fill_animation_line(ANIM_LINE_INDEX, capacity_grids, fill_addr, logo_addr, phical_screen);

//fill_animation_number(NUMBER_PIC_START_0 + (capacity/10), 0, fill_addr, logo_addr, phical_screen);

//fill_animation_number(NUMBER_PIC_START_0 + (capacity%10), 1, fill_addr, logo_addr, phical_screen);

//fill_animation_dynamic(NUMBER_PIC_PERCENT, percent_location_rect, fill_addr, dec_logo_addr, logo_addr, phical_screen);

// if (capacity <= 90)

//{//动画范围

RECT_REGION_T top_animation_rect = {TOP_ANIMATION_LEFT, /*capacity_grids - (TOP_ANIMATION_BOTTOM - TOP_ANIMATION_TOP)*/0, TOP_ANIMATION_RIGHT, capacity_grids};

//top_animation_rect.bottom = capacity_grids;

//top_animation_rect.top = capacity_grids - top_animation_height;

charging_animation_index++;

//show_animation_dynamic(15 + charging_animation_index, top_animation_rect, top_animation_addr);

//动画

fill_animation_dynamic(BAT_ANIM_START_0 + charging_animation_index, top_animation_rect, fill_addr, dec_logo_addr, logo_addr, phical_screen);

//十位数字

fill_animation_number(NUMBER_PIC_START_0 + (capacity/10), 0, fill_addr, logo_addr, phical_screen);

//个位数字

fill_animation_number(NUMBER_PIC_START_0 + (capacity%10), 1, fill_addr, logo_addr, phical_screen);

//%

fill_animation_dynamic(NUMBER_PIC_PERCENT, percent_location_rect, fill_addr, dec_logo_addr, logo_addr, phical_screen);

if (charging_animation_index >= 9) charging_animation_index = 0;

//}

}

}

/*

* Show charging animation version 2:wireless ui

* total 29 logo:from 39 ~ 68

* less(0<10): 50-53 , low(<30):54-57 ,middle(<60):58-61 , high():62-75 , o:66, full:67,num (0-9):39-48, %:49

*

*/

void fill_animation_battery_ver_2(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

LOG_ANIM("[show_animation_common: %s %d]capacity : %d\n",__FUNCTION__,__LINE__, capacity);

// RECT_REGION_T wireless_bgd_rect = {0, 0, phical_screen.width, phical_screen.height};

charging_low_index >= 3? charging_low_index = 0:charging_low_index++;

LOG_ANIM("[show_animation_common: %s %d]charging_low_index = %d\n",__FUNCTION__,__LINE__, charging_low_index);

if (capacity >= 100) {

// battery 100

fill_animation_logo(V2_BAT_100_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen);

} else if (capacity <= 0) {

fill_animation_logo(V2_BAT_0_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen);

} else {

int bg_index = V2_BAT_0_10_START_INDEX; //capacity > 0 && capacity < 10

if (capacity >= 10 && capacity < 40) {

bg_index = V2_BAT_10_40_START_INDEX;

} else if (capacity >= 40 && capacity < 80) {

bg_index = V2_BAT_40_80_START_INDEX;

} else if (capacity >= 80 && capacity < 100) {

bg_index = V2_BAT_80_100_START_NDEX;

}

fill_animation_logo(bg_index + charging_low_index, fill_addr, dec_logo_addr, logo_addr,phical_screen);

RECT_REGION_T tmp_rect = {(int)phical_screen.width * 4/10,

(int) phical_screen.height * 1/6,

(int)phical_screen.width* 5/10,

(int)phical_screen.height*16/60};

unsigned short tmp_num_addr[(int)phical_screen.width * phical_screen.height/100]; //addr

if (capacity >= 10) {

LOG_ANIM("[show_animation_common: %s %d]tmp_rect left = %d, right = %d,top = %d,bottom = %d,\n",__FUNCTION__,__LINE__,

tmp_rect.left,tmp_rect.right,tmp_rect.top,tmp_rect.bottom);

fill_animation_dynamic(V2_NUM_START_0_INDEX + (capacity/10), tmp_rect, fill_addr, tmp_num_addr, logo_addr, phical_screen);

tmp_rect.left += (int)phical_screen.width /10;

tmp_rect.right += (int)phical_screen.width /10;

}

LOG_ANIM("[show_animation_common: %s %d]tmp_rect left = %d, right = %d,top = %d,bottom = %d,\n",__FUNCTION__,__LINE__,

tmp_rect.left,tmp_rect.right,tmp_rect.top,tmp_rect.bottom);

fill_animation_dynamic(V2_NUM_START_0_INDEX + (capacity%10), tmp_rect, fill_addr, tmp_num_addr, logo_addr, phical_screen);

tmp_rect.left += (int)phical_screen.width /10;

tmp_rect.right += (int)phical_screen.width /10;

LOG_ANIM("[show_animation_common: %s %d]tmp_rect left = %d, right = %d,top = %d,bottom = %d,\n",__FUNCTION__,__LINE__,

tmp_rect.left,tmp_rect.right,tmp_rect.top,tmp_rect.bottom);

fill_animation_dynamic(V2_NUM_PERCENT_INDEX, tmp_rect, fill_addr, tmp_num_addr, logo_addr, phical_screen);

}

}

/*

* Pump charging aniamtion

* index 39: 100%, 40~45 : animation logo, 46~55: number logo, 56: % logo

*

*/

void fill_animation_battery_fast_charging(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen)

{

int display_width = phical_screen.width;

int display_height = phical_screen.height;

int curr_left = 0;

int num_width = 0;

int num_height = 0;

int top_margin_height = 0;

if (0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "90", 2) ||

0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "270", 3)) {

display_width = phical_screen.height;

display_height = phical_screen.width;

}

num_width = LOGO_NUM_WIDTH(display_width);

num_height = LOGO_NUM_HEIGHT(display_height);

top_margin_height = LOGO_TOP_MARGIN(display_height);

LOG_ANIM("[show_animation_common: %s %d]capacity : %d, num_width:%d, num_height:%d, top_margin_height:%d\n", __FUNCTION__,__LINE__, capacity, num_width, num_height, top_margin_height);

charging_low_index >= 5? charging_low_index = 0:charging_low_index++;

LOG_ANIM("[show_animation_common: %s %d]charging_low_index = %d\n",__FUNCTION__,__LINE__, charging_low_index);

LOG_ANIM("[show_animation_common: %s %d]capacity : %d\n",__FUNCTION__,__LINE__, capacity);

if (capacity <= 0) {

return;

} else if (capacity >= 100) {

fill_animation_logo(FAST_CHARGING_BAT_100_INDEX, fill_addr, dec_logo_addr, logo_addr, phical_screen);

} else {

fill_animation_logo(FAST_CHARGING_BAT_START_0_INDEX + charging_low_index, fill_addr, dec_logo_addr, logo_addr, phical_screen);

curr_left = (display_width - num_width * 2) >> 1;

unsigned short tmp_num_addr[(int)phical_screen.width * phical_screen.height/50];

if (capacity > 10) {

curr_left = (display_width - num_width * 3) >> 1;

RECT_REGION_T tmp_rect_1 = {curr_left, top_margin_height, curr_left + num_width, top_margin_height + num_height};

LOG_ANIM("[show_animation_common: %s %d]capacity = %d, show 1nd num : %d\n",__FUNCTION__,__LINE__, capacity, capacity/10);

fill_animation_dynamic(FAST_CHARGING_NUM_START_0_INDEX + (capacity/10), tmp_rect_1, fill_addr, tmp_num_addr, logo_addr, phical_screen);

curr_left += num_width;

}

RECT_REGION_T tmp_rect_2 = {curr_left, top_margin_height, curr_left + num_width, top_margin_height + num_height};

LOG_ANIM("[show_animation_common: %s %d]capacity = %d, show 2st num : %d\n",__FUNCTION__,__LINE__, capacity, capacity%10);

fill_animation_dynamic(FAST_CHARGING_NUM_START_0_INDEX + (capacity%10), tmp_rect_2, fill_addr, tmp_num_addr, logo_addr, phical_screen);

curr_left += num_width;

RECT_REGION_T tmp_rect_3 = {curr_left, top_margin_height, curr_left + num_width, top_margin_height + num_height};

LOG_ANIM("[show_animation_common: %s %d]show percent \n",__FUNCTION__,__LINE__);

fill_animation_dynamic(FAST_CHARGING_NUM_PERCENT_INDEX, tmp_rect_3, fill_addr, tmp_num_addr, logo_addr, phical_screen);

}

}

/*

* Show charging animation by version

*

*/

void fill_animation_battery_by_ver(unsigned int capacity,void *fill_addr, void * dec_logo_addr, void * logo_addr,

LCM_SCREEN_T phical_screen, int version)

{

LOG_ANIM("[show_animation_common: %s %d]version : %d\n",__FUNCTION__,__LINE__, version);

switch (version)

{

case 0:

fill_animation_battery_ver_0(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen);

break;

case 1:

fill_animation_battery_ver_1(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen);

break;

case WIRELESS_CHARGING_ANIM_VER:

fill_animation_battery_ver_2(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen);

break;

default:

fill_animation_battery_ver_0(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen);

break;

}

}现在知道在哪里具体实现了,那在哪里调用呢?下面是具体文件及方法

mediatek\external\ipod\bootlogo.cpp

show_battery_capacity(capacity);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值