设为首页 加入收藏

TOP

探寻Android系统中的Old CRT OFF-Screen Animation(一)
2014-11-24 11:20:31 来源: 作者: 【 】 浏览:0
Tags:探寻 Android 系统 Old CRT OFF-Screen Animation


Android系统默认使用的关屏效果是fade,要激活旧CRT效果,需要修改以下文件,关闭fade效果。




frameworks/base/core/res/res/values/config.xml




- true


+ false




为啥如此修改就可以激活旧CRT效果,让我们跟踪下代码,先贴上相关代码:




frameworks\base\services\java\com\android\server\PowerManagerService.java




475 mAnimationSetting = 0;


476 if (windowScale > 0.5f) {


477 mAnimationSetting |= ANIM_SETTING_OFF;


478 }




2284 public void run() {


2285 if (mAnimateScreenLights) {


2286 synchronized (mLocks) {


2287 long now = SystemClock.uptimeMillis();


2288 boolean more = mScreenBrightness.stepLocked();


2289 if (more) {


2290 mScreenOffHandler.postAtTime(this, now+(1000/60));


2291 }


2292 }


2293 } else {


2294 synchronized (mLocks) {


2295 // we're turning off


2296 final boolean animate = animating && targetValue == Power.BRIGHTNESS_OFF;


2297 if (animate) {


2298 // It's pretty scary to hold mLocks for this long, and we should


2299 // redesign this, but it works for now.


2300 nativeStartSurfaceFlingerAnimation(


2301 mScreenOffReason == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR


2302 0 : mAnimationSetting);


2303 }


2304 mScreenBrightness.jumpToTargetLocked();


2305 }


2306 }


2307 }


2308 }




frameworks/base/services/jni/com_android_server_PowerManagerService.cpp




131 static void android_server_PowerManagerService_nativeStartSurfaceFlingerAnimation(JNIEnv* env,


132 jobject obj, jint mode) {


133 sp s(ComposerService::getComposerService());


134 s->turnElectronBeamOff(mode);


135 }




frameworks/base/services/surfaceflinger/SurfaceFlinger.cpp



2385 status_t SurfaceFlinger::turnElectronBeamOff(int32_t mode)


2386 {


2387 class MessageTurnElectronBeamOff : public MessageBase {


2388 SurfaceFlinger* flinger;


2389 int32_t mode;


2390 status_t result;


2391 public:


2392 MessageTurnElectronBeamOff(SurfaceFlinger* flinger, int32_t mode)


2393 : flinger(flinger), mode(mode), result(PERMISSION_DENIED) {


2394 }


2395 status_t getResult() const {


2396 return result;


2397 }


2398 virtual bool handler() {


2399 Mutex::Autolock _l(flinger->mStateLock);


2400 result = flinger->turnElectronBeamOffImplLocked(mode);


2401 return true;


2402 }


2403 };


2404


2405 sp msg = new MessageTurnElectronBeamOff(this, mode);


2406 status_t res = postMessageSync(msg);


2407 if (res == NO_ERROR) {


2408 res = static_cast( msg.get() )->getResult();


2409


2410 // work-around: when the power-manager calls us we activate the


2411 // animation. eventually, the "on" animation will be called


2412

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇S3C6410的时钟和PLL 下一篇Android操作系统11种传感器介绍

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)