• android 4.1 关机动画实现简述,开机动画停止


    frameworks/base/cmds/bootanimation/BootAnimation.cpp

    在原来开机动画的基础上,获取动画文件方法

    BootAnimation::getAnimationFileName(){

      ...

      state = checkBootState() ? 0 : 1; //若state 为1 调用关机动画

      ...

    }

    bool BootAnimation::checkBootState(void){
        char value[PROPERTY_VALUE_MAX];
      bool ret = true;
        property_get("sys.shutdown.requested", value, "null"); //若该属性非空,返回false

      if (strcmp(value, "null") != 0) {

         ret = false;

      }

         return ret;

    }
    有上述可知 如要启动关机动画只需,启动 BootAnimation服务 并且 给sys.shutdown.requested设置一个非空属性即可
    -----------------------------------

    frameworks/base/services/java/com/android/server/pm/ShutdownThread.java

    ShutdownThread一个线程类 在 run方法里面 添加

    SystemProperties.set(SHUTDOWN_ACTION_PROPERTY, reason);  //SHUTDOWN_ACTION_PROPERTY为sys.shutdown.requested

    点击关机dialog执行

    private static void beginShutdownSequence(Context context) {

      ...

      if (FeatureQuery.FEATURE_BOOT_ANIMATION && checkAnimationFileExist()) {

        lockDevice();

        showShutdownAnimation();

        ...

      }

      ...

    }

    private static void showShutdownAnimation() {

      SystemProperties.set("ctl.start", "bootanim");  //调用开机动画服务 

    }

    ==================================

    开机动画停止

    frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

    void SurfaceFlinger::bootFinished(){

      ...

      property_set("service.bootanim.exit", "1"); //设置停止动画属性

    }

    -------------------

    frameworks/base/cmds/bootanimation/BootAnimation.cpp

    在动画循环中调用方法 checkExit()

    void BootAnimation::checkExit() {

      char value[PROPERTY_VALUE_MAX];

      property_get(EXIT_PROP_NAME, value, "0");//EXIT_PROP_NAME为字符串 service.bootanim.exit

      int exitnow = atoi(value);

      if (exitnow) {

        requestExit();

      }

    }

  • 相关阅读:
    QT5控件-QDateTimeEdit和类QDateTime
    QT5-控件-QTimeEdit和QTime
    QT5-控件-QDateEdit 和 日期类QDate
    QT5-控件-QComboBox
    错误记录 "MongoClient opened before fork. Create MongoClient "
    GitHub 常用命令
    Linux学习记录-----《快乐的Linux命令行》.
    最全的HTTP1.1状态码
    恢复旋转排序数组
    C语言I博客作业09
  • 原文地址:https://www.cnblogs.com/adamli/p/3253034.html
Copyright © 2020-2023  润新知