2013-05-24 2 views
1

В моем приложении я создал 5 файлов действий, соответствующих 5 файлам xml.Now В первом действии я поместил кнопку, которая перемещается в другую активность, откуда я могу выбрать изображение . Теперь я хочу, чтобы выбранное изображение было прикреплено на фоне всего приложения. Что мне нужно делать? пожалуйста, предложите мне ..Как изменить фоновое изображение всего приложения

ответ

0

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

LinearLayout ll = (LinearLayout) findViewById(R.id.blayout); 
//This function will change background drawable, so place it where you want. 
ll.setBackgroundDrawable(yourDrawableID); 
+0

его слишком громоздкий мой дорогой..и у меня более 20 видов деятельности..Пожалуйста, предложите мне простой способ. –

+0

@DeepakSharma, вы правы. Настоящая боль с 20 видами деятельности. Вы все же можете создать метод для этой цели. –

+0

Есть ли способ в android сделать общий код для установки фона всего приложения? –

6

Вот способ установить один общий фон для вашего приложения, изменить его в соответствии с вашими требованиями

Сделайте ваш собственный стиль следующим образом:.

<style name="Background" parent="@android:style/Theme.NoTitleBar"> 
<item name="android:windowBackground">@android:color/black</item> 
<item name="android:windowNoTitle">true</item> 

Теперь в файле манифеста сделать так:

<application android:theme="@style/Background"/> 

Вот глобальным метод тематического Updation, вызовите этот метод с контекстом деятельности, прежде setContentView в каждой деятельности

государственного статического силы setTheme (контекст Context) {

SharedPreferences pref=context.getSharedPreferences("preference",0); 
    int position= pref.getInt("BackgroundPosition", 0); 

    switch (position) { 
    case 0: 

     context.setTheme(R.style.Background0); 

     break; 

    case 1: 

     context.setTheme(R.style.Background1); 

     break; 

    case 2: 

     context.setTheme(R.style.Background2); 

     break; 

    case 3: 
     context.setTheme(R.style.Background3); 
     break; 

    case 4: 
     context.setTheme(R.style.Background4); 
     break; 
    } 
} 

Благодаря

+0

как изменить его, когда значение в настройках будет изменено? – stinepike

+0

это не отвечает на вопрос ОП. –

+0

Yeah StinePike - это правильно. Я хочу изменить фон всего приложения программно после выбора конкретного изображения. –

0

ответ Ленивый Ninja, кажется, идти один. Но, как вы хотите, вы можете попробовать это.

Отказ от ответственности: Это просто экспериментальное решение. Раньше не пробовал. Поэтому перед внедрением необходимо быть уверенным.

Создайте базовую активность и продолжите всю свою деятельность, где вы можете установить корневую компоновку активности. Установите макет в oncreate там. В BaseActivity отключите onresume. в onresume установить accorind фоновое изображение для общего предпочтения настройки страницы, как Ninja предложил

Пример кода

public class BaseActivity extends Activity{ 

    private ViewGroup root; 
    onResume(){ 
     root.setBackgroundImage(); 
    } 

    public void setRoot(ViewGroup v){ 
     root = v; 
    } 

} 


class A extends BaseActivity{ 
    onCreate(Bundle b){ 
     .... 

     setRoot(pass the root view); 
    ...... 
} 
0

Я получил решение моего вопроса: -

public static void setHomeSafeTheme(Context context) { 

    SharedPreferences pref=context.getSharedPreferences(HomeSAFEPref.HomeSAFEPref,0); 
    int position= pref.getInt("BackgroundPosition", 0); 

    switch (position) { 
    case 0: 

     context.setTheme(R.style.Background0); 

     break; 

    case 1: 

     context.setTheme(R.style.Background1); 

     break; 

    case 2: 

     context.setTheme(R.style.Background2); 

     break; 

    case 3: 
     context.setTheme(R.style.Background3); 
     break; 

    case 4: 
     context.setTheme(R.style.Background4); 
     break; 
    } 
} 
Смежные вопросы