Android;изменить фон макета / экрана, нажав кнопку - PullRequest
1 голос
/ 07 января 2012

Итак, у меня есть несколько кнопок, и я хочу, чтобы фон экрана приложения менялся в зависимости от того, на какую кнопку я нажимаю.Поэтому, если я нажимаю кнопку с надписью «синий», фон меняется на указанное изображение, которое я создал в папке res.Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 07 января 2012

в вашем onCreate() методе получите ваш Views вот так:

rootLayout = (LinearLayout) findViewById(R.id.rootLayout);
btnBlue = (Button) findViewById(R.id.btnBlue);
btnRed = (Button) findViewById(R.id.btnRed);
btnGreen = (Button) findViewById(R.id.btnGreen);

и установите onClickListener на всех кнопках следующим образом:

btnRed.setOnClickListener(this);
btnGreen.setOnClickListener(this);
btnBlue.setOnClickListener(this);

и переопределить метод onClick() следующим образом:

@Override
public void onClick(View v){
  Drawable background = null;
  switch(v.getId()){
     case R.id.btnBlue :drawable = getResources().getDrawable(R.drawable.imageBlue); break;
     case R.id.btnRed : drawable = getResources().getDrawable(R.drawable.imageRed); break;
     case R.id.btnGreen : drawable = getResources().getDrawable(R.drawable.imageGreen); break;
   }
rootLayout.setBackgroundDrawable(background);
}
2 голосов
/ 07 января 2012

Чтобы изменить изображение с помощью кода

public void onClick(View v) {
if(v==ButtonName)
ButtonName.setImageResource(R.drawable.ImageName); 
}

или с помощью XML-файла

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"
   android:drawable="@drawable/login_selected" /> <!-- pressed -->
<item android:state_focused="true"
   android:drawable="@drawable/login_mouse_over" /> <!-- focused -->
<item android:drawable="@drawable/login" /> <!-- default -->

OnClick просто добавьте этот код

ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName))

Даже если вы хотите, чтобы яфон для рисования, вот он:

android:background="@drawable/ImageName"

Теперь вы можете объединить их

...