在这个简单的游戏中,我想改变我按下的按钮的背景颜色.但是我得到以下结果,按钮外观变得不好(形状变得不同):
pressedButton.setBackgroundColor(Color.RED);
有没有更好的方法呢?谢谢.
[编辑:我的完整代码]
package com.example.xo_game; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { Button[] btns; char[][] gameState = new char[3][3]; char turn = 'X'; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button[] btns = new Button[9]; btns[0] = (Button) findViewById(R.id.btn1); btns[1] = (Button) findViewById(R.id.btn2); btns[2] = (Button) findViewById(R.id.btn3); btns[3] = (Button) findViewById(R.id.btn4); btns[4] = (Button) findViewById(R.id.btn5); btns[5] = (Button) findViewById(R.id.btn6); btns[6] = (Button) findViewById(R.id.btn7); btns[7] = (Button) findViewById(R.id.btn8); btns[8] = (Button) findViewById(R.id.btn9); for (int i = 0; i < 9; i++) { btns[i].setTag(i); btns[i].setOnClickListener(clickListener); gameState[i / 3][i % 3] = 'E'; } } View.OnClickListener clickListener = new View.OnClickListener() { public void onClick(View v) { Button pressedButton = (Button) v; int indexOfPressedButton = Integer.parseInt(pressedButton.getTag() .toString()); int row = indexOfPressedButton / 3; int col = indexOfPressedButton % 3; if (gameState[row][col] != 'E') return; gameState[row][col] = turn; String turnAsString = String.valueOf(turn); pressedButton.setText(turnAsString); if (turn == 'X') { pressedButton.setBackgroundColor(Color.RED); turn = 'O'; } else { pressedButton.setBackgroundColor(Color.GREEN); turn = 'X'; } } }; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main,menu); return true; } }
解决方法
pressedButton.getBackground().setColorFilter(Color.RED,PorterDuff.Mode.MULTIPLY);