flutter屏幕适配 ,一种一劳永逸的全局适配方式
2019-04-16 本文已影响13人
06fd4cf1f427
flutter 屏幕适配 demo main
一种一劳永逸的全局适配方式
效果
320x480

1080x1920

原理 (具体代码 main)
1.更改配置的 ViewConfiguration 的size和devicePixelRatio (ViewConfiguration 这个类再 RenderView 里赋值,而RenderView是 renderObject树的根,在布局和绘制的过程中,会根据ViewConfiguration的值来做由父向子的布局绘制操作)
2.PointerDataPacket 从引擎冲过来的事件,默认采用的是 系统的devicePixelRatio ,这里就需要适用我们的值 复写 initInstances() 内部 ui.window.onPointerDataPacket=_handlePointerDataPacket 赋值以下
void _handlePointerDataPacket(ui.PointerDataPacket packet) {
_pendingPointerEvents.addAll(PointerEventConverter.expand(
packet.data,
// 适配事件的转换比率,采用我们修改的
getAdapterRatio()));
if (!locked) _flushPointerEventQueue();
}
【附】相关架构及资料


资料领取
点赞+加群免费获取 Android IOC架构设计
加群领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。