Как установить фоновое изображение из папки ресурса в Android?

Я столкнулся с проблемой при установке обратного изображения LinearLayout из папки свойств.

String filePath="file:///android_asset/images/test.png"; Drawable d = Drawable.createFromPath(filePath); frontTextView.setBackgroundDrawable(d); 

Кто-нибудь может мне помочь.

Хорошо, если кто-то еще спотыкается здесь, с этой самой проблемой, где вы хотите установить фон представления из образа, который находится в активах:

 Drawable d = Drawable.createFromStream(getAssets().open(path_in_assets), null); 

А затем установите его в некоторый вид, который поддерживает только Drawables в качестве фона.

Насколько мне известно, вы не можете напрямую обращаться к активам, как вы пытаетесь. Вам нужно будет использовать класс AssetManager для получения ваших данных, если вы хотите сохранить его в качестве актива. Вот довольно приличный пост в блоге, объясняющий немного о ресурсах и активах, хотя официальная документация также является хорошим ресурсом, конечно.

Я также добавлю, что такие вещи, как фоновые изображения, как правило, лучше всего хранятся в res/drawable и доступны с использованием R.drawable.* ( R.drawable.* на сообщение выше, также обсуждает это), когда это возможно. На самом деле не совсем понятно, почему вам нужно сделать это таким образом из вашего предоставленного кода, однако, я полагаю, это в конечном счете ваш звонок.

EDIT: добавлено создание изображения из InputStream …

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

(Да, я могу использовать префикс вместо subdir и переименовывать файлы в соответствии с шаблоном (только с нижним регистром и номерами), и я, вероятно, сделаю это позже.)

 InputStream is = null; try { is = this.getResources().getAssets().open("Images/Fruits/Apple.png"); } catch (IOException e) { Log.w("EL", e); } Bitmap image = BitmapFactory.decodeStream(is); ImageButton ib2 = (ImageButton) findViewById( R.id.imageButton2); ib2.setImageBitmap( image);