Подтвердить что ты не робот

* Любой * способ для привязки графики Android/drawable к/assets?

Я пытаюсь поддержать два намерения 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, чтобы прочитать активы и сделать их привлекательными: a) Могут ли они быть читаемыми с помощью сканирования Intent для этих чертежей? б) Будет ли размер приложения неизбежно вдвое больше? c) Как правильно выполнить AssetManager для этого? Что-то вроде:

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

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

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

EDIT: android: как загрузить xml файл из каталога ресурсов? был очень полезным для чтения, но я не уверен, что он полностью исключает, что я пытаясь добиться. Любой/Все входные данные приветствуются.

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

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

1) Могут ли они считываться с помощью сканирования Intent для этих чертежей?

2) Будет ли размер приложения неизбежно вдвое больше?

4b9b3361

Ответ 1

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

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

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

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

a) Могут ли они считываться с помощью сканирования Intent для этих чертежей?

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

b) Будет ли размер приложения неизбежно вдвое больше?

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

c) Как я должен правильно реализовать AssetManager для этого?

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