2016-11-20 5 views
0

Я пытаюсь сделать приложение, похожее на Саймона Саиса. Я хочу, чтобы каждая кнопка загоралась, а затем затемнялась одна за другой, когда воспроизводится последовательность. Прямо сейчас он будет светлее, а затем затемнет кнопку, только если она будет последней в последовательности. При нажатии кнопки, не последний в последовательности он будет просто остаться с альфой 1.Android-приложение, изменение цвета кнопок с рисунка?

This GIF is me playing the first couple turns.

Вот мой код:

public void playSequence() { 
     for (int i = 0; i < sequence.size(); ++i) { 
      spot = 0; 
      cbutton = (Button) sequenceb.get(sequence.get(i)); 
      cbutton.setAlpha((float) 1.0); 

      final Handler handler1 = new Handler(); 
      handler1.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        cbutton.setAlpha((float) 0.35); 
       } 
      }, 500); 
     } 
    } 

Я не знаю, если вы, ребята, нужно чтобы увидеть что-нибудь еще из моего кода, так как я думаю, что это просто логическая проблема. Переменная «sequence» представляет собой ArrayList с ints, которые ссылаются на какой фрагмент в последовательности, а «sequenceb» ссылается на ArrayList со ссылками на кнопки с доски в нем.

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

+0

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

ответ

0

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

public void playSequence() { 
     System.out.println("Sequence Size: " + sequence.size() + ", Spot: " + spot); 
     spot = 0; 
     cbutton = (Button) sequenceb.get(sequence.get(spot)); 

     LightRunnable lRun = new LightRunnable(10); 
     Thread lt = new Thread(lRun); 
     lt.start(); 

     toggleButtons(true); 
    } 

public class DarkRunnable implements Runnable { 
    private int var; 

    public DarkRunnable(int var) { 
     this.var = var; 
    } 

    @Override 
    public void run() { 
     try { 
      ++spot; 
      Thread.sleep(250); 
      cbutton.setAlpha((float) 0.35); 
      System.out.println("Darkening Tile: " + cbutton.getTag()); 
      Thread.sleep(10); 
      fixAlphas((float) 0.35); 
      if(spot < sequence.size()) { 
       cbutton = (Button) sequenceb.get(sequence.get(spot)); 
       LightRunnable lRun = new LightRunnable(10); 
       Thread lt = new Thread(lRun); 
       lt.start(); 
      } 
     } catch(Exception e) {} 
    } 
} 

public class LightRunnable implements Runnable { 
    private int var; 

    public LightRunnable(int var) { 
     this.var = var; 
    } 

    @Override 
    public void run() { 
     try { 
      Thread.sleep(250); 
      cbutton.setAlpha((float) 1.0); 
      System.out.println("Lightening Tile: " + cbutton.getTag()); 
      DarkRunnable dRun = new DarkRunnable(10); 
      Thread dt = new Thread(dRun); 
      dt.start(); 
     } catch (Exception e) {} 
    } 
}