I am trying to support two Icon_Picker intents:
org.adw.launcher.icons.ACTION_PICK_ICON
and
com.betterandroid.launcher2.icons.PICK_ICON_ACTION
Unfortunately ADW, Go Launcher and LauncherPro look for drawables in the /drawable
either using the intent mentioned above, or by using an XML which looks in /drawable
Whereas the old BetterAndroid intent scans for images in the /assets
folder. Now, I know of the great trick for drawables in order to supply a drawable from an XML:
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/com_aac_cachemate_demo_cachemate" />
</selector>
Therefore instead of supplying a graphic, I point to an existing graphic - Good for not needing duplicate files when referencing the same image, but with different names/ids.
My Questions:
1) Is there any equivalent trick that would work when referencing the /assets
instead of drawable?
2) If I were to use AssetManager
to read the assets and make them drawables: a) Would they be readable by the Intent scanning for those drawables? b) Would the app size inevitably double in size anyway? c) How would I implement AssetManager correctly for this to work? Something like:
sampleimage= BitmapFactory.decodeResource(context.getResources(), R.drawable.sampleimage);
maybe? Or would there be better options to getAsset()
from an Array maybe?
What I'm trying to achieve is not only have the images in /drawable
but also somehow linked to /assets
so that both intents can scan and find the drawables and display in their gridview without having to duplicate the graphics (putting them in both assets and drawable folders. Thanks for any help!
EDIT: android: how to load xml file from assets directory? was a very helpful read, but I'm not sure it completely rules out what I'm trying to achieve. Any/All input is appreciated.
So: It seems I would have to do it the other way, if it is to work at all. (The other way) meaning I need to store the graphics in the assets
folder and then use AssetManager
to get them into drawable
. Any suggestions on how to do that? Is there no way to reference the assets by using XML in the drawable
folder?
Therefore the questions that really matter to me , If I were to use AssetManager
to read the assets and make them drawables:
1) Would they be readable by the Intent scanning for those drawables?
2) Would the app size inevitably double in size anyway?
Is there any equivalent trick that would work when referencing the /assets instead of drawable?
No, sorry.
If I were to use AssetManager to read the assets and make them drawables
I am going to interpret this as meaning creating Drawable
Java objects.
a) Would they be readable by the Intent scanning for those drawables?
Intent
s do not "scan for drawables" any more than pieces of paper write letters or bullets shoot people. Hence, I have no idea what you are talking about. Moreover, I suspect that the only people who could answer that question are the developers of the two third-party apps you are interested in. Heck, neither of those two Intent
actions seem documented -- this is the one and only page on the entire Internet that seems to mention com.betterandroid.launcher2.icons.PICK_ICON_ACTION
, based upon a Google search -- so it is entirely possible the authors of those apps are not looking for you to be doing what you are trying to do.
b) Would the app size inevitably double in size anyway?
If by "size" you mean "size on disk", then no, reading things at runtime does not increase disk space.
c) How would I implement AssetManager correctly for this to work?
Call open()
on AssetManager
to get an InputStream
on your image, then pass that to BitmapFactory.decodeStream()
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.