-
PopupWindow.setAnimationStyle(...)用的是 window 级别的 enter/exit 动画(本质是对弹窗所在 window 的动画),不是对某个 View 做 property animation。 -
window 级动画在播放过程中,系统会在每一帧去驱动该 window 的内容更新/合成;在 Android 16 / target 35 的组合下,这个过程更容易表现为:
- content view 被更频繁地标记为需要绘制(invalidate / draw traversal 频率更高),或者
- 合成策略变化导致不能很好复用上一帧缓存(每帧都更“像一次完整绘制/合成”)
卡顿的本质是:window 动画让 GoodSimpleDraweeView 每帧都执行 onDraw(),而这个 onDraw() 每帧都在 createBitmap → draw 到 bitmap → recycle → System.gc(),产生严重的内存分配/回收/GC 抖动。
Android 16+(target 35)下帧驱动/合成策略变化 + 高刷设备更容易把这个问题放大,所以你才会“升级后才明显”。