推荐使用 读书导航极客导航125啦极客导航(http://www.biumall.com/jike.html)

Android开机动画有2种模式,一种是使用两张图片利用某种效果来造成动态,另一种则是用一个图包循环显示的方式来形成动态。

当然,这时因为mediaplayer已经起来,播放开机动画的时候可以同时播放开机音乐。

第一种双图片模式称为android模式

第二种图包模式称为movie模式

他们在循环时通过条件变量来选择其一:

  1. if (mAndroidAnimation) {
  2.         r = android(); //Android原生的经典开机动画
  3.    } else {
  4.         r = movie(); //用户客户自定开机动画
  5.     }
复制

1、android模式

第一种android模式:

  1. initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
  2. initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
复制

这两张图片都在frameworks/base/core/res/assets/images目录下,替换即可。

2、movie模式

这个用户可以自定义,也就是在打包时通过.mk文件拷贝到system/media中

xxx/device/media/bootanimation_7inch_horizontal_1024x600.zip:system/media/bootanimation.zip

上面的是我项目中的。

我在源码中看到开机动画可以存放的路径有如下:

  1. static const char* mResourcePath[MNC_COUNT][PATH_COUNT] =
  2. {"/system/media/bootanimation1.zip", "/custom/media/bootanimation1.zip", "/data/local/bootanimation1.zip", /* 0 */
  3. "/system/media/bootanimation2.zip", "/custom/media/bootanimation2.zip", "/data/local/bootanimation2.zip", /* 1 */
  4. };
  5. #endif
  6. static const char* mAudioPath[2][PATH_COUNT] =
  7. {"/system/media/bootaudio.mp3", "/custom/media/bootaudio.mp3", "/data/local/bootaudio.mp3", /* bootaudio path */
  8. "/system/media/shutaudio.mp3", "/custom/media/shutaudio.mp3", "/data/local/shutaudio.mp3", /* shutaudio path */
  9. };
  10. #define CUSTOM_BOOTANIMATION_FILE "/custom/media/bootanimation.zip"
  11. #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
  12. #define SYSTEM_SHUTANIMATION_FILE "/system/media/shutanimation.zip"
  13. #define CUSTOM_SHUTANIMATION_FILE "/custom/media/shutanimation.zip"
  14. #define USER_SHUTANIMATION_FILE "/data/local/shutanimation.zip"
  15. #define OEM_BOOTANIMATION_FILE "/oem/media/bootanimation.zip"
  16. #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
  17. #define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
  18. #define EXIT_PROP_NAME "service.bootanim.exit"
复制

至于bootanimation.zip的格式和要求,请看《Android开机动画bootanimation.zip文件制作以及注意事项

3、删除开机动画

具体代码在这目录下

  1. \frameworks\base\cmds\bootanimation
复制
  1. Android.mk
  2. AudioPlayer.cpp //开机声音
  3. AudioPlayer.h
  4. BootAnimation.cpp //开机动画
  5. BootAnimation.h
  6. bootanimation_main.cpp //动画入口
复制

在bootanimation_main.cpp中

  1. setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_DISPLAY);
  2. char value[PROPERTY_VALUE_MAX];
  3. property_get("debug.sf.nobootanimation", value, "1"); //默认是0 表示有动画,1表示关闭动画,这里被我关闭了
  4. int noBootAnimation = atoi(value); // 1--> true 0-->false
  5. ALOGI_IF(noBootAnimation, "boot animation disabled");
  6. if (!noBootAnimation) {
  7. ....//执行动画
  8. }
复制

当然,如果你只是删除system/media/bootanimation.zip或者/data/local/shutanimation.zip等时候,也就说说没有了movie模式,Android系统会走android模式。

如果你一个也不想要,只需要把

  1. property_get("debug.sf.nobootanimation", value, "1"); //默认是0 表示有动画,1表示关闭动画
复制

默认改为1

或者把debug.sf.nobootanimation的值改为1即可。

目前就这些啦。

本文参考了网络大神分享,感谢,如下:

安卓开机logo和开机动画的几种实现方法

相关文章

暂无评论

none
暂无评论...