zoukankan      html  css  js  c++  java
  • 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();

      }

    }

  • 相关阅读:
    ExtJS4 Panel中嵌套PDF
    从 JavaScript 数组去重谈性能优化(转)
    js中top、parent、frame
    “N”在Sql Server字段类型中的重要性 (转)
    IE下lineheight的BUG解决 (转)
    ExtJS4 Dialog
    Chrome启动后打开第一个网页很慢的解决方案(转)
    ExtJS4 Grid改变单元格背景颜色
    form表单
    Detect IFrame Load Event 探索Iframe的加载事件
  • 原文地址:https://www.cnblogs.com/adamli/p/3253034.html
Copyright © 2011-2022 走看看