Android 系统实现多种开机动画和logo切换功能

 更新时间:2022年06月29日 17:05:39   作者:mikao12  
这篇文章主要介绍了android 系统实现多种开机动画和logo切换功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

前言

基于mtk6580,添加多logo和开关机动画切换

描述

目前android开机画面由三个部分(阶段)组成,第一部分在bootloader启动时显示(静态),第二部分在启动kernel时显示(静态),第三部分在系统启动时(bootanimation)显示(动画)。

添加资源

1.在device/tangxun/tx6580_weg_m/ProjectConfig.mk,找到BOOT_LOGO=这项,记住这项内容(如hd720,),在vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/目录下找到BOOT_LOGO=对应的文件夹把你的图片放进去,图片我是这样命名的hd720_kernel_i7.bmp.(如果你只是替换的话更换hd720_kernel.bmp和hd720_uboot.bmp这两张图片即可,新图片的名字需与旧图片一致)

2.在vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/rules.mk下修改RESOURCE_OBJ_LIST列表,如图:

在这里插入图片描述

最后两项就是我添加的

3.同目录下update文件中添加

在这里插入图片描述

添加标识区分不同logo

思路:首先我们添加的标识,不能被轻易清除,包括恢复出厂设置情况下。所以我选择在protect_f分区下创建空文件的方式,在show logo的时候判断相应文件是否存在,来展示不同的logo和动画。

1.选择一种要展示的logo和动画,在protect_f分区下创建.dat后缀的文件,删除其他类型动画在protect_f分区下的相应文件

private void createOrDeleteFile(String str){
  String sDir = "/protect_f";
  File fDir = new File(sDir);
  if (fDir.exists()){
   try {
    Runtime.getRuntime().exec("chmod 777"+sDir);
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

  File mFile = new File(sDir,File_moto_logo);
  if (mFile.exists()){
   mFile.delete();
  }

  mFile = new File(sDir,File_samsun_logo);
  if (mFile.exists()){
   mFile.delete();
  }
 mFile = new File(sDir,"sysBoot_logo_null.dat");
  if (mFile.exists()){
   mFile.delete();
  }

  if (str != null){
   mFile = new File(sDir,str);
   if (!mFile.exists()){
    try {
     mFile.createNewFile();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }

2.在vendor/mediatek/proprietary/external/libshowlogo/charging_animation.cpp文件中,添加logo切换

const char LOGO_ON5_ANI[] = "/protect_f/sysBoot_logo_moto.dat";
const char LOGO_I7_ANI[] = "/protect_f/sysBoot_logo_samsun.dat";
/*
 * Show kernel logo when phone boot up
 *
 */
void show_kernel_logo(){  //这是系统本来就有的
 SLOGD("[libshowlogo: %s %d]show kernel logo, index = 38 \n",__FUNCTION__,__LINE__);
 if (error_flag == 0) {
  if(open(LOGO_ON5_ANI,O_RDONLY) >= 0){
   anim_show_logo(kernel_logo_position+1);
   property_set("ani_type","custom");
   property_set("animation_num","On5_Ani");
  }else if (open(LOGO_I7_ANI,O_RDONLY) >= 0) {
   anim_show_logo(kernel_logo_position+2);
   property_set("ani_type","custom");
   property_set("animation_num","I7_Ani");
  }else{
   anim_show_logo(kernel_logo_position);
   property_set("ani_type","android");
   property_set("animtion_num","android");
  }
 }
}

3.framworks/base/cmds/bootanimation/BootAnimation.cpp文件中,在void BootAnimation::initBootanimationZip()方法中添加切换动画

 char anitype[PROPERTY_VALUE_MAX];
 char aninum[PROPERTY_VALUE_MAX];
 property_get("ani_type",anitype,"");
 property_get("animation_num",aninum,"");
 if (strcmp("custom",anitype) == 0) {
  if (strcmp("On5_Ani", aninum)==0) {
   if (access("/system/media/bootanimation_custom.zip", R_OK) == 0) {
    if ((zipFile = ZipFileRO::open("/system/media/bootanimation_custom.zip")) != NULL) {
     mZip = zipFile;
    }
   }
  }else if (strcmp("I7_Ani", aninum)==0){
   if (access("/system/media/bootanimation_s6.zip", R_OK) == 0) {
    if ((zipFile = ZipFileRO::open("/system/media/bootanimation_s6.zip")) != NULL) {
     mZip = zipFile;
    }
   }
  }
 }
 if (zipFile == NULL) {

总结

以上所述是小编给大家介绍的Andorid 系统实现多种开机动画和logo切换功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android实现Neumorphism UI控件

    Android实现Neumorphism UI控件

    大家好,本篇文章主要讲的是Android实现Neumorphism UI控件,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Android手动检查并申请权限方法

    Android手动检查并申请权限方法

    今天小编就为大家分享一篇Android手动检查并申请权限方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Android基础之使用Fragment控制切换多个页面

    Android基础之使用Fragment控制切换多个页面

    Android官方已经提供了Fragment的各种使用的Demo例子,在我们SDK下面的API Demo里面就包含了Fragment的各种使用例子,需要看Demo的朋友,直接看API Demo那个程序就可以了,不用到处去找。里面分开不同功能,实现了不同的类
    2013-07-07
  • 解析android截屏问题

    解析android截屏问题

    笔者做过一段时间的截屏开发,稍微了解了一下这方面的知识,于是拿来分享一下,也许对你有一些帮助吧
    2013-07-07
  • Android Retrofit使用详细教程

    Android Retrofit使用详细教程

    Retrofit是Android用来接口请求的网络框架,内部是基于OkHttp实现的,retrofit负责接口请求的封装,retrofit可以直接将接口数据解析为Bean类、List集合等,直接简化了中间繁琐的数据解析过程,这篇文章主要介绍了Android Retrofit使用详情,需要的朋友可以参考下
    2024-03-03
  • Android开发中Intent传递对象的方法分析

    Android开发中Intent传递对象的方法分析

    这篇文章主要介绍了Android开发中Intent传递对象的方法,结合实例分析了Intent传递对象所涉及的具体方法、实现步骤与相关注意事项,需要的朋友可以参考下
    2016-02-02
  • Android ExpandableListView实现下拉刷新和加载更多效果

    Android ExpandableListView实现下拉刷新和加载更多效果

    这篇文章主要为大家详细介绍了Android ExpandableListView实现下拉刷新和加载更多效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • android开发教程之view组件添加边框示例

    android开发教程之view组件添加边框示例

    这篇文章主要介绍了android开发中给view组件添加边框的示例,需要的朋友可以参考下
    2014-02-02
  • Android中的Bitmap缓存池使用详解

    Android中的Bitmap缓存池使用详解

    这篇文章主要介绍了Android中的Bitmap缓存池使用详解,本文主要目的是讲解如何使用缓存来提高UI的载入输入和滑动的流畅性,需要的朋友可以参考下
    2015-01-01
  • Android开发实现跟随手指的小球效果示例

    Android开发实现跟随手指的小球效果示例

    这篇文章主要介绍了Android开发实现跟随手指的小球效果,涉及Android图形绘制、事件响应、界面布局等相关操作技巧,需要的朋友可以参考下
    2019-04-04

最新评论