これが私の最初の質問です、私はそれを正しくやることを願っています。特定の間隔でいくつかのボタンの色を変更する必要があります。
setBackgroundメソッドを使用するとボタンが見苦しく見えるため、Colorfilterを使用してこれを行うことにしました。
問題は次のとおりです。Runnable内でColorFilterを設定すると、機能しません。
ただし、onCreateまたはclickメソッドでのColorFilterの設定は機能しています。そして:Runnable内でsetBackgroundColorを使用してBackgroundColorを設定することは機能しています。
言及するのを忘れました。Android4.1ではエミュレーターで実行し、2.3.3では実行しない場合は、すべて正常に機能します。
何か案は?これがコードです
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
int counter = 0;
Button b = null;
final Handler handler = new Handler();
final Runnable doit = new Runnable() {
public void run() {
if ( counter % 2 == 0) {
b = (Button) findViewById(R.id.button1);
b.setBackgroundColor(0xffff0000); // working
//b.getBackground().setColorFilter(0xFFD2691E, PorterDuff.Mode.MULTIPLY); // doesnt work
}
else {
//b.getBackground().clearColorFilter();
b.setBackgroundColor(0xff00ff00);
}
counter++;
}
};
public void click(View view) {
// configure timer 1
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
handler.post(doit);
}
};
timer.schedule(task, 1111, 1111);
}
}