#android
#Android
Вопрос:
У меня есть список Drawable, хранящийся в массиве. Теперь я хотел бы преобразовать его в «res» (тип данных int). Возможно ли это? Любая помощь приветствуется.
Комментарии:
1. Лучше всего объяснить, что вы хотите сделать (помимо этого), чтобы сообщество могло лучше помочь вам или предложить обходные пути.
Ответ №1:
Невозможно изменить ресурсы в существующем APK на устройстве.
Ответ №2:
Вероятно, вы пытаетесь получить resID из случайного Drawable. Если это так, то это невозможно — drawable не хранит идентификаторы.
Но если вы используете TypedArray для загрузки ваших чертежей из ресурсов (т. Е. Resources.obtainTypedArray(R.array.your_imgs)
), тогда вы сможете получить resID, вызвав getResourceId(int index, int defValue)
:
TypedArray typedArray = mResources.obtainTypedArray(R.array.my_imgs);
int resID = typedArray.getResourceId(index, defValue);
Ответ №3:
«res» — это идентификатор для доступа к ресурсу, упакованному в файл .apk. Итак, я думаю, что «конвертировать» drawable в res на самом деле означает изменение существующего .apk на устройстве, что невозможно
Ответ №4:
если у вас есть доступные для рисования имена в массиве, вы можете использовать
getIdentifier (String name, String defType, String defPackage);
int resId = getResources().getIdentifier("us","drawable","com.app");
Вышеуказанная функция вернет целое значение, такое же, как R.drawable.us .
Вот как вы получаете доступ к именам ресурсов.