Thanks for the wonderful article!
I was looking at your code, and there’s one part I don’t understand. It seems like the idea behind the way you’re tracking MotionEntity objects is that you want to be able to display the objects on one sized canvas and then render to a different sized canvas (you mention displaying a lower-quality image, and then rendering to a higher quality image on disk).
But it doesn’t look like that works? If I call motionView.draw(canvas) for a canvas that corresponds to a higher resolution image than the background I build the MotionView on top of, the sticker locations will be incorrect. Is there something I’m missing?