일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- php 홈디렉토리 변경방법
- 히오스
- 게임
- 포트(Port)
- 명령어
- 아이패드
- 벨팡
- 소캣(Socket)
- 나지보 특성
- 안드로이드 Application Lifecycle
- tcp네트워크
- 나지보
- 어플
- 변경된 정보
- 집 정리
- 기업의 행포
- 안드로이드
- 스랄 특성
- unity
- End of Darkness
- 비행기 모드
- 에셋
- game
- tcp
- TCP 네트워크 방식의 연결
- 자바
- Collection Framework
- 컬렉션 프레임
- 리눅스
- 아이폰
- Today
- Total
Do Something IT
움직이는 네모 본문
저번 퍼즐 마추기에 이어 이번에는 움직이는 네모를 배워 보았다. 아직 자바와 안드로이드 API를 잘 모르기 때문에 다시 한번 어려움을 많이 느겼다. 이번에 만들어본 프로젝트는 일단 네모를 그리는 클래스를 생성후 그 객체를 통하여 네모를 그리고 액티비티 탬플릿에서 컴트롤을 이용하여 이동시켰다.
보는 바와 같이 위에 달려있는 버튼 4개를 이용하여, 좌우상하를 이용하는 빨간 네모를 만들었다.
소스는 아래와 같다.
--[[main.xml]]--
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/lo"
>
<LinearLayout android:id="@+id/llo01" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:id="@+id/Bleft" android:layout_width="70px" android:layout_height="wrap_content" android:text="left"/>
<Button android:id="@+id/Bright" android:layout_width="70px" android:layout_height="wrap_content" android:text="right"/>
<Button android:id="@+id/Bup" android:layout_width="70px" android:layout_height="wrap_content" android:text="up"/>
<Button android:id="@+id/Bdown" android:layout_width="70px" android:layout_height="wrap_content" android:text="down"/>
</LinearLayout>
<AbsoluteLayout android:id="@+id/Al" android:layout_width="wrap_content" android:layout_height="wrap_content"></AbsoluteLayout>
</LinearLayout>
--[[네모 박스 Box.java]]--
package my.android;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.util.AttributeSet;
import android.view.View;
public class myRect extends View {// 새로운 뷰작업을 하기위해서는 클래스 생성시
//java.view.View로 서브클래스 를 지정하여야한다.
//#컴포넌트 작업시 뷰로 작업한다.
public myRect(Context context) {//생성자 해당 객체의 레퍼런스를 상위클래스에 기억시킨다.
super(context);
//색을 저장하는 페인트 객체
_drawable= new ShapeDrawable(new OvalShape());//shapeDrawable의 안에 Ovalshape();주소를 참고시킨다.
_drawable.getPaint().setColor(0xffFF0000); //Ovalshap는 더많은 기능을 가능하게 해준다.
}
public myRect(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
//그림을 그리는 작업을 하는 onDraw 메소드 이를 그리기위해서 Canvas가 필요하다. canvas에 그림
protected void onDraw(Canvas canvas){//OnDraw는 View클래스에 오버라이딩 되어있으며
canvas.drawRect(_X,_Y,_X+_Width,_Y+_Hight,_drawable.getPaint());//이는 해당 객체 생성시 실행된다.
}
public void MoveLeft(int Distance){
_X = _X-Distance;
invalidate();//onDraw()메소드를 실행시킨다.
}
public void MoveRight(int Distance){
_X = _X+Distance;
invalidate();
}
public void MoveUp(int Distance){
_Y = _Y-Distance;
invalidate();
}
public void MoveDown(int Distance){
_Y = _Y+Distance;
invalidate();
}
private ShapeDrawable _drawable;
private int _X=0;
private int _Y=0;
private int _Width=32;
private int _Hight=32;
}
--[]액티비티 클래스 myRect.java[]--
package my.android;
import javax.security.auth.PrivateCredentialPermission;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.LinearLayout;
public class andTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Rect= new myRect(this);
((AbsoluteLayout)findViewById(R.id.Al)).addView(Rect);//레이아웃 뷰에 Rect 뷰를 더하라.
((Button)findViewById(R.id.Bleft)).setOnClickListener(On_lClick);
((Button)findViewById(R.id.Bright)).setOnClickListener(On_rClick);
((Button)findViewById(R.id.Bup)).setOnClickListener(On_uClick);
((Button)findViewById(R.id.Bdown)).setOnClickListener(On_dClick);
}
private myRect Rect;
private View.OnClickListener On_lClick =new View.OnClickListener(){
public void onClick(View v) {
Rect.MoveLeft(5);
}
};
private View.OnClickListener On_rClick =new View.OnClickListener(){
public void onClick(View v) {
Rect.MoveRight(5);
}
};
private View.OnClickListener On_uClick = new View.OnClickListener(){
public void onClick(View v) {
Rect.MoveUp(5);
}
};
private View.OnClickListener On_dClick = new View.OnClickListener(){
public void onClick(View v) {
Rect.MoveDown(5);
}
};
}
안드로이드 아직가지는 여타 프로그래밍과 다를 바가 별로 없는것 같다. 재미도 있고 아직까지는 할만하다.
재미있는 어플을 만들때까지 더욱더 갈고 닦아야 겠다.
'Android' 카테고리의 다른 글
[Android] Adapter (0) | 2010.06.25 |
---|---|
[번역] 안드로이드 Drawable Mutations (0) | 2010.06.24 |
기념일자 찾기 (0) | 2010.06.17 |
안드로이드 애플리케이션 구성요소 (0) | 2010.06.08 |
안드로이드 구조 (0) | 2010.06.08 |