滚动数字应该如何实现?有没有大佬分享一波

目前看到一种实现方式大概是Mask+Layout,数字位通过Layout的垂直方向布局加0-9个子节点实现0-9的垂直方向分布,再通过移动Layout实现滚动效果,通过Mask进行遮罩,通过原数字与目标数字长度比较实现位数的变化(即增减Layout)。这种方式的效果是宽度随着数字位数的增加而增加。
如果想要固定容器宽度,数字位数越多,数字则越来越小类似Label overflow 的 shrink 属性的效果,应该如何实现?我通过给最外层Layout加上固定宽度resize mode改为child发现数字位Layout节点宽度虽然缩小了但是高度并没有变化导致数字叠在一起,这个问题的解决方案是不是需要监听某个事件自己控制数字位Layout的宽高或者缩放?还有一个问题就是,如果从业务的角度这个数字可以是2位也可是8位或者更多位,如何做数字简写(多少K、M、B)?