안드로이드 개발 질문/답변
(글 수 45,052)
package ex.Num;
import java.util.Random;
import android.app.Activity; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; import android.view.View; import android.view.View.OnClickListener;
public class Num extends Activity { private final int buttons[] = { R.id.bt1, R.id.bt2, R.id.bt3, R.id.bt4, R.id.bt5, R.id.bt6, R.id.bt7, R.id.bt8, R.id.bt9, R.id.bt10, R.id.bt11, R.id.bt12, R.id.bt13, R.id.bt14, R.id.bt15, R.id.bt16 };
private static final Button btn[] = new Button[16];
private final int var[] = {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8}; private final int idx[] = new int[16]; // 인덱스 영역 int tmp; int sw ; String temp; private Button bttmp; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
init(); }
public void init() { sw = 0; Random r = new Random();
for(int i=0; i<16; i++) { idx[i] = r.nextInt(15); // 인덱스영역은 난수로 초기화 }
for(int i=0; i<16; i++) { tmp = var[i]; var[i] = var[idx[i]]; var[idx[i]] = tmp; }
for(int i=0; i<16; i++) { btn[i] = (Button)findViewById(buttons[i]); btn[i].setOnClickListener(btnClick); btn[i].setText((var[i])+""); btn[i].setBackgroundColor(0xffffdbc1); btn[i].setTextSize(40); btn[i].setTextColor(0xffffdbc1); } }
public OnClickListener btnClick = new OnClickListener() { public void onClick(View v) { v.setBackgroundColor(0xffffaaff); if (sw == 0){ temp = ((TextView) v).getText().toString(); bttmp = (Button) v; sw = 1; } else if (sw == 1){ if(!(temp.equals(((TextView) v).getText().toString()))){ try { Thread.sleep(1000); } catch (InterruptedException e) {} bttmp.setBackgroundColor(0xffffdbc1); ((Button) v).setBackgroundColor(0xffffdbc1); } sw = 0; } } }; }
public OnClickListener btnClick = new OnClickListener() {
public void onClick(View v) {
v.setBackgroundColor(0xffffaaff);
if (sw == 0){
temp = ((TextView) v).getText().toString();
bttmp = (Button) v;
sw = 1;
}
else if (sw == 1){
if(!(temp.equals(((TextView) v).getText().toString()))){
try { Thread.sleep(1000); } catch (InterruptedException e) {}
bttmp.setBackgroundColor(0xffffdbc1);
((Button) v).setBackgroundColor(0xffffdbc1);
}
sw = 0;
}
}
};
}
이 부분에서 말이죠 순서대로 실행이 되야 되는데
속성값은 변하고 그것이 반영되는 시기의 문제로
1초 후에 색상이 변하네요..
v.setBackgroundColor(0xffffaaff);
이 함수가 UI에 적용되는 시기가
onClick함수를 빠져나가는 시점이라고 하네요
이 문제를 해결할수 있는 방법이 없을까요 ㅠㅠ