ScrimState.java
- /*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
- package com.android.systemui.statusbar.phone;
- import android.graphics.Color;
- import android.os.Trace;
- import android.util.MathUtils;
- import com.android.keyguard.KeyguardUpdateMonitor;
- import com.android.systemui.statusbar.ScrimView;
- import com.android.systemui.statusbar.stack.StackStateAnimator;
- /**
- * Possible states of the ScrimController state machine.
- */
- public enum ScrimState {
- /**
- * Initial state.
- */
- UNINITIALIZED(-1),
- /**
- * On the lock screen.
- */
- KEYGUARD(0) {
- @Override
- public void prepare(ScrimState previousState) {
- mBlankScreen = false;
- if (previousState == ScrimState.AOD) {
- mAnimationDuration = StackStateAnimator.ANIMATION_DURATION_WAKEUP;
- if (mDisplayRequiresBlanking) {
- // DisplayPowerManager will blank the screen, we'll just
- // set our scrim to black in this frame to avoid flickering and
- // fade it out afterwards.
- mBlankScreen = true;
- }
- } else {
- mAnimationDuration = ScrimController.ANIMATION_DURATION;
- }
- mCurrentBehindAlpha = mScrimBehindAlphaKeyguard;
- mCurrentInFrontAlpha = 0;
- }
- @Override
- public float getBehindAlpha(float busynessFactor) {
- return MathUtils.map(0 /* start */, 1 /* stop */,
- mScrimBehindAlphaKeyguard, ScrimController.GRADIENT_SCRIM_ALPHA_BUSY,
- busynessFactor);
- }
- },
- /**
- * Showing password challenge on the keyguard.
- */
- BOUNCER(1) {
- @Override
- public void prepare(ScrimState previousState) {
- mCurrentBehindAlpha = ScrimController.GRADIENT_SCRIM_ALPHA_BUSY;
- mCurrentInFrontAlpha = 0f;
- }
- },
- /**
- * Showing password challenge on top of a FLAG_SHOW_WHEN_LOCKED activity.
- */
- BOUNCER_SCRIMMED(2) {
- @Override
- public void prepare(ScrimState previousState) {
- mCurrentBehindAlpha = 0;
- mCurrentInFrontAlpha = ScrimController.GRADIENT_SCRIM_ALPHA_BUSY;
- }
- },
- /**
- * Changing screen brightness from quick settings.
- */
- BRIGHTNESS_MIRROR(3) {
- @Override
- public void prepare(ScrimState previousState) {
- mCurrentBehindAlpha = 0;
- mCurrentInFrontAlpha = 0;
- }
- },
- /**
- * Always on display or screen off.
- */
- AOD(4) {
- @Override
- public void prepare(ScrimState previousState) {
- final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn();
- mBlankScreen = mDisplayRequiresBlanking;
- mCurrentBehindAlpha = mWallpaperSupportsAmbientMode
- && !mKeyguardUpdateMonitor.hasLockscreenWallpaper() ? 0f : 1f;
- mCurrentInFrontAlpha = alwaysOnEnabled ? mAodFrontScrimAlpha : 1f;
- mCurrentInFrontTint = Color.BLACK;
- mCurrentBehindTint = Color.BLACK;
- mAnimationDuration = ScrimController.ANIMATION_DURATION_LONG;
- // DisplayPowerManager may blank the screen for us,
- // in this case we just need to set our state.
- mAnimateChange = mDozeParameters.shouldControlScreenOff();
- }
- @Override
- public boolean isLowPowerState() {
- return true;
- }
- },
- /**
- * When phone wakes up because you received a notification.
- */
- PULSING(5) {
- @Override
- public void prepare(ScrimState previousState) {
- mCurrentInFrontAlpha = 0;
- mCurrentInFrontTint = Color.BLACK;
- mCurrentBehindAlpha = mWallpaperSupportsAmbientMode
- && !mKeyguardUpdateMonitor.hasLockscreenWallpaper() ? 0f : 1f;
- mCurrentBehindTint = Color.BLACK;
- mBlankScreen = mDisplayRequiresBlanking;
- }
- },
- /**
- * Unlocked on top of an app (launcher or any other activity.)
- */
- UNLOCKED(6) {
- @Override
- public void prepare(ScrimState previousState) {
- mCurrentBehindAlpha = 0;
- mCurrentInFrontAlpha = 0;
- mAnimationDuration = StatusBar.FADE_KEYGUARD_DURATION;
- if (previousState == ScrimState.AOD || previousState == ScrimState.PULSING) {
- // Fade from black to transparent when coming directly from AOD
- updateScrimColor(mScrimInFront, 1, Color.BLACK);
- updateScrimColor(mScrimBehind, 1, Color.BLACK);
- // Scrims should still be black at the end of the transition.
- mCurrentInFrontTint = Color.BLACK;
- mCurrentBehindTint = Color.BLACK;
- mBlankScreen = true;
- } else {
- mCurrentInFrontTint = Color.TRANSPARENT;
- mCurrentBehindTint = Color.TRANSPARENT;
- mBlankScreen = false;
- }
- }
- };
- boolean mBlankScreen = false;
- long mAnimationDuration = ScrimController.ANIMATION_DURATION;
- int mCurrentInFrontTint = Color.TRANSPARENT;
- int mCurrentBehindTint = Color.TRANSPARENT;
- boolean mAnimateChange = true;
- float mCurrentInFrontAlpha;
- float mCurrentBehindAlpha;
- float mAodFrontScrimAlpha;
- float mScrimBehindAlphaKeyguard;
- ScrimView mScrimInFront;
- ScrimView mScrimBehind;
- DozeParameters mDozeParameters;
- boolean mDisplayRequiresBlanking;
- boolean mWallpaperSupportsAmbientMode;
- KeyguardUpdateMonitor mKeyguardUpdateMonitor;
- int mIndex;
- ScrimState(int index) {
- mIndex = index;
- }
- public void init(ScrimView scrimInFront, ScrimView scrimBehind, DozeParameters dozeParameters) {
- mScrimInFront = scrimInFront;
- mScrimBehind = scrimBehind;
- mDozeParameters = dozeParameters;
- mDisplayRequiresBlanking = dozeParameters.getDisplayNeedsBlanking();
- mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(scrimInFront.getContext());
- }
- public void prepare(ScrimState previousState) {
- }
- public int getIndex() {
- return mIndex;
- }
- public float getFrontAlpha() {
- return mCurrentInFrontAlpha;
- }
- public float getBehindAlpha(float busyness) {
- return mCurrentBehindAlpha;
- }
- public int getFrontTint() {
- return mCurrentInFrontTint;
- }
- public int getBehindTint() {
- return mCurrentBehindTint;
- }
- public long getAnimationDuration() {
- return mAnimationDuration;
- }
- public boolean getBlanksScreen() {
- return mBlankScreen;
- }
- public void updateScrimColor(ScrimView scrim, float alpha, int tint) {
- Trace.traceCounter(Trace.TRACE_TAG_APP,
- scrim == mScrimInFront ? "front_scrim_alpha" : "back_scrim_alpha",
- (int) (alpha * 255));
- Trace.traceCounter(Trace.TRACE_TAG_APP,
- scrim == mScrimInFront ? "front_scrim_tint" : "back_scrim_tint",
- Color.alpha(tint));
- scrim.setTint(tint);
- scrim.setViewAlpha(alpha);
- }
- public boolean getAnimateChange() {
- return mAnimateChange;
- }
- public void setAodFrontScrimAlpha(float aodFrontScrimAlpha) {
- mAodFrontScrimAlpha = aodFrontScrimAlpha;
- }
- public void setScrimBehindAlphaKeyguard(float scrimBehindAlphaKeyguard) {
- mScrimBehindAlphaKeyguard = scrimBehindAlphaKeyguard;
- }
- public void setWallpaperSupportsAmbientMode(boolean wallpaperSupportsAmbientMode) {
- mWallpaperSupportsAmbientMode = wallpaperSupportsAmbientMode;
- }
- public boolean isLowPowerState() {
- return false;
- }
- }
ScrimState.java的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- [CentOS 7] TexLive2017中kpsewhich Bug的修复
使用TexLive有一段时间了,从2015到2017,一直运行如常. 最近,想把以前的文档重新编译,却发现不能正常运行,费了好大一番工夫,才终于修复了这个bug,记录如下. 问题描述:编译一个简单的 ...
- Ubuntu18.04下给PyCharm创建快捷方式
Ubuntu18.04下给PyCharm创建快捷方式 该方法 WebStorm.PyCharm.Clion 等都适用. 步骤 终端输入: sudo gedit /usr/share/applicati ...
- Tensorflow(添加噪声的方式)
在去噪自编码器中,模型的输入是原始的输入经过某种形式的加噪过程后的衰弱的形式,所以加噪声一般分为:加高斯白噪声,掩模噪声,椒盐噪声. 1.加性高斯噪声 self.scale = tf,placehol ...
- python之路-变量
变量定义的规则: - 变量名只能是字母.数字.或下划线的任意组合 - 变量名的第一个字符不能是数字 - 以下关键字不能声明为变量名 ['and','as','assert','break','cla ...
- js求最大值最小值
比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,代码如下: <html> <head> <meta charset=&qu ...
- TP自动提取关键词
protected function _before_insert(&$data, $option) { $data['create_time'] = time(); ...
- 俄罗斯方块win c 图形线程
环境准备:visual stdio 2015,easyx, //
- RAID配置多阵列
感谢: https://www.cnblogs.com/hystj/articles/8672029.html
- SpringMVC云题库错题及答案汇总-2
此题目考察的是SpringMVC-注解驱动控制器,注释类型的范围: A.处理requet uri 部分的注解: @PathVariable; B.处理request header部分的注解: @Req ...
- java跨域
在我们开发当中 经常会碰见跨域问题 今天我来说下 我在工作撞见的跨域: 一.首先我们要了解跨域存在的原因 1.浏览器限制 2.跨域(域名,端口不一样都是跨域) 3.XHR(XMLHttpReques ...