mtk关机充电动画旋转90/270度后坐标计算

mtk6580 android6.0 720*1280分辨率,需要旋转90度(1280*720)作横屏设备使用,但是logo文件夹没有对应旋转90度的"hd720nl"文件夹动画资源支持,只有“hd720”文件夹。查看到有相似分辨率1280*800的动画资源“wxganl/”文件夹,通过win自带画图工具重新调整一下大小变成1280*720的动画资源"hd720nl"使用。

//新建hd720nl文件夹,复制wxganl文件夹内容到hd720nl文件夹,批量替换wxganl前缀名的文件为hd720nl
rename 's/wxganl/hd720nl/' wxga*.bmp

 

1. project中的开机logo分辨率与旋转角度修改

vi device/eastaeon/xxx/ProjectConfig.mk
...
BOOT_LOGO = hd720nl
MTK_LCM_PHYSICAL_ROTATION = 90
...
vi kernel-3.18/arch/arm/configs/xxx_debug_defconfig
vi kernel-3.18/arch/arm/configs/xxx_defconfig

...
CONFIG_MTK_LCM_PHYSICAL_ROTATION="90"
...
vi vendor/mediatek/proprietary/bootable/bootloader/lk/project/xxx.mk
...
MTK_LCM_PHYSICAL_ROTATION = 90
...
//作用于lk
vi device/eastaeon/xxx/eastaeon.mk
...
BOOT_LOGO = hd720nl
...

android frameworks旋转:

vi device/eastaeon/xxx/system.prop
...
ro.sf.hwrotation=90
...

 

2. 关机充电动画坐标计算

小技巧:打开win系统画图软件,

1).选择 查看->缩放->将图片放到到800%,

2).选择 查看->缩放->显示网格,这样就可以看到对应像素坐标了(因为logo使用bmp图片格式)

 

Android6.0的充电动画坐标修改头文件,下面是hd720分辨率旋转90\270度数据参考:

operation\alps\vendor\mediatek\proprietary\external\libshowlogo\cust_display.h
...
#if 0
    // hd720nl 1280*720 90度
	// battery capacity rectangle
	#define CAPACITY_LEFT                (558)
	#define CAPACITY_TOP                 (239)
	#define CAPACITY_RIGHT               (721) //CAPACITY_LEFT+width = 558 + 163 = 721
	#define CAPACITY_BOTTOM              (474) //蓝色低电量矩形图片中看到颜色高点+2

    // first number rectangle
	#define NUMBER_LEFT                  (570) //100%电量图片的"1"右移5像素
	#define NUMBER_TOP                   (79)  //看到top处像素点-7 = 86 - 7
	#define NUMBER_RIGHT                 (615) //NUMBER_LEFT + number_width = 570 + 45 = 615
	#define NUMBER_BOTTOM                (143) //NUMBER_TOP + number_high = 79 + 64 = 143

    // %  rectangle
	#define PERCENT_LEFT                 (660) //NUMBER_LEFT + 2*number_width
	#define PERCENT_TOP                  (79)  //=NUMBER_TOP
	#define PERCENT_RIGHT                (717) //PERCENT_LEFT + "%"图片width =  660 + 57
	#define PERCENT_BOTTOM               (143) //=NUMBER_BOTTOM

    // top animation part
	#define TOP_ANIMATION_LEFT           (558) //=CAPACITY_LEFT
	#define TOP_ANIMATION_TOP            (100) //定值,具体计算未知
	#define TOP_ANIMATION_RIGHT          (721) //=CAPACITY_RIGHT
	#define TOP_ANIMATION_BOTTOM         (129) //TOP_ANIMATION_TOP + 动画logo_high = 100 + 29 = 129

	// for old animation,下面4个已经不使用
	#define BAR_LEFT            (525)
	#define BAR_TOP             (250)
	#define BAR_RIGHT           (755)
	#define BAR_BOTTOM          (640)
#else
        // hd720nl 1280*720 270度
        // battery capacity rectangle
        #define CAPACITY_LEFT                (558)
        #define CAPACITY_TOP                 (245)
        #define CAPACITY_RIGHT               (721) //CAPACITY_LEFT+width = 558 + 163 = 721
        #define CAPACITY_BOTTOM              (480) //蓝色低电量矩形图片中看到颜色高点+2

    // first number rectangle
        #define NUMBER_LEFT                  (570) //100%电量图片的"1"右移5像素
        #define NUMBER_TOP                   (576)  //看到top处像素点-7 = 86 - 7
        #define NUMBER_RIGHT                 (615) //NUMBER_LEFT + number_width = 570 + 45 = 615
        #define NUMBER_BOTTOM                (640) //NUMBER_TOP + number_high = 79 + 64 = 143

    // %  rectangle
        #define PERCENT_LEFT                 (660) //NUMBER_LEFT + 2*number_width
        #define PERCENT_TOP                  (576)  //=NUMBER_TOP
        #define PERCENT_RIGHT                (717) //PERCENT_LEFT + “%”图片width =  660 + 57
        #define PERCENT_BOTTOM               (640) //=NUMBER_BOTTOM

    // top animation part
        #define TOP_ANIMATION_LEFT           (558) //=CAPACITY_LEFT
        #define TOP_ANIMATION_TOP            (619) //定值,具体计算未知
        #define TOP_ANIMATION_RIGHT          (721) //=CAPACITY_RIGHT
        #define TOP_ANIMATION_BOTTOM         (648) //TOP_ANIMATION_TOP + 动画logo_high = 100 + 29 = 129

        // for old animation
        #define BAR_LEFT            (525)
        #define BAR_TOP             (250)
        #define BAR_RIGHT           (755)
        #define BAR_BOTTOM          (640)
#endif

 

具体坐标计算如下,从对应分辨率的logo文件夹找出对应的battery logo图片放大再取对应像素点坐标:

 

3. 验证调试

1). android6.0 mt6580sdk提供的测试程序可以测试lk logo、kernel logo、充电动画

cd vendor/mediatek/proprietary/external/libshowlogo/libshowlogoTest

//mm编译完,push到系统,例如测试充电动画
adb push xxx\operation\alps\out\target\product\xxx\system\bin\libshowlogotest sdcard/

//可执行程序测试
libshowlogotest charging fb new

 

2). 需要调试打印充电动画角度算法等

vi vendor/mediatek/proprietary/external/libshowlogo/show_logo_common.c

然后更新libshowlogo.so到系统(发现push几次so库后,测试程序运行有异常测试程序执行感觉卡卡的,重新烧录系统即可)

/mm编译完,pash到系统
adb push operation\alps\out\target\product\xxx\system\lib\libshowlogo.so /system/lib/

chmod 644 /system/lib/libshowlogo.so

sync

 

4. 参考资料

Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

[FAQ12646]适配开机lk阶段任意尺寸充电图标(比lcm size 小的图片)

[FAQ05711]LCM180度翻转方案

 

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android系统中,有多种方法可以实现屏幕旋转的功能。首先,可以通过在config目录下的system.prop文件中加入ro.sf.hwrotation=90(或270)来实现90度和270度的旋转。不过需要注意的是,这种设置只会改变Android部分的旋转,而logo部分不会旋转。同时,部分资源在横向显示时可能会有问题。因此,不推荐使用这种方法。 另一种方法是在bootable\recovery\minui\graphics.cpp文件中进行设置。可以通过修改ro.minui.default_rotation属性来设置默认的旋转方向。根据属性值,可以调用相应的gr_rotate函数实现旋转。例如,如果属性值为"ROTATION_RIGHT",则调用gr_rotate(GRRotation::RIGHT)来实现旋转为右侧旋转。同样地,如果属性值为"ROTATION_DOWN",则调用gr_rotate(GRRotation::DOWN)来实现旋转为倒置。如果属性值为"ROTATION_LEFT",则调用gr_rotate(GRRotation::LEFT)来实现旋转为左侧旋转。如果属性值为"ROTATION_NONE"或未知字符串,则调用gr_rotate(GRRotation::NONE)来取消旋转。 在Android 9.0之前的版本中,需要通过自己新增mt_graphic_rotate.cpp和mt_graphic_rotate.h文件来实现旋转功能。而在Android 10.0中,代码进行了较大的重构,只需修改简单的配置rotation就能实现横向旋转。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [修改屏幕显示方向](https://blog.csdn.net/wxd_csdn_2016/article/details/103407262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Android10.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)](https://blog.csdn.net/u012932409/article/details/105228314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值