* Любой * способ связать Android / рисованную графику с / assets? - PullRequest
12 голосов
/ 22 декабря 2011

Я пытаюсь поддерживать два намерения Icon_Picker:

org.adw.launcher.icons.ACTION_PICK_ICON

и

com.betterandroid.launcher2.icons.PICK_ICON_ACTION

К сожалению, ADW, Go Launcher и LauncherPro ищут в Drawables в /drawable либо с использованием намеренияупомянутый выше, или с помощью XML, который выглядит в /drawable

, тогда как старое намерение BetterAndroid сканирует изображения в папке /assets.Теперь я знаю замечательный трюк для рисования, чтобы обеспечить рисование из 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>

Поэтому вместо того, чтобы предоставлять графику, я указываю на существующую графику - хорошо, если не нужны дубликаты файлов, когдассылаясь на одно и то же изображение, но с разными именами / идентификаторами.

Мои вопросы:

1) Есть ли какой-нибудь эквивалентный трюк, который будет работать при обращении к /assets вместо рисования?

2) ЕслиЯ должен был использовать AssetManager, чтобы прочитать ресурсы и сделать их пригодными для рисования: а) Могут ли они быть читаемыми при сканировании намерений для этих объектов?б) В любом случае размер приложения неизбежно удвоится?в) Как правильно реализовать AssetManager, чтобы это работало?Что-то вроде:

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

может быть?Или были бы лучшие варианты для getAsset() из массива, может быть?

То, что я пытаюсь достичь , это не только иметь изображения в /drawable, но также как-то связаны с /assets, чтобы оба намерения могли сканировать и находить чертежи и отображать их в виде таблицы без дублирования графики (помещая их как в ресурсы, так и в папки для рисования. Спасибо за любую помощь!

РЕДАКТИРОВАТЬ: android: как загрузить xml-файл из каталога активов? было очень полезным чтением, но я не уверен, что оно полностью исключает то, чего я пытаюсь достичь. Любой / Весь ввод приветствуется.

Итак: Похоже, мне придется сделать это по-другому, если это вообще сработает. (Другой способ), то есть мне нужно сохранить графику в папке assets, а затем использовать AssetManager, чтобы получить ее вdrawable. Любые предложения о том, как это сделать? Нет ли способа ссылаться на ресурсы с помощью XML в папке drawable?

Поэтому вопросы, которые действительно имеют для меня значение Если бы я использовал AssetManager чтобы прочитать активы и сделать их пригодными для рисования:

1) Будут ли они читаемы при сканировании намерений для этих объектов?

2) В любом случае размер приложения неизбежно удвоится?

1 Ответ

1 голос
/ 22 мая 2012

Есть ли какой-нибудь эквивалентный трюк, который сработал бы при обращении к / assets вместо рисования?

Нет, извините.

Если бы я использовалAssetManager для чтения ресурсов и создания их для рисования

Я собираюсь интерпретировать это как значение создания Drawable объектов Java.

a) Будут ли они доступны для чтенияНамеренное сканирование на предмет этих выдвижных предметов?

Intent s не "сканирует отрисовки" больше, чем листы бумаги, пишут буквы или пули стреляют в людей.Следовательно, я понятия не имею, о чем ты говоришь.Более того, я подозреваю, что единственные люди, которые могут ответить на этот вопрос, - это разработчики двух сторонних приложений, которые вас интересуют. Черт, ни одно из этих двух действий Intent не выглядит документированным - это единственная страница навесь Интернет, который, кажется, упоминает com.betterandroid.launcher2.icons.PICK_ICON_ACTION, основанный на поиске Google - поэтому вполне возможно, что авторы этих приложений не ищут, чтобы вы делали то, что пытаетесь сделать.

b) В любом случае размер приложения неизбежно удвоится?

Если под "размером" вы подразумеваете "размер на диске", то нет, чтение объектов во время выполнения не увеличивает дисковое пространство.

c) Как правильно реализовать AssetManager, чтобы это работало?

Вызовите open() на AssetManager, чтобы получить InputStream на своем изображении, затем передайтечто до BitmapFactory.decodeStream().

...