마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

canvas내부에 timer구현 재질문입니다.

0 추천
canvas내용을 바꾸는 timer를 구현하고 있는데요.

 

구조는

Activity{

  onCreate {

    new MyView;

  }

  MyView {

    여기서 canvas 만듬.

    }

}

 

이렇게 되있는곳에 timer를 구현하려고 합니다.

timer에서 global변수를 증가시켜서 canvas를 다시 그리는 형태를 구현하려는거구요.

 

그래서..

 
Activity{

  onCreate {

    new MyView;

    new moveThread;

  }

  MyView {

    여기서 canvas 만듬.

    moveThread {

      run {

        while(true) {

           global변수 증가.

           핸들러 호출후 1초기다림

        }

      }

    }

    handler {

      handleMessage {

        invalidate();

      }

    }

}

 

이런식으로 구현을 하려고 보니까..

MyView안에 스레드가 있어서

onCreate에서 선언을 할 수가 없더라구요

 

MyView 밖으로 빼서 구현을 해볼까 하고 보니..

invalidate()을 사용할 수가 없네요.

 

어떻게 구현할수 있을지 조언좀 부탁드립니다.
도꼬비 (900 포인트) 님이 2013년 12월 4일 질문

2개의 답변

0 추천
 
채택된 답변
MyView 객체에서 invalidate() 를 호출하면 될텐데요.

 

MyView myView; 를 activity 맴버 변수로두고

onCreate에서

myView = new MyView(this); 생성한뒤

사용하고 싶은곳에서

myView.invalidate();
얼룩돼지 (15,720 포인트) 님이 2013년 12월 4일 답변
도꼬비님이 2013년 12월 5일 채택됨
아아... 그런 간단한 방법이...!
많은 도움이 됬습니다. 감사합니다!
0 추천
Handler handler = new Handler() {

    public void handlerMessage(Message msg) {

         hadler.sendEmptyMessageDelayed(0, 딜레이 시간 );

        invalidate();

     }

};
백호랑 (140 포인트) 님이 2013년 12월 5일 답변
...