0

我試圖類同下面的圖片創造的東西:創建按鈕,添加事件,並加入了一些動畫

Pic

當我點擊按鈕1:

  • 廣場2顯示字體「h」和藍色背景,
  • 廣場3顯示字體「e」和藍色背景,
  • 廣場4顯示字體「l」和藍色背景,
  • 平方5顯示字體「l」和藍色的背景,
  • 平方6顯示字體「○」和藍色背景,

在方沒有2,3,4,5的字體和背景,順序出現6。

,當我點擊正方形2,則:

  • 平方3顯示字體 「E」 和紅色背景,
  • 平方4顯示字體 「L」 和紅色背景,
  • 的方5顯示字體「L」和紅色背景,
  • 平方6顯示字體「O」和紅色背景,

在方沒有3,4,5,6的字體和背景依次出現。

和同樣的事情發生了,當我點擊另一個square.example當我點擊廣場有3個,則:

  • 廣場2顯示字體「H」和紅色的背景,
  • 廣場4顯示字體「升」和藍色背景,
  • 平方5顯示字體 「l」 和藍色的背景,
  • 平方6顯示字體 「○」 和藍色背景,

字體和正方形背景中沒有2,4,5,6順序出現。

有沒有一種方法可以在不使用opengl的情況下在Android應用程序中執行此操作?

編輯:

通過順序我的意思是在順序和加入每平方一些延遲(如1秒)

字體 「H,E,L,L,o」 和「H,E,L ,L,O「存儲在Array中。

+0

關於單個按鈕的字體和背景更改,它們應該只顯示新值? – Luksprog

+0

@Luksprog是的值存儲在數組中。 – naonweh

+0

您可以輕鬆地使用「Handler」以目標時間間隔發佈文本和後臺更新。 – Luksprog

回答

0

正如我在我的評論中所說,你可以用Handler在適當的時間發佈適當的Runnable對象。

Handler handler = new Handler(); // the handler 
String[] text = { "h", "e", "l", "l", "o" }; // the text 
TextView[] views = new TextView[5]; // the views 2, 3, 4, 5, 6 

當我點擊按鈕1:

的代碼,你可以使用:

button1.setOnClickListener(new OnClickListener() { 

     int counter = 0; // needed so we know where we are in the arrays 

     @Override 
     public void onClick(View v) { 
      handler.postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        // when this Runnable is done we set the background 
        // color, the text, update the counter(to update the 
        // next TextView) and repost the same variable 
        views[counter].setBackgroundColor(Color.BLUE); 
        views[counter].setText(text[counter]); 
        views[counter].setTextColor(Color.WHITE); 
        counter++; 
        if (counter < views.length) { 
         handler.postDelayed(this, 1000); // keep it in the 
                  // arrays bounds 
        } else { 
         handler.removeCallbacks(this); // we finished 
                 // iterating over 
                 // the arrays so 
                 // reset stuff and 
                 // remove the 
                 // Runnable 
         counter = 0; 
        } 
       } 

      }, 1000); // 1 second delay! 
     } 
    }); 

,當我點擊廣場2,則:

這基本上是同樣的事情上面,你只需要確保你不更新引發變化的觀點:

// set as the tag for the 2,3,4,5,6 views their position in the array 
for (int i = 0; i < views.length; i++) { 
    views[i].setTag(i); 
    views[i].setOnClickListener(mListener); 
//... 

您可以使用標籤和計數器只更新正確的觀點:

OnClickListener mListener = new OnClickListener() { 

     int counter = 0;// needed so we know where we are in the arrays 

     @Override 
     public void onClick(View v) { 
      final int whichOne = (Integer) v.getTag(); // gett he views 
                 // position in the 
                 // arrays 
      // check if we clicked 2 
      if (counter == whichOne) { 
       counter++; 
      } 
      handler.postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        // on every iteration check to see if we aren't trying 
        // to update the view that was actually clicked 
        // if it's the view that was clicked then increment the 
        // counter 
        if (counter == whichOne) { 
         counter++; 
        } 
        views[counter].setBackgroundColor(Color.RED); 
        views[counter].setText(text[counter]); 
        views[counter].setTextColor(Color.WHITE); 
        counter++; 
        if (counter < views.length) { 
         handler.postDelayed(this, 1000); 
        } else { 
         handler.removeCallbacks(this); 
         counter = 0; 
        } 
       } 

      }, 1000); 
     } 
    };