728x90

4. 익명 내부 클래스를 이용하여 이벤트를 등록하는 방법

 

기존에 등록했던 이벤트 방법과 유사하나, 이벤트가 발생했을때 실행되는 대상이 어떤 모양이냐에 따라 달라진다.

 

방법 순서.

1. 원하는 이벤트의 리스너를 찾는다.

2. 해당 뷰에 이벤트를 적용함과 동시에 객체를 생성한다.

 

package com.jwandroid.tistory.event.test01;


import android.app.Activity;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Toast;


public class EventTest01Activity extends Activity{

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        

        View v = new View(this);

        v.setOnTouchListener(new View.OnTouchListener() {  // View.OnTouchListener의 객체가 아니라 View.OnTouchListener 인터

@Override                                                                               //  페이스를 상속받아 onTouch 메서드를 구현 하는 이름없는 서브

public boolean onTouch(View v, MotionEvent event) {           // 클래스 타입의 객체이다

Toast.makeText(EventTest01Activity.this, "onTouch", Toast.LENGTH_LONG).show();

return false;

}

});

      setContentView(v);       

    }

}

728x90

'Android' 카테고리의 다른 글

안드로이드 리소스, 에셋  (0) 2012.07.31
안드로이드 메뉴  (0) 2012.07.31
안드로이드 입력 (이벤트) 3  (0) 2012.07.31
안드로이드 입력 (이벤트) 2  (0) 2012.07.31
안드로이드 입력 (이벤트)  (0) 2012.07.31
Posted by 정망스
,
728x90

3. 리스너 인터페이스를 상속받아 이벤트를 구현하는 방법

새로운 클래스를 만들지 않고 Activity 클래스가 리스너를 상속받아 구현하는 방법이다.

 

방법 순서.

 

1. 원하는 이벤트의 리스너를 찾는다.

2. 해당 리스너를 Activity가 상속받아 구현하도록 한다.

3. 이벤트를 적용하고 하는 뷰에 이벤트를 적용한다.

 

package com.jwandroid.tistory.event.test01;


import android.app.Activity;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Toast;


public class EventTest01Activity extends Activity implements View.OnTouchListener{ //이벤트 리스너를 찾은후

    @Override                                                                                                     //Activity가 상속받는다.

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        

        View v = new View(this);         // 이벤트를 적용하고자 하는 뷰에 적용한다

        v.setOnTouchListener(this);

        setContentView(v);       

    }


@Override

public boolean onTouch(View v, MotionEvent event) {

Toast.makeText(this, "onTouch", Toast.LENGTH_LONG).show();

return false;

}

}

728x90

'Android' 카테고리의 다른 글

안드로이드 메뉴  (0) 2012.07.31
안드로이드 입력 (이벤트) 4  (0) 2012.07.31
안드로이드 입력 (이벤트) 2  (0) 2012.07.31
안드로이드 입력 (이벤트)  (0) 2012.07.31
안드로이드 Path  (0) 2012.07.31
Posted by 정망스
,
728x90

2. 새로운 리스너클래스를 생성하여 이벤트 구현

 

바로 원하는 이벤트를 만들어서 이벤트를 받고자 하는 뷰에 적용하는 방법이다.

 

방법 순서.

1. 원하는 이벤트 리스너를 찾는다.

2. 해당 리스너를 구현하는 리스너클래스를 만든다.

3. 이벤트를 적용하고자 하는 뷰에 이벤트를 적용한다.

 

package com.jwandroid.tistory.event.test01;


import android.app.Activity;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Toast;


public class EventTest02Activity extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        

        View v = new View(this);                                   //이벤트를 적용하고자 하는 뷰에 이벤트를 적용

        v.setOnTouchListener(new myTextEvent());

        setContentView(v);

       

    }

    

    class myTextEvent implements View.OnTouchListener//View.OnTouchListener 라는 원하는 이벤트 리스너를

@Override                                                                    // 찾은후 해당 리스너를 구현하는 클래스를 만듬

public boolean onTouch(View v, MotionEvent event) {

Toast.makeText(EventTest01Activity.this, "onTouch",     

Toast.LENGTH_LONG).show();

return false;

}

    

    }

}

728x90

'Android' 카테고리의 다른 글

안드로이드 입력 (이벤트) 4  (0) 2012.07.31
안드로이드 입력 (이벤트) 3  (0) 2012.07.31
안드로이드 입력 (이벤트)  (0) 2012.07.31
안드로이드 Path  (0) 2012.07.31
안드로이드 비트맵 (Bitmap)  (0) 2012.07.27
Posted by 정망스
,
728x90

안드로이드 이벤트란?

 

터치 스크린으로 되어 있는 스마트폰을 사용자가 화면을 터치 하거나 시스템의 상황 변화에 따라 발생하는 신호를 이벤트라고 한다.

 

안드로이드는 이벤트를 구현하기 위한 여러가지 방법이 있다.

 

1. Call-Back Method 를 재정의하여 이벤트를 구현하는 방법

2. 리스너 인터페이스를 구현하여 이벤트를 구현하는 방법

3. 리스너 인터페이스를 상속받아 이벤트를 구현하는 방법

4. 뷰를 통해 이벤트를 구현하는 방법

5. 익명 내부클래스를 이용하여 구현하는 방법

 

1. Call-Back Method 재정의하여 이벤트를 구현하는 방법

 

안드로이드에서 이벤트를 구현하기 위해 미리 정의된 메소드를 오버라이딩해서 구현하는 방법이다 가장 쉬운 방법이며 오버라이딩만 하면 정해진 이벤트가 발생시 알아서 호출되는 메소드 이다.

 

-onKeyDown(int, KeyEvent) : 키를 눌렀을때 호출되는 메소드

-onKeyUp(int, KeyEvent) : 키를 눌렀다가 뗄때 호출되는 메소드

-onTrackballEvent(MotionEvent) : 트랙볼이 사용될때 호출되는 메소드

-onTouchEvent(MotionEvent) : 화면을 터치했을때 호출되는 메소드

-onFocusChanged(boolean, int, Rect) : 포커스가 바뀌었을때 호출되는 메소드

 

위 5가지 메소드가 주로 쓰이며, 각 메소드안의 매개변수들은 이벤트 발생시 정보를 가지고 있는 클래스들이다.

 

예제)

package com.jwandroid.tistory.event.test01;


import android.app.Activity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.widget.Toast;


public class EventTest01Activity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }


@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

Toast.makeText(this, "onKeyDown keyCode : "+keyCode, Toast.LENGTH_LONG).show();

return super.onKeyDown(keyCode, event);

}


@Override

public boolean onKeyUp(int keyCode, KeyEvent event) {

Toast.makeText(this, "onKeyDown keyCode : "+keyCode, Toast.LENGTH_LONG).show();

return super.onKeyUp(keyCode, event);

}


@Override

public boolean onTouchEvent(MotionEvent event) {

Toast.makeText(this, "onTouchEvent : ", Toast.LENGTH_LONG).show();

return super.onTouchEvent(event);

}    

}

 

728x90

'Android' 카테고리의 다른 글

안드로이드 입력 (이벤트) 3  (0) 2012.07.31
안드로이드 입력 (이벤트) 2  (0) 2012.07.31
안드로이드 Path  (0) 2012.07.31
안드로이드 비트맵 (Bitmap)  (0) 2012.07.27
안드로이드 페인트 (Paint)  (0) 2012.07.27
Posted by 정망스
,

안드로이드 Path

Android 2012. 7. 31. 21:05
728x90

PATH 란?

그리기(Draw) 를 할때 사용되는 녀석 중. "덤" 정도로 생각하면 된다.

쉽게 말해서 도화지에 우리가 선을 긋는데 그냥 그으면 삐뚤삐뚤 해지는데. 하지만 자를대고 선을 그으면 똑바로 그을수가 있듯이. 이때 "자"의 역확을 해주는 녀석을 "Path"라 생각 하면 되겠다.


도화지(Canvas)에 어떤 도형(직선, 곡선, 다각형)을 그리는데 미리 그려진 궤적 정보라고 생각하면 된다.

 

Path 에서 사용되는 메소드

  1. 메소드의 종류가 많기 때문에 자주 쓰이고 참고 할 만한 것들만 추려서 정리 하겠다.

  2.  

    addArc(RectF oval, float startAngle, float sweepAngle) 

        - Path에 호를 추가 합니다.


    addCircle(float x, float y, float radius, Path.Direction dir) 

        -  Path에 원을 추가 합니다.


    addOval(RectF oval, Path.Direction dir)  

        -  Path에 타원을 추가 합니다.


    addPath(Path src, Matrix matrix) 

        - Path에 행렬(Matrix)이 적용되는 Path를 추가 합니다.


    addRect(RectF rect, Path.Direction dir)

        - Path에 사각형을 추가 합니다.


    addRoundRect(RectF rect, float[] radii, Path.Direction dir)

        - Path에 모서리가 둥근 사각형을 추가 합니다.


    close() 

        -  해당 경로를 종료 합니다.


    computeBounds(RectF bounds, boolean exact) 

        - Path point의 영역을 계산합니다.


    cubicTo(float x1, float y1, float x2, float y2, float x3, float y3) 

        - 기준점(x1, y1)에서 점2 (x2, y2), 점3 (x3, y3) 순으로 곡선을 그립니다.


    rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3) 

        - 상대좌표 사용곡선을 그립니다.


    getFillType()  

        - 현재 채우기 타입을 가지고 옵니다.


    isEmpty() 

        - 아무런 설정도 되어 있지 않은지 판단합니다.

    isRect(RectF rect) 

        - 영역이 사각형인지 판단 합니다.


    lineTo(float x, float y) 

        - Path의 마지막에 경로를 추가 합니다.


    rLineTo(float dx, float dy)  

        - 상대좌표 사용사용하여 경로를 추가 합니다.


    moveTo(float x, float y) 

        - 기준점을 x, y로 이동 시킵니다.


    rMoveTo(float dx, float dy) 

        - 상대좌표사용를 사용하여 이동된 좌표를 추가 합니다.


    offset(float dx, float dy) 

        - dx, dy로 경로(path)를 오프셋 합니다.


    quadTo(float x1, float y1, float x2, float y2)  

        - 점 x1, y1에서 x2, y2까지 곡선을 그립니다.


    rQuadTo(float dx1, float dy1, float dx2, float dy2) 

        - 상대좌표사용하여 곡선을 그립니다.


    reset() 

        - Path정보를 초기화 시킵니다.


    rewind() 

        - 라인, 커브는 지우고, 내부정보는 다시 사용합니다.


    set(Path src) 

        - Path를 src로 재 설정 합니다.


    setFillType(Path.FillType ft) 

        - 채우기 설정을 ft로 설정 합니다.


    setLastPoint(float dx, float dy) 

        - 마지막 좌표를 dx, dy로 설정합니다.

728x90

'Android' 카테고리의 다른 글

안드로이드 입력 (이벤트) 2  (0) 2012.07.31
안드로이드 입력 (이벤트)  (0) 2012.07.31
안드로이드 비트맵 (Bitmap)  (0) 2012.07.27
안드로이드 페인트 (Paint)  (0) 2012.07.27
안드로이드 캔버스 (Canvas)  (0) 2012.07.27
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침