앱을 돌리면 시작과 동시에 이미지들이 랜덤 배열돼서 끊임없이 움직이고 해당 이미지를 누르면 score가 1씩 증가하도록 하였습니다. 그리고 타이머 기능을 추가했는데 앱을 돌리면 타이머는 잘 작동되는데 이미지가 안나오네요 .. 어떤 부분을 수정봐야 할지 모르겠어서 이렇게 질문 드립니다..
그리고 아예 해당 부분을 타이머 시작 버튼을 누르면 이미지 출력되도록 하고 싶어 startTimer() 안으로 넣어보려고 수정했는데 더 오류가 커져서 ;; 일단은 이렇게 뒀습니다 ㅠ 작성한 java코드입니다. (full코드는 용량 때문에 댓글로 달았습니다 )
public class MainActivity extends AppCompatActivity {
ArrayList<Point> list; //Point pos;
int score = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mTimerRunning) {
pauseTimer();
} else {
startTimer();
}
}
});
class MyView extends View {
public MyView(Context context) {
super(context);
new Thread() {
@Override
public void run() {
super.run();
while (score <= 20) {
SystemClock.sleep(2000);
invalidate();
}
}
}.start();
}//MyView()
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
Paint paint = new Paint();
paint.setTextSize(100);
paint.setColor(Color.rgb(100, 100, 0));
DisplayMetrics metrics = getResources().getDisplayMetrics();
int dWidth = metrics.widthPixels;
int dHeight = metrics.heightPixels; //note
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.donut2);
bitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true);
Random random = new Random();
list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Point pos = new Point(random.nextInt(dWidth), random.nextInt(dHeight));
list.add(pos);
}
canvas.drawText("score: " + score, 100, 100, paint);
for (Point pos : list)
canvas.drawBitmap(bitmap, pos.x, pos.y, paint);
}//draw()
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
for (Point pos : list) {
if ((event.getX() >= pos.x && event.getX() <= pos.x + 200)
&& (event.getY() >= pos.y && event.getY() <= pos.y + 200)) {
score++;
}
}
break;
default:
break;
}
return true;
}//onTouchEvent()
}
}