2014-02-23 4 views
0

페인트 응용 프로그램과 비슷한 응용 프로그램을 개발하려고합니다.android에서 SurfaceView를 사용하여 다시 실행 및 실행 취소

나는 사용자가 을 다시 실행하거나 canvas 이상 작업을 실행 취소 수행 할 수 있도록합니다. 많이 찾았지 만 redo 에 대해 설명하고 Circle, Rectangle 등에 대한 작업을 취소하는 예제는 찾을 수 없습니다. 대부분의 자습서에서는 Lineo에 대해 다시 실행 및 실행 취소에 대해 설명합니다.

도움이 될 것입니다.

+0

다음과 같이 생각하면 전화를 실행할 때마다 스택을 통해 모든 작업 (선, 원, 사각형 등)을 중앙 집중화합니다. 액션을 다른 스택에 넣기 (재실행) – rkmax

+0

[HTML5 Canvas tutorial] (http://www.codicode.com/art/undo_and_redo_to_the_html5_canvas.aspx) 이것은 HTML5 캔버스를 사용한 예이며 Android 캔버스를 이해하고 적용하려고합니다. 안드로이드에서 캔버스로 작업하지 않았습니다. – rkmax

답변

1

모든 작업을 목록에 저장 한 다음 무언가를 실행 취소하려면 목록에 마지막으로 넣은 것을 제거하십시오. 연결된 목록이나 스택이 작동합니다.

의사 코드

Stack<Action> operations=new Stack<Action>(); 
Stack<Action> redos=new Stack<Action>(); 

때마다 사용자가 수행 한 일이 취소

redoes.push(operations.pop()); 

에 대한

operations.push(new Action(actiontype,ccoordinates)); 

는 다시 실행 할

operations.push(redos.pop()); 

및 onDraw() 메서드에서 해당 작업을 모두 그립니다 ...