Going from 565 to ARGB 8888 is not what you want. Whenever an image
with no alpha channel is decoded, Android (currently) converts it to
565 because this is how it will be rendered on screen. Doing the
conversion at drawing time would be a waste of CPU.
What you need is to decode the image directly in ARGB 8888. When you
call one of the BitmapFactory.decode*() methods, you can specify a set
of BitmapFactory.Options. Simply pass a set of options in which
inDither == false. This will tell BitmapFactory to not attempt to
dither the original 24 bits image to 16 bits.
Android framework engineer
Note: please don't send private questions to me, as I don't have time
to provide private support. All such questions should be posted on
public forums, where I and others can see and answer them