Android 冷启动白屏问题
分析 Android 冷启动白屏的成因与四种处理方案,重点对比把 windowDisablePreview 设为 true 与用 layer-list 占位图配置 windowBackground 两种做法,前者会让启动看似延迟数秒,后者能有效消除白屏。
分析 Android 冷启动白屏的成因与四种处理方案,重点对比把 windowDisablePreview 设为 true 与用 layer-list 占位图配置 windowBackground 两种做法,前者会让启动看似延迟数秒,后者能有效消除白屏。
讲解 Android 颜色 ARGB 中透明度的换算方法,用透明度百分比乘以 255 再转成十六进制即为颜色值前两位,并列出从百分之百对应 FF 到百分之零对应 00、每隔百分之五一档的二十一档常用对照表。
演示 Android 帧动画的实现,在 drawable 目录用 animation-list 标签按顺序声明三十多帧图片,给每帧设置 32 毫秒的 duration,用 oneshot 属性控制是否只播放一次,再在代码中启动动画。
实现 Android 监控服务 MonitoringService 检测应用是否存活,用 Timer 每 10 秒调用 isClsRunning 检查三个 Activity 的运行状态,全部挂掉时携带 FLAG_ACTIVITY_NEW_TASK 重启入口页面,并注册 kill_self 广播用于停止监控。
解决使用 EventBus 时报 ViewRootImpl 的 CalledFromWrongThreadException 异常,原因是订阅方法用 BACKGROUND 线程模式更新了 UI,把模式改为 MAIN 或在更新控件处包一层 runOnUiThread 即可。
分享 Android 工具类 BrightnessManager 的实现,通过修改 Window 的 LayoutParams 中 screenBrightness 字段设置当前页面亮度,取值 0 到 1.0f,并提供 setAlpha、lightoff 调暗至 0.3f 与 lighton 恢复 1.0f 等透明度方法。
记录 Android 从一个应用打开另一个应用的写法,构造 ACTION_MAIN 加 CATEGORY_LAUNCHER 的 Intent,再用目标应用包名与 MainActivity 全类名创建 ComponentName 并调用 setComponent 后 startActivity 即可完成跳转。
实现 Android Bitmap 高斯模糊的工具类 BlurBitmapUtil,先按 0.4 倍比例缩小图片,再用 RenderScript 的 ScriptIntrinsicBlur 配合 Allocation 渲染,模糊半径最大可设 25f,并给出加载到 ImageView 的调用示例。
手把手实现 Android 自定义加载弹窗,继承 ProgressDialog 的 LoadingView 设置自定义布局,配合 16dp 圆角的 shape 背景和 animated-rotate 从 0 到 720 度的环形渐变旋转动画,做出带文字提示的加载中对话框。
介绍 Android 用 Glide 让 gif 只播放一次的两种写法,核心是把 GlideDrawableImageViewTarget 的播放次数参数设为 1,并在 RequestListener 中用 GifDecoder 累加每帧延时算出总时长,再发送延时消息通知动画结束。