에서 이미지의 좌표 위치를 변경
를 타이머를 사용 Graphics.pushContext (..) 클리핑 영역과 그리기 오프셋을 푸시합니다. 최상의 결과를 얻으려면 runnable에서 전환을 수행하고 이벤트 잠금에 동기화해야합니다. 이렇게하면 전환 도중에 화면을 닫을 수 있습니다.
거친 예 :
class TransitionScreen extends Screen {
private int transitionOffset;
private boolean isTransitionHorizontal;
private ScreenTransition currentTransition;
public TransitionScreen(boolean isTransitionHorizontal) {
this.isTransitionHorizontal = isTransitionHorizontal;
transitionOffset = getTransitionMaximum(); // So the screen starts offset
}
protected void paint(Graphics graphics) {
// use transitionOffset as x or y depending on isTransitionHorizontal
graphics.pushContext(...);
}
protected void onExposed() {
transitionToOffset(0);
}
protected void onObscured() {
int target = getTransitionMaximum();
transitionToOffset(target);
}
private int getTransitionMaximum() {
return isTransitionHorizontal ? Display.getWidth() : Display.getHeight();
}
private void transitionToOffset(int target) {
if (currentTransition != null) {
currentTransition.stop();
}
currentTransition = new ScreenTransition(target);
getApplication().invokeLater(currentTransition);
}
}
class ScreenTransition implements Runnable {
private boolean animating;
private int target;
public ScreenTransitionUpdater(int target) {
this.target = target;
}
public void stop() {
animating = false;
}
public void run() {
while(animating) {
Object eventLock = getApplication().getEventLock();
synchronized(eventLock) {
// Interpolate myOffset to target
// Set animating = false if myOffset = target
invalidate();
}
}
}
}
가이 플랫폼에서 무시됩니다뿐만 휘발성 애니메이션을 표시 할 필요가 없습니다.
답변을 주셔서 감사합니다. 다른 사람들도 도움이 될만합니다. – dickyj