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();

      }

    }

  • 相关阅读:
    找到一种给vs2012对话框插入背景图片不会失真的方法
    第一次用C语言把数据写入文件中
    Java学习路线图
    一:MyBatis Generator 【SpringMvc+Spring+MyBatis+Maven整合学习笔记】
    windows系统安装Redis
    js子级窗口相互调用父级的方法
    MSSQL 发布订阅,实现读写分离
    查看MS SQL最耗时间资源的SQL
    数据库优化
    mybatis与hibernate区别
  • 原文地址:https://www.cnblogs.com/adamli/p/3253034.html
Copyright © 2011-2022 走看看