Android, Drawable.createFromStream(is, srcname): what’s the 2nd parameter meaning


Which is the meaning of the second parameter of Drawable.createFromStream() method?

From Android APIs I only get:

public static Drawable createFromStream (InputStream is, String srcName)
Create a drawable from an inputstream

In all examples I have read I see they use the string "src": is it the name of the directory where the drawable is cached, relative to my application's root dir?

One parallel question: where am I supposed to find Android core sources (for example of Drawable.createFromStream() method…), to avoid such silly questions, in future?

Best Solution

It's basically useless:

Based on Froyo source, it is used when creating nine-patch images from the resource, but not when creating a regular Bitmap:

852 private static Drawable drawableFromBitmap(Resources res, Bitmap bm, byte[] np,
853         Rect pad, String srcName) {
855     if (np != null) {
856        return new NinePatchDrawable(res, bm, np, pad, srcName);
857     }
859     return new BitmapDrawable(res, bm);
860  }

You get there by following the Drawable code:

createFromStream returns:

return createFromResourceStream(null, null, is, srcName, null);

which in turn uses:

return drawableFromBitmap(res, bm, np, pad, srcName);

(np comes from Bitmap#getNinePatchChunk();) and this calls:

return new NinePatchDrawable(res, bm, np, pad, srcName);

Finally, you get to the NinePatch declaration:

public class NinePatch

Create a drawable projection from a bitmap to nine patches.


bitmap The bitmap describing the patches.

chunk The 9-patch data chunk describing how the underlying bitmap is split apart and drawn.

srcName The name of the source for the bitmap. Might be null.