Similar to
@JohnC approach, but I think that in order to get a smooth result, the way to go would be to play with the camera preview event data and progressively draw a canvas (initially a transparent canvas covering the full preview panel) that will be drawn line by line from top to bottom, progressively covering the preview.
All android devices (*) support at least the preview YUV format (which can be converted to rgb). You only need to decode the needed line(s) each time and add them to your drawn bitmap after every X miliseconds (or preview events) depending on how 'lazy' you want it to be.
(*) perhaps all current Android phones already also support RGB preview format, which would make it easier, worth checking