There is not much difference, however, I think using drawable folder you can get images easily (All will be indexed in the R file, which makes it much faster (and much easier!) to load them.), and If you want to use it from asset then you have to use AssetManager
then using AssetFileDescriptor
you have to get those images.
Assets
can also be organized into a folder hierarchy, which is not
supported by resources. It's a different way of managing data.
Although resources cover most of the cases, assets have their
occasional use.
In the res/drawable
directory each file is given a pre-compiled ID
which can be accessed easily through R.id.[res id]. This is useful to
quickly and easily access images, sounds, icons
If you are passing an asset Uri
to something like an ImageView
, the framework will use BitmapFactory
to stream a downsampled version of the image from disk. This is the technique it uses under the hood.
Drawable
does not use this technique, for performance reasons. It is not generally expected that huge images are stored as Drawable
, and Drawable
loading happens many times over your app's lifecycle, so they are streamed from disk in their entirety and cached in memory.
The above is referenced from:
1) This question on SO
2) This question on SO