나는 그리드에 몇 개의 이미지를 가지고있다. [http://cdn.thenextweb.com/wp-content/blogs.dir/1/files/2013/06/jolla4.jpg][1]안드로이드 SurfaceView (캔버스) 다시 그리기를 제어하는 방법
대신 안드로이드의 GridView를 사용하여 : 는 다음과 같이 보이는 아이콘을 애니메이션화해야하기 때문에 저는 캔버스를 사용했습니다. 캔버스를 게임에 사용해야한다고 읽었습니다.
SurfaceView (스레드와 함께)를 사용하여 화면에 이미지를 그립니다.
class MySurface extends SurfaceView implements SurfaceHolder.Callback {
@Override
public void onDraw(Canvas canvas) {
//here i create the bitmaps and draw the icons on the screen.
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
thread.setRunning(true);
thread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
thread.setRunning(false);
while (retry) {
try {
thread.join();
retry = false;
} catch (InterruptedException e) {}
}
}
이 모두 정상적으로 작동합니다. Mysurface은 코드 내 주요 활동 내에서 호출됩니다
setContentView(new MySurface());
문제는 무작위로 다시 그려 된 서피스 뷰 SurfaceView의 캔버스입니다. 캔버스가 다시 그려지는 시간과 횟수를 결정할 수 있도록 해두 고 싶습니다. 주 활동 내에서 onDraw 기능을 호출하는 방법은 무엇입니까? 어떻게해야할지 모르겠다. 내가 스레드 알고
는
mySurface.onDraw (C)로 수행된다
invalidate()도 있습니다. 뷰를 다시 그리는 메소드입니다. "이것은 UI 스레드에서 호출해야합니다." – user2322791
onDraw에서 다시 호출해야한다고 알리기 위해 onDraw에서 invalidate가 호출됩니다. SurfaceView가 생성 한 스레드에 의해 호출됩니다. – neo