Android P Keyguard Scrim快速灭屏亮屏闪亮
MTK在android P上会出现在设置锁屏滑动时候,会出现快速灭屏亮屏闪亮现象。
在开发者模式关掉动画时不会出现此问题(Keyguard Scrim动画问题)
解决办法:setDuration(0),使keyguard scrim动画关闭,逻辑请打上callback查看。
堆栈打印参考: Android源码开发基本命令
/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
protected void updateScrims() {setScrimInFrontAlpha(mCurrentInFrontAlpha);setScrimBehindAlpha(mCurrentBehindAlpha);dispatchScrimsVisible();
}private void setScrimBehindAlpha(float alpha) {setScrimAlpha(mScrimBehind, alpha);
}private void setScrimInFrontAlpha(float alpha) {setScrimAlpha(mScrimInFront, alpha);
}private void setScrimAlpha(ScrimView scrim, float alpha) {if (alpha == 0f) {scrim.setClickable(false);} else {// Eat touch events (unless dozing or pulsing).scrim.setClickable(mState != ScrimState.AOD && mState != ScrimState.PULSING);}updateScrim(scrim, alpha);
}private void updateScrim(ScrimView scrim, float alpha) {...if (wantsAlphaUpdate || wantsTintUpdate) {if (mAnimateChange) {startScrimAnimation(scrim, currentAlpha);} else {// update the alpha directlyupdateScrimColor(scrim, alpha, getCurrentScrimTint(scrim));onFinished();}} else {onFinished();}
}private void startScrimAnimation(final View scrim, float current) {ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f);final int initialScrimTint = scrim instanceof ScrimView ? ((ScrimView) scrim).getTint() :Color.TRANSPARENT;anim.addUpdateListener(animation -> {final float startAlpha = (Float) scrim.getTag(TAG_START_ALPHA);final float animAmount = (float) animation.getAnimatedValue();final int finalScrimTint = getCurrentScrimTint(scrim);final float finalScrimAlpha = getCurrentScrimAlpha(scrim);float alpha = MathUtils.lerp(startAlpha, finalScrimAlpha, animAmount);alpha = MathUtils.constrain(alpha, 0f, 1f);int tint = ColorUtils.blendARGB(initialScrimTint, finalScrimTint, animAmount);updateScrimColor(scrim, alpha, tint);dispatchScrimsVisible();});anim.setInterpolator(mInterpolator);anim.setStartDelay(mAnimationDelay);anim.setDuration(mAnimationDuration); //setDuration(0),使keyguard scrim动画关闭,就不会出现android p快速灭屏出现闪屏 anim.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator animation) {onFinished();scrim.setTag(TAG_KEY_ANIM, null);dispatchScrimsVisible();if (!mDeferFinishedListener && mOnAnimationFinished != null) {mOnAnimationFinished.run();mOnAnimationFinished = null;}}});// Cache alpha values because we might want to update this animator in the future if// the user expands the panel while the animation is still running.scrim.setTag(TAG_START_ALPHA, current);scrim.setTag(TAG_END_ALPHA, getCurrentScrimAlpha(scrim));scrim.setTag(TAG_KEY_ANIM, anim);anim.start();
}
Android P Keyguard Scrim快速灭屏亮屏闪亮相关推荐
- Android 屏幕灭屏亮屏广播,屏幕灭屏亮屏监听,广播实现按键监听
service 类注册广播进行监听 /*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/9/27 09*/ public class S ...
- 【我的OpenGL学习进阶之旅】解决关于在OpenGL ES开发中GLSurfaceView调用了onPause和onResume方法,然后息屏亮屏之后GLSurfaceView黑屏的问题
目录 一.问题描述 二.分析问题 2.1 排查onPause和onResume方法 2.2 注释掉onPause和onResume方法 2.3 GLSurfaceView 关于Activity生命周期 ...
- android 11.0 12.0控制屏幕亮屏和灭屏操作
在11.0 12.0的产品开发中, 需要提供亮屏和灭屏的接口在8.0以后系统对于屏幕亮灭屏做了限制,直接调用亮屏和灭屏的方法就调不到了, 接下来就来看PowerManage.java类 这个是一个电源 ...
- Android 9.0 代码实现对屏幕亮屏和灭屏的控制和显示电量百分比
目录 1.概述 2.代码实现对屏幕亮屏和灭屏的控制和显示电量百分比的核心类
- Android 息屏亮屏代码实现
1,实现效果 : 2,实现代码 [1]创建接收者 package com.xiaoshuai.www.screendemo;import android.app.admin.DeviceAdminRe ...
- Android 监听屏幕熄屏亮屏和主动唤醒屏幕
// 监听熄屏和亮屏需要添加权限 <uses-permission android:name="android.permission.DEVICE_POWER"/> & ...
- Android 亮屏流程分析
https://blog.csdn.net/FightFightFight/article/details/79808100 相关文章: [Android Framework] 8.1 PowerMa ...
- Android 8.1 PowerManagerService分析(四)——亮屏流程分析
欢迎大家关注我的掘金帐号 我会在那里定期更新最新版本的Android Framework源码分析! 相关文章: [Android Framework] 8.1 PowerManagerService分 ...
- Android手机亮屏流程分析
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 注:文章转于网络,点击查看原文 PowerManagerService 之前系列文章 ...
最新文章
- IBM一周内拥有10万Lotus Symphony用户
- 【干货】产品运营中极具战略意义的环节:数据分析
- 【论文解读】基于关系感知的全局注意力
- 恒大全国降价,最低74折,接下来会有其他楼盘跟进降价吗?
- 基于.net standard 的动态编译实现
- C语言中枚举enum的用法
- VxWorks程序一下载就停住了
- html table datasrc,table_data_tables.html
- 这些面试用例设计,你肯定遇到过(朋友圈、电梯、发红包、支付)
- 初学RubyOnRails的推荐书籍
- linux能yum装mcafee吗,Redhat(64位)安装Mcafee步骤
- 怎么对网站ICP备案和公安备案流程
- 整车控制器(VCU)开发 之 概述
- Python 之关键字(保留字)
- 【scala】获取当前时间的上一个自然周以及自然周集合;获取当前时间的上一个自然月以及自然月的第一天与最后一天
- 每天叫醒的不是闹钟而是励志文章梦想
- 在Markdown编辑器中输入上标下标
- 网络安全——DDOS攻击
- 下载了免费的txt电子书,如何用IOS苹果手机打开?
- tp5源码分析之网络请求
热门文章
- Origin画图技巧之设置框图默认设置
- 通用AI元素识别在UI自动化测试的最佳实践
- 工作手册 会计核算制度 目录 1. 会计核算管理制度	1 2. 会计档案管理办法	4 1.会计核算管理制度 8. 1.采取借贷记账法记账,采用权责发生制,即凡是收益已经实现,用已经发生,不论款
- 流量贵如金,APP推广如何迈好第一步?技术和策略缺一不可
- 分享一下前端浏览的一些网址记录
- 关于(广义)代数特征值问题的一点注记
- html5互动场景制作系统,春哥技术博客高仿易企秀H5场景应用制作平台源码V1.0正式版发布...
- 软件漏洞之Zabbix
- [足式机器人]Part1 运动控制的替代方法Ch06——【Legged Robots that Balance 读书笔记】
- linux终端命令行删除当前光标之后内容ctrl +k