2016-01-20 3 views
1

У меня есть кнопка, которая, если вы держите телефон, вибрирует, и если он пройдет 1,5 секунды, измените цвет фона. Но я хочу, чтобы при нажатии первой кнопки изменился зеленый цвет, а если нажать второй раз, чтобы перейти на красный и т. Д. Со временем нажатия кнопки.Изменить фотовую кнопку фона нажмите

Мой код:

public class MainActivity extends Activity { 
    public static int MILISEGUNDOS_ESPERA = 1500; 
    private RelativeLayout mealLayout; 
    private ToggleButton toggle; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mealLayout = (RelativeLayout) findViewById(R.id.layout); 
     final Vibrator vibrator; 
     vibrator = (Vibrator) getSystemService(MainActivity.VIBRATOR_SERVICE); 
     Button btn = (Button) findViewById(R.id.button1); 
     btn.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       int action = event.getAction(); 
       esperarYCerrar(MILISEGUNDOS_ESPERA); 
       if (action == MotionEvent.ACTION_DOWN) { 
        vibrator.vibrate(1500); 
       } else if (action == MotionEvent.ACTION_UP) { 
        vibrator.cancel(); 
       } 
       return true; 
      } 
     }); 
    } 

    public void esperarYCerrar(int milisegundos) { 
     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       // acciones que se ejecutan tras los milisegundos 
       finalizarApp(); 
       cambiarcolor(); 
      } 
     }, milisegundos); 
    } 

    /** 
    * Finaliza la aplicación 
    */ 
    public void finalizarApp() { 
     mealLayout.setBackgroundColor(Color.RED); 
    } 
    public void cambiarcolor() { 
     ToggleButton button=(ToggleButton) findViewById(R.id.button1); 

     if (button.isChecked()) 
      mealLayout.setBackgroundColor(Color.GREEN); 
     else 
      mealLayout.setBackgroundColor(Color.RED); 
    } 
} 

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

+0

В чем проблема? – justDroid

+0

Хорошо, вот что он делает. Но в чем проблема? – Rohit5k2

+0

http://stackoverflow.com/a/2895650/5456493 скажите, работает ли он или нет? – Abhishek

ответ

0

В прослушивателе:

btn.setOnTouchListener(new OnTouchListener() { 
.... 
ColorDrawable color = (ColorDrawable) yourView.getBackground(); 
int colorId = color.getColor(); 

if(colorId == Color.GREEN) 
    mealLayout.setBackgroundColor(Color.RED); 
else if(colorId == Color.RED) 
    mealLayout.setBackgroundColor(Color.GREEN); 
else 
    //If not green or red set an optional color 
.... 

Попробуйте это. Единственное, о чем я не уверен, это сравнение с colorId и Color.x. Возможно, вам придется сравнить это по-другому. Попробуйте записать colorId, чтобы узнать, что он вам дает, и оттуда найти подходящий способ сравнить его с цветом Color.x.

Вы также можете создать логическое значение и в вашем слушателе проверить, является ли оно ложным: установить фон в зеленый цвет и установить значение boolean в true. То же самое, если логическое значение true: установите для фона значение red и boolean false.

0

Спасибо, но я решил так:

if (action == MotionEvent.ACTION_DOWN) { 
       esperarYCerrar(MILISEGUNDOS_ESPERA); 
       vibrator.vibrate(1500); 
      } else if (action == MotionEvent.ACTION_UP) { 
       vibrator.cancel(); 
      } 

Спасибо за DadoZolic. Я хочу знать одну последнюю вещь, кроме изменения фона, легко добавить другое изображение?

+0

Разное изображение где? Вместо цветов (КРАСНЫЙ и ЗЕЛЕНЫЙ) вы хотите изменить фон на изображение (это означает, что для фона imageLayout задано изображение)? – DadoZolic

+0

Большое спасибо, но мне удалось это сделать, просто добавьте: mimagen.setBackgroundResource (R.drawable.imagen1); Интересно, работаете ли вы в качестве программиста для Android? –

+0

Рад, что вам нужно работать. Да, я ха-ха, почему ты удивляешься? – DadoZolic

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