关机充电动画横竖屏修改
打开充电log
/vendor/mediatek/proprietary/external/libshowlogo/charging_animation.cpp
改前
9#define MTK_LOG_ENABLE 0
改后
9#define MTK_LOG_ENABLE 1
根据下面log打印的值,再把phical_screen多旋转90度试试。
717 if (MTK_LOG_ENABLE == 1) {
718 SLOGD("[libshowlogo: %s %d]MTK_LCM_PHYSICAL_ROTATION = %s\n",__FUNCTION__,__LINE__, MTK_LCM_PHYSICAL_ROTATION);
719 }
720
721 if(0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "270", 3))
722 {
723 phical_screen.rotation = 270;
724 } else if(0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "90", 2)){
725 phical_screen.rotation = 90;
726 } else if(0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "180", 3) && (phical_screen.need180Adjust == 1)){
727 phical_screen.rotation = 180;
728 } else {
729 phical_screen.rotation = 0;
730 }
这样是行得通的,就是这样改后,wxga文件夹中有些1280x800的图片需要旋转90度,有些1280x800的图片不需要旋转90度。
关机充电流程:
下面对Android5.X相对应的路径做一下说明
关机充电图片的路径:/bootable/bootloader/lk/dev/logo
控制图片代码的路径:/vendor/mediatek/proprietary/external/libshowlogo/show_animation_common.c
控制图片坐标的路径:/vendor/mediatek/proprietary/external/libshowlogo/cust_display.h
图片注册的路径: /vendor/mediatek/proprietary/external/libshowlogo/rules.mk
/vendor/mediatek/proprietary/external/libshowlogo/update
我们现在所做的都是在Android源码已有的图片上进行的修改,那么现在要是添加一些图片怎么办?接着看图片的添加
1:首先把需要的图片放在对应的资源文件下
2:然后在mediatek/custom/common/lk/logo/update 和 mediatek/custom/common/lk/logo/rules.mk目录图片进行注册
这里需要注意的是:注册是有先后顺序的,一定要把注册的 图片放在最后。在rules.mk常规注册一下就行了。在/update中
要在./tool/bmp_to_raw 和./tool/zpipe -l 9 以及rm -rf ./temp0.raw都需要注册
3:在控制代码的show_animation_common.c文件中控制图片即可。
修改后如果出现关机充电第一张低电量图片花屏,在显示低电量之前先让屏幕显示全黑,再加载第一张低电量图片。修改如下:
vendor\mediatek\proprietary\bootable\bootloader\lk\platform\mt6735\platform.c 的 void platform_init(void)方法中添加如下红色代码:
#ifdef MTK_KERNEL_POWER_OFF_CHARGING
if (kernel_charging_boot() == 1) {
#ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY
CHARGER_TYPE CHR_Type_num = CHARGER_UNKNOWN;
CHR_Type_num = hw_charging_get_charger_type();
if ((g_boot_mode != LOW_POWER_OFF_CHARGING_BOOT) ||
((CHR_Type_num != STANDARD_HOST) && (CHR_Type_num != NONSTANDARD_CHARGER))) {
#endif
mt_disp_power(TRUE);
mt_disp_fill_rect(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT, 0x0);
mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT);
mt_disp_show_low_battery();
mt65xx_leds_brightness_set(6, 110);
#ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY
}
#endif
recovery动画横竖屏修改
1.更换升级过程中的动画的方法
(1)首先在device\mediatek\$(proj_name)\full_$(proj_name).mk,找到PRODUCT_AAPT_CONFIG的值(如果没有,那就根据/build/core/Makefile 里面定义的默认值)这个对应着我们在使用recovery时,导入哪个res里面的image.
此处以PRODUCT_AAPT_CONFIG :=mdpi为例.
(2)由于PRODUCT_AAPT_CONFIG :=mdpi,故recovery在进行升级过程会导入/bootable/recovery/res-mdpi/images里面的图片.我们在升级过程的动画其实是 由/bootable/recovery/res-mdpi/images里面的loop00000.png~loop00090.png不停的刷新实现的来实现动画.若要更改升级过程中的动画,您可以使用您制作的图片替换loop00000.png~loop00090.png中的图片即可.
总结:先通过PRODUCT_AAPT_CONFIG的值确定recovery下载入图片的文件夹,然后使用自己的图片替换loop00000.png~loop00090.png即可实现动画的更换.注意制作图片的格式和大小.如果图片资源过大,会增加recovery的ramdisk文件超过4M,造成升级失败.
2.修改recovery横屏
打开bootable/recovery/minui/mt_graphic_rotate.cpp找到函数static int rotate_config(GRSurface *gr_draw),如果您要旋转90度就将return rotate_index直接改为return 1,
依次类推转180度,改为return 2,270度改为return 3.
3.解释一下图片,文字,进度条的布局过程:
ui的显示是在bootable/recovery/screen_ui.cpp里面定义的:
打开该文件screen_ui.cpp找到下面相应的函数:
1) 动画的位置
GetAnimationBaseline决定动画的frame_y(y方向上的值)
int ScreenRecoveryUI::GetAnimationBaseline() { return GetTextBaseline() - PixelsFromDp(68) - gr_get_height(loopFrames[0]);//gr_get_height(loopFrames[0])表示动画的的高度(像素为单位)}
其中的68指的是动画与文字的相对距离.
2) 文字的位置
GetTextBaseline决定文字的frame_y(y方向上的值)
int ScreenRecoveryUI::GetTextBaseline() {
return GetProgressBaseline() - PixelsFromDp(32) - gr_get_height(installing_text);//gr_get_height(installing_text)表示文字的高度(像素为单位)
}
其中的32指的是文字与进度条的相对位置.
3) 进度条的位置
GetProgressBaseline决定进度条的frame_y(y方向上的值)
int ScreenRecoveryUI::GetProgressBaseline() {
return gr_fb_height() - PixelsFromDp(is_large_ ? 340 : 194) - gr_get_height(progressBarFill);//gr_fb_height()表示屏幕纵排像素。gr_get_height(progressBarFill)很显然进度条的高度(像素为单位)。
其中(is_large_ ? 340 : 194)是来判断屏幕y方向是否大于800dpi,如果大于800dpi则取340(位进度条离底部的位置),如果小于800dpi则取194.
总结:从图片可以看出您的ui整体是偏下的,这个时候只需要增大(is_large_ ? 340 : 194)的值就可以让ui整体上移.