2011-12-22 4 views
12

sto cercando di sostenere due intenti Icon_Picker:* Qualunque * modo per collegare elementi grafici/grafici Android/disegnabili?

org.adw.launcher.icons.ACTION_PICK_ICON 

e

com.betterandroid.launcher2.icons.PICK_ICON_ACTION 

Purtroppo ADW, Go Launcher e LauncherPro cercare drawable nella /drawable sia utilizzando l'intento di cui sopra, oppure utilizzando un XML che appare in /drawable

Mentre il vecchio intento BetterAndroid esegue la scansione delle immagini nella cartella /assets. Ora, so che il grande trucco per drawable al fine di fornire un drawable da un 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> 

Quindi invece di fornire un elemento grafico, io punto a un grafico esistente - Per non aver bisogno di file duplicati quando si fa riferimento alla stessa immagine, ma con nomi/id differenti.

Le mie domande:

1) C'è qualche trucco equivalente che avrebbe funzionato quando si fa riferimento alla /assets invece di drawable?

2) Se dovessi utilizzare AssetManager per leggere le risorse e renderle selezionabili: a) Sarebbero leggibili dalla scansione Intento per quei drawable? b) La dimensione dell'app sarebbe inevitabilmente raddoppiata in ogni caso? c) Come implementare correttamente AssetManager affinché funzioni? Qualcosa di simile:

sampleimage= BitmapFactory.decodeResource(context.getResources(), R.drawable.sampleimage); 

forse? O ci sarebbero migliori opzioni a getAsset() da una matrice?

Quello che sto cercando di realizzare non avere solo le immagini in /drawable, ma anche in qualche modo legato a /assets in modo che entrambi intenti possono eseguire la scansione e trovare i drawable e visualizzazione nel loro GridView senza dover duplicare la grafica (mettendo in entrambe le risorse e cartelle disegnabili.Grazie per qualsiasi aiuto!

MODIFICA: android: how to load xml file from assets directory? è stata una lettura molto utile, ma non sono sicuro che esclude completamente ciò che sto cercando di ottenere.

Quindi: Sembra che dovrei farlo in un altro modo, se deve funzionare affatto. L'altro senso) significa che ho bisogno di memorizzare la grafica nella cartella assets e quindi utilizzare AssetManager per ottenerli in drawable. Qualche suggerimento su come farlo? Non c'è modo di fare riferimento alle risorse utilizzando XML nella cartella drawable?

Pertanto le questioni che contano veramente per me, se dovessi usare AssetManager per leggere i beni e renderli drawable:

1) Avrebbero essere leggibili dalla scansione intenti per quei drawable?

2) Le dimensioni dell'app sarebbero inevitabilmente raddoppiate di dimensioni?

risposta

1

Esiste un trucco equivalente che potrebbe funzionare quando si fa riferimento a/assets anziché drawable?

No, mi dispiace.

Se dovessi usare AssetManager per leggere i beni e renderli drawable

sto per interpretare questo nel senso di creare Drawable oggetti Java.

a) Sarebbero leggibili dallo scanner Intent per quei drawable?

Intent s non "scansione per drawable" più di quanto pezzi di lettere di carta di scrittura o proiettili sparare alla gente. Quindi, non ho idea di cosa tu stia parlando. Inoltre, sospetto che le uniche persone che potrebbero rispondere a questa domanda siano gli sviluppatori delle due app di terze parti a cui sei interessato. Heck, nessuna delle due azioni Intent sembra documentata: questa è l'unica pagina dell'intero Internet che sembra menzionare lo com.betterandroid.launcher2.icons.PICK_ICON_ACTION, basato su una ricerca su Google - quindi è del tutto possibile che gli autori di quelle app non stiano cercando te che stai facendo quello che stai cercando di fare.

b) La dimensione dell'app inevitabilmente raddoppierà comunque?

Se per "dimensione" si intende "dimensione su disco", quindi no, la lettura di cose in fase di esecuzione non aumenta lo spazio su disco.

c) Come implementare correttamente AssetManager affinché funzioni correttamente?

chiamata open() su AssetManager per ottenere un InputStream sulla tua immagine, quindi passare che a BitmapFactory.decodeStream().