Android 기술 Q&A 
Q&A 게시판에 질문을 남기신 글에 대한 답변/덧글/쪽글에 대한 Push 메일 서비스를 받고자 하시는 분들은
☞ Push 메일 서비스 공지를 필독하시기 바랍니다.
사로자바님예제소스 제컴터에서 실행이안되요
작성자
작성일 2009-01-14 (수) 09:40
ㆍ추천: 0  ㆍ조회: 9122      
IP: 118.xxx.72
안드로이드 코드 및 팁에있는 사로자바님이 올려주신 나선그리기 소스입니다.
근데 제가 이 소스를 다운받아서 실행하려고 하니까 밑에 색깔놓은 부분이 계속 에러가 뜨는데 왜그런지 이유를 모르겠네요..
왜 그런지  아시는분들 쫌 가르쳐주세요,ㅜㅜ;
 
package com.sarojaba.polyspiral;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Polyspiral extends Activity {
 private static final String TAG = "Polyspiral";
 private MyCanvas myCanvas;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
  // 캔버스를 생성한다.
  myCanvas = new MyCanvas(this);
  
  // 버튼에 리스너를 등록한다.
  Button bOk = (Button) findViewById(R.id.ok);
  bOk.setOnClickListener(new OKButtonListener());
 }
 public class OKButtonListener implements View.OnClickListener {
  @Override
  public void onClick(View view) {
   if (view instanceof Button) {
    Log.d(TAG, "OKButtonListener.onClick()");
    
    // 각 객체를 얻어온다.
    EditText etX = (EditText) findViewById(R.id.x);
    EditText etY = (EditText) findViewById(R.id.y);
    EditText etDeg = (EditText) findViewById(R.id.deg);
    EditText etLen = (EditText) findViewById(R.id.len);
    EditText etDec = (EditText) findViewById(R.id.dec);
    try {
     // 문자열을 숫자로 변환
     int x = Integer.parseInt(etX.getText().toString());
     int y = Integer.parseInt(etY.getText().toString());
     double deg = Double.parseDouble(etDeg.getText().toString());
     double len = Double.parseDouble(etLen.getText().toString());
     double dec = Double.parseDouble(etDec.getText().toString());
     // 얻어온 초기값을 이용하여 캔버스에 polyspiral을 그린다.
     myCanvas.drawPolyspiral(x, y, deg, len, dec);
     // 화면을 캔버스로 변경한다.
     setContentView(myCanvas);
    } catch (NumberFormatException e) {
     // 잘 못 입력되었으면 에러 메시지를 표시한다.
     Toast t = Toast.makeText(Polyspiral.this,
       "Incorrect input value", Toast.LENGTH_SHORT);
     t.show();
    }
   }
  }
 }
 public class MyCanvas extends View {
  private Turtle mTurtle; // 발에 페인트를 묻힌 거북이
  private double mDegree; // 회전할 각도
  private double mInitLength; // 초기의 이동 거리
  private double mDecrement; // 이동 거리의 감소값
  private Paint mPaint; // 페인트
  public MyCanvas(Context context) {
   super(context);
   // 그냥 검은색 페인트
   mPaint = new Paint();
  }
  /**
   * polyspiral을 그린다.
   *
   * @param x
   *            시작 위치의 x 좌표
   * @param y
   *            시작 위치의 y 좌표
   * @param degree
   *            회전할 각도
   * @param length
   *            초기의 이동 거리
   * @param decrement
   *            이동 거리의 감소값
   */
  public void drawPolyspiral(int x, int y, double degree, double length,
    double decrement) {
   mTurtle = new Turtle(x, y);
   mDegree = degree;
   mInitLength = length;
   mDecrement = decrement;
  }
  @Override
  protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   // 배경을 흰색으로 덮는다.
   canvas.drawColor(Color.WHITE);
   // polyspiral을 그린다.
   if (mTurtle != null) {
    while (mInitLength > 0) {
     // 이동하고
     mTurtle.forward(mInitLength, canvas);
     // 방향 바꾸고
     mTurtle.turn(mDegree);
     // 이동 거리 감소
     mInitLength -= mDecrement;
    }
   }
  }
  public class Turtle {
   // 각도를 라디안으로 변환하는 상수값
   public static final double RAD_PER_DEG = 0.017453393;
   private Point mCurrentPoint; // 현재 좌표
   private double mCurrentDirection; // 현재 방향
   /**
    * @param x
    * @param y
    */
   public Turtle(int x, int y) {
    mCurrentPoint = new Point(x, y);
   }
   public Turtle(int x, int y, double degree) {
    this(x, y);
    mCurrentDirection = degree;
   }
   public Point getCurrentPoint() {
    return mCurrentPoint;
   }
   public double getCurrentDirection() {
    return mCurrentDirection;
   }
   /**
    * 현재 방향에서 오른쪽으로 돈다.
    *
    * @param degree
    *            회전할 각도
    */
   public void turn(double degree) {
    mCurrentDirection += degree;
   }
   /**
    * 앞으로 이동한다.
    *
    * @param distance
    *            이동할 거리
    * @return 이전 좌표
    */
   public Point forward(double distance) {
    // 이전 좌표
    Point pre = new Point(mCurrentPoint);
    // 새로운 좌표를 계산한다.
    int x = mCurrentPoint.x
      + (int) (distance * Math.cos(mCurrentDirection
        * RAD_PER_DEG));
    int y = mCurrentPoint.y
      + (int) (distance * Math.sin(mCurrentDirection
        * RAD_PER_DEG));
    // 새로운 좌표로 이동한다.
    mCurrentPoint.set(x, y);
    // 이전 좌표 반환
    return pre;
   }
   /**
    * 캔버스에 발자취을 남기면서 이동한다.
    *
    * @param distance
    *            이동할 거리
    * @param canvas
    *            발자취을 남길 캔버스
    * @return 이전 좌표
    */
   public Point forward(double distance, Canvas canvas) {
    Point pre = forward(distance);
    // 캔버스에 발자취를 남긴다.
    canvas.drawLine(pre.x, pre.y, mCurrentPoint.x, mCurrentPoint.y,
      mPaint);
    return pre;
   }
  }
 }
}
이름아이콘 사로자바
2009-01-14 19:09
혹시 JDK 버전이 1.5가 아닌가요?
Override 어노테이션이 1.5에서는 클래스 상속때 오버라이드만 되는듯...
1.6 이상되야 인터페이스 구현때 오버라이드 어노테이션이 되는것 같아요...
JDK를 1.6으로 바꾸시던지 @Override 어노테이션을 빼보세요...
혹시 이게 아니라면;; 에러 메시지도 함께 올려주시면 감사하겠습니다. ㅋㅋ
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
    N     분류     제목    글쓴이 작성일 조회
4553 안드로이드 포팅 질문입니다. 2009-01-13 8097
4552 안드로이드 초보자인데..가계부프로젝트하나 만들고 있거든요... 2009-01-13 9132
4551 폴더에서 이미지파일을 불러오고 싶습니다. 2009-01-13 10608
4550 camera 영상 위에 텍스트 또는 이미지의 overlay 2009-01-13 12394
4549 emulator android browser에서 다운로드 관련 문제 2009-01-13 7844
4548 ScrollView 가로(horizontal) 스크롤바 동작하나요? 2009-01-13 13116
4547 웹상에 있는 image를 나타내고 싶은데요 2009-01-13 8154
4546 binder patch를 어떻게 하는지요? 2009-01-13 7898
4545 Re..웹상에 있는 image를 나타내고 싶은데요 2009-01-13 9364
4544 사로자바님예제소스 제컴터에서 실행이안되요.. 2009-01-14 9122
4543 G1 phone settings > About phone 메뉴 확인부탁 2009-01-14 7630
4542 tty; Job control 2009-01-14 8393
4541 XML 이용한 Layout관하여 질문드립니다. 2009-01-14 9115
4540 Default buffer size used in BufferedInputStream constructor. 2009-01-14 11116
4539 framework에서 다른 activity 띄우는 방법 문의 2009-01-15 8088
4538 이이콘으로 GIF파일 지원안되나요? 2009-01-15 8504
4537 database 접근법에 대해서 여쭤볼게 있습니다. 2009-01-15 8562
4536 G1 구글 액티베이션 가능한 분 없으신가요? 2009-01-15 8173
4535 NetComponents를 이용해 FTP 구현시 서버의 특정 파일에 대한 .. 2009-01-15 9836
4534 [Q] SD 부팅관련 2009-01-15 8123
4533 G1 사용하기 위해서라면...? 2009-01-16 7317
4532 하나의 Activity에 2개 이상의 media player를 넣는게 가능할.. 2009-01-16 9059
4531 안드로이드 기본 app 수정 후 빌드 시 android.jar에 없는 클.. 2009-01-16 11584
4530 Android Marget 질문 2009-01-16 7499
4529 안드로이드 App은 안드로이드 마켓에 올리거나 배포할때 dex .. 2009-01-16 8572
4528 안드로이드 포팅에 대해 질문.. 2009-01-16 8097
4527 안드로이드 해상도 조절 질문있습니다. 2009-01-16 10240
4526 [문의] 터치 관련하여 질문 드립니다. 2009-01-16 11818
4525 커널 컴파일에 관한 질문입니다. 2009-01-16 8740
4524 안드로이드 포팅하시는 분들은... 2009-01-16 7938
4523 XML UI 2009-01-17 7891
4522 안드로이드 S/W 테스트 2009-01-17 8109
4521 안드로이드 Application 인스톨방법 문의 2009-01-18 9227
4520 manifest관련 질문 입니다. 2009-01-19 7969
4519 background로 보내진 activity 불러오기? 2009-01-19 12759
4518 커널 컴파일 질문. 2009-01-19 9603
4517 r.java 파일이 자동으로 수정이 안되요- 2009-01-19 8558
4516 DB의 한글 데이터 출력중에 한글이 깨집니다!! 2009-01-19 8158
4515 Re..DB의 한글 데이터 출력중에 한글이 깨집니다.. 2009-01-20 12879
4514 arm cortex core CPU에도 안드로이드를 포팅 할수있나요?.. 2009-01-20 8513
4513 2.6.21 커널 위에서 안드로이드 실행 시키기? 2009-01-20 8078
4512 resource 수정후 컴파일 에러 2009-01-20 11612
4511 preload app관련 질문입니다. 2009-01-20 11288
4510 커널 컴파일 질문[리눅스 어렵워요 ㅇ.ㅇ; ] 2009-01-20 8593
4509 text or image 이동 2009-01-20 10606
4508 상용화된 App의 업데이트는 어떻게 이루어지나요?.. 2009-01-20 8172
4507 안드로이드에서 Flash Lite포팅관련 질문(공유메모리, JNI).. 2009-01-21 10568
4506 부트로더 라이센스 질문. 2009-01-21 7812
4505 sqlite expert를 사용해서 DB를 만들었는데 이걸 안드로이드 .. 2009-01-21 11605
4504 G1 unlock 문제 ㅠ ㅠ 2009-01-21 8259
12345678910,,,101