안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요~~!!
이제막안드로이드공부를 시작하는 학생입니다.
제가 안드로이드를 통해 사다리게임을 만들려고 하는데 너무 막막하네요.
죄송하지만 조금 조언을 부탁드려도 될까요??
그저 막연하게 |, ㅡ 모양의 image 의 조합으로 만들수 있지 않을까 생각했는데..
도저히 어떻게 그림을 그리고, 한참 뒤의 일이 되겠지만 어떻게 세로 가로를 따라가야할지
그저 막막하기만 하네요.ㅠㅠ
직선을 그려서 그 좌표를 이용해서 해야 할지 아니면 그림으로도 가능할지
여부만이라도 ㅠㅠ
2009.06.07 03:05:27
(추천:
1 / 0)
선 그려서 해도 되고, 이미지를 이용해서 그려도 됩니다.
물론 예쁘게 보이게 하는 측면에서는 이미지를 이용하는 편이 더 좋겠지요.
단순한 구현 예를 들어보면,
사다리 게임판을 2차원 배열로 생각할 수 있습니다.
각 칸은 세로 막대기, 세로로 내려가다가 오른쪽으로 연결되는 것, 왼쪽으로 연결되는 것 등으로 분류할 수 있습니다.
배열의 각 항목에는 위 분류 중 하나의 값이 들어가겠고요.
화면을 그릴 때, 배열을 순환하면서 각 칸에 맞는 그림을 화면에 그려주면 됩니다.
나중에 따라가기를 할 때는 배열을 한 칸씩 따라가면서 아래로 내려오면 되고요.
2009.06.07 15:12:47
감사합니다.
너무 기본적인 부분도 아직 안되고 있어서 질문하기 민망하지만..ㅠㅠ
그러면 이미지를 그리는 부분의 소스는 .java 파일이겠죠??
.xml 파일에서는 정적인 이미지만 가능하기 때문에 그렇게 될 거 같은데..
ImageView image = ImageView(this);
image.setImageResource(R.drawable.image_name);
setContentView(image);
이렇게 기본적으로 이미지를 출력하는데;;
이런식으로 이미지를 한 화면에 두개를 그리려고 하면..
ImageView image2 = ImageView(this);
image2.setImageResource(R.drawable.image_name2);
setContentView(image2);
이런식의 코드를 추카가면 두번째의 이미지만 에뮬레이터에 표시되더라구요.
좌표를 이용해서 이미지를 어떻게 넣어야 하는지 잘 모르겠네요.
정말 너무 기본적인 질문이라 어이 없으시겠지만..ㅠㅠ 다시한번 부탁 조언 부탁드립니다.
너무 기본적인 부분도 아직 안되고 있어서 질문하기 민망하지만..ㅠㅠ
그러면 이미지를 그리는 부분의 소스는 .java 파일이겠죠??
.xml 파일에서는 정적인 이미지만 가능하기 때문에 그렇게 될 거 같은데..
ImageView image = ImageView(this);
image.setImageResource(R.drawable.image_name);
setContentView(image);
이렇게 기본적으로 이미지를 출력하는데;;
이런식으로 이미지를 한 화면에 두개를 그리려고 하면..
ImageView image2 = ImageView(this);
image2.setImageResource(R.drawable.image_name2);
setContentView(image2);
이런식의 코드를 추카가면 두번째의 이미지만 에뮬레이터에 표시되더라구요.
좌표를 이용해서 이미지를 어떻게 넣어야 하는지 잘 모르겠네요.
정말 너무 기본적인 질문이라 어이 없으시겠지만..ㅠㅠ 다시한번 부탁 조언 부탁드립니다.
2009.06.07 20:45:36
(추천:
1 / 0)
우선, ImageView는 말씀하신 용도로 쓰기에는 좋지 않아요.
구현 방식이야 여러 가지가 있겠지만, 이렇게 해보시는게 어떨까 싶네요.
1. View를 상속받는 새로운 클래스를 하나 정의합니다. 이를테면 LadderView라는 것을 만든다고 가정할게요.
2. onCreate에서 setContentView를 부를 때, R.layout.main 대신 1에서 만든 클래스의 인스턴스를 넣습니다.
//setContentView(R.layout.main);
setContentView( new LadderView( this ) );
이런 식이 되겠네요.
이러면, 전체 화면을 LadderView가 덮습니다.
3. LadderView에서 onDraw() 메서드를 오버라이드해서, 그리고 싶은 내용을 그립니다.
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawColor( Color.WHITE );
Paint paint = new Paint();
paint.setColor( Color.BLACK );
for ( int i = 0; i < 10; ++i )
{
canvas.drawLine( i * 40, 0, i * 40, 200, paint );
}
}
이런 식이 되겠네요.
위 코드는 화면을 일단 하얀색으로 칠한 다음, 40픽셀 간격으로 세로선을 10개 그리는 것입니다.
이미지로 하실 때는, 각각의 이미지를 Drawable 오브젝트로 가지고 있다가 setBounds()로 좌표를 지정하고 draw()로 그려주면 됩니다.
2009.06.08 02:51:44
;;먼저 정말 감사드리고 .. 죄송해요..
정말 쉽게 설명해 주신것 같은데.. 너무 힘드네요..
View 를 상속받는 새로운 클래스 정의 -> public class LaddereView extends View { ... } 이렇게 구현을 해야 하는건가요??
2 번은 또다른 클래스에서 해야 하는 것인지.....도 잘 모르겟구요..
정말 성의껏 답변해 주시면 이해하고 감사의 말을 드려야 하는데..
이거머 기본이 안되어 있어서 기운만 빠지시겠네요;;ㅠㅠ
정말 쉽게 설명해 주신것 같은데.. 너무 힘드네요..
View 를 상속받는 새로운 클래스 정의 -> public class LaddereView extends View { ... } 이렇게 구현을 해야 하는건가요??
2 번은 또다른 클래스에서 해야 하는 것인지.....도 잘 모르겟구요..
정말 성의껏 답변해 주시면 이해하고 감사의 말을 드려야 하는데..
이거머 기본이 안되어 있어서 기운만 빠지시겠네요;;ㅠㅠ