2012-02-12 2 views
2

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

Вопрос: я могу позволить пользователю видеть все изображения так, как я хочу, но я не знаю, как установить выбранное изображение в качестве приложения фона.

Что я хочу сделать: Я хочу, чтобы пользователь нажать на кнопку, которая экспортирует выбранное изображение «bakgrund.png» в «/ RES/вытяжке-MDPI» и заменяет текущий. Это позволило бы мне легко интегрировать фоновый переключатель. Также работает переименование текущих файлов.

PS: Мои текущие фоновые изображения находятся в/res/drawable-mdpi с именем 1.png 2.png и 3.png.

+0

Что именно вопрос? Кажется, вы просите нас спроектировать все для вас. –

+0

можете ли вы разместить свой файл main.xml или любой другой XML-файл, который вы вызываете в setContentView (...) в onCreate своей активности? –

ответ

6

Самый простой способ - вызвать метод setBackgroundResource(image_id) на корневом макете. Как, если у вас есть LinearLayout, который имеет android:id="@+linear" в качестве корневого макета в макет XML, то этот код поможет: -

LinearLayout linearLayout=(LinearLayout) findViewById(R.id.linear); 
linear.setBackgroundResource(R.drawable.1);//call this in the OnClickListener's OnClick Method 
+0

Мне нравится реализация кода, и она работает, но только на текущем виде. Кроме того, как только я покидаю окно, возвращаемый объект возвращается к его старому состоянию (1.png). Есть ли способ сделать этот параметр применимым ко всем параметрам Relative Layouts с именем may и сохранить этот параметр даже при перезапуске всего приложения? –

+0

Вы не можете указать один и тот же идентификатор для нескольких видов, иначе вы можете получить исключение ClassCastException. Вместо этого вы можете иметь объекты макетов в ArrayList, а затем в методе OnClick() прослушивателя Button вы можете запустить цикл на ArrayList, чтобы установить фон каждого макета на желаемый. – noob

+0

Хорошо ... Вот что я получил от этого: у меня не может быть такого же идентификатора на RelativeLayouts? И все еще есть проблема сохранения изображения, когда активность уничтожается и применяется для всех макетов xml. Я читал об этом с общим представлением контента или строками, но я просто не мог заставить его работать. THX за помощь мне. :) –

2

Во-первых, вам нужны разные темы, которые имеют разные фоны. Таким образом, вы можете использовать метод this.setTheme в своем Activity.

Действительно, я предлагаю вам, две разные макет (с различными уровнями подготовки, но имеют те же компоненты) и использовать setContentView во onClick.

Я надеюсь, что он решает вашу проблему.

Смежные вопросы