2016-01-20 185 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進行比較的適當方法。

您也可以創建一個布爾值並在您的偵聽器中檢查它是否爲false:將背景設置爲綠色並將布爾值設置爲true。同樣的事情,如果布爾值爲true:將背景設置爲紅色,布爾值設爲false。

0

謝謝,但我已經解決了這樣:

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

感謝所有DadoZolic。 我想知道最後一件事,除了改變背景之外,很容易添加不同的圖像?

+0

不同的圖像在哪裏?而不是顏色(紅色和綠色),您想要將背景更改爲圖像(意味着將膳食佈局背景設置爲圖像)? – DadoZolic

+0

非常感謝,但我設法做到了,只需添加:mimagen.setBackgroundResource(R.drawable.imagen1); 我不知道你是否是一名android程序員? –

+0

很高興你能工作。是的,我確實哈哈你爲什麼想知道? – DadoZolic