I think a shader is the best approach.
You could always swap sprites really fast to create the effect But that seems inefficient.
Hi. Shader is the solution but you can animate texture mapping in OpenGl.
… or just blend and animate with other “shine” sprite on top of the button sprite?