2017-02-02 18 views
-2

アンドロイド開発に関する質問があります。私は画面の色を赤から青、そして緑に変えるアプリを作ろうとしています。私はrelativeLayoutにonClickListenerを設定して、画面を白から赤に変えます。同じonClickListenerを複数の順序で実行するにはどうすればいいですか?一度画面をクリックすると赤に変わり、もう一度クリックすると画面が青に変わります。ボタンを複数のものにする方法を教えてください。

ここは私のコードですこれまでのところ:

final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view); 

    layout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      layout.setBackgroundColor(Color.parseColor("#ff0000")); 
     } 
    }); 
+1

これを達成するには複数の方法がありますが、1つの方法は状態を維持することです。一度クリックすると状態をその色に設定し、再度クリックすると状態を確認してそれに応じて反応します。たとえば、stateは 'enum'(赤、青、緑)になります。最初のクリックで、赤に設定します。もう一度クリックすると状態がチェックされ、適切な色に設定されます。 – Dayan

答えて

1

トラックをクリックしてください。このように

private int colorState =0; 

    final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view); 

     layout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
    switch(colorState){ 
     case 0: 
      layout.setBackgroundColor(Color.parseColor("#ff0000")); 
      break; 
     case 1: 
      layout.setBackgroundColor(Color.parseColor("#000000")); 
      break; 
     case 2: 
      layout.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      break; 

     colorState++; 
    } 
+0

'colorState'をデフォルトの値として0にリセットすると便利です。それ以外の場合、このコードは値が2を超えたときには機能しません。 –

+0

実装したい方法までです。その単なる例:D –

2

希望する色のリストを配列に格納します。そのような各クリック後に現在の色指標と増分を追跡します:

final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view); 

layout.setOnClickListener(new View.OnClickListener() { 
    String[] colors = new String[]{"#ff0000", "#00ff00", "#0000ff"}; 
    int colorIndex = 0; 

    @Override 
    public void onClick(View view) { 
     String color = colors[colorIndex]; 
     colorIndex = colorIndex++ % colors.length; 
     layout.setBackgroundColor(Color.parseColor(color)); 
    } 
}); 

剰余演算子(%)は、我々は、配列の終わりを越えインデックスを保証しません。

関連する問題