2010/07/05
[Android Dev.] Touch 이벤트 사용하기
Android 의 Touch 이벤트를 테스트 해 보았다.
Touch 이벤트는 TouchListener 를 등록하여 onTouch 함수를 오버라이드 하여 구현을 하거나 onTouchEvent 함수를 오버라이드 하여 구현할 수 있다.
두 방법간의 큰 차이는 없고 어떠한 함수를 통해서 Touch 이벤트를 핸들링 하는가만 다른 것 같다. Touch Listener 를 등록하여 구현하는 경우는 Activity 에 전달 되는 Touch 에서 전체적으로 핸들링 할 수 있지만 내부 View 의 onTouchEvent 를 오버라이드하여 구현하는 경우에는 해당 뷰의 Touch 이벤트에 국한 된다는 차이가 있는데 이는 Touch 구현 범위에 따라 선택을 하여야 할 것 같다.
Touch Listener 를 등록하여 구현하는 방법
onTouchEvent 함수를 오버라이드 하여 구현하는 방법
<
Original Post : http://neodreamer-dev.tistory.com/450
Touch 이벤트는 TouchListener 를 등록하여 onTouch 함수를 오버라이드 하여 구현을 하거나 onTouchEvent 함수를 오버라이드 하여 구현할 수 있다.
두 방법간의 큰 차이는 없고 어떠한 함수를 통해서 Touch 이벤트를 핸들링 하는가만 다른 것 같다. Touch Listener 를 등록하여 구현하는 경우는 Activity 에 전달 되는 Touch 에서 전체적으로 핸들링 할 수 있지만 내부 View 의 onTouchEvent 를 오버라이드하여 구현하는 경우에는 해당 뷰의 Touch 이벤트에 국한 된다는 차이가 있는데 이는 Touch 구현 범위에 따라 선택을 하여야 할 것 같다.
ACTION_DOWN | ACTION_MOVE | ACTION_UP |
Touch Listener 를 등록하여 구현하는 방법
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.TextView;
public class TouchTest extends Activity implements OnTouchListener
{
/** Called when the activity is first created. */
TextView tvStatus;
Canvas2D canvas;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation( LinearLayout.VERTICAL );
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT );
layout.setLayoutParams( param );
tvStatus = new TextView(this);
layout.addView( tvStatus );
tvStatus.setText( "Touch Status" );
canvas = new Canvas2D( this );
ViewGroup.LayoutParams canvasParam = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT );
layout.addView( canvas, canvasParam );
canvas.setOnTouchListener( this );
setContentView( layout );
}
class Canvas2D extends View
{
public Canvas2D(Context context)
{
super(context);
}
@Override
public void onDraw( Canvas canvas )
{
// Canvas 배경 설정
canvas.drawColor( Color.parseColor("#888888") );
}
}
@Override
public boolean onTouch( View v, MotionEvent event )
{
if ( v == canvas )
{
Log.i( "event", "Canvas2D onTouch" );
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
String strMsg;
strMsg = "ACTION_DOWN X: " + event.getX() + " Y:" + event.getY();
tvStatus.setText( strMsg );
}
break;
case MotionEvent.ACTION_MOVE:
{
String strMsg;
strMsg = "ACTION_MOVE X: " + event.getX() + " Y:" + event.getY();
tvStatus.setText( strMsg );
}
break;
case MotionEvent.ACTION_UP:
{
String strMsg;
strMsg = "ACTION_UP X: " + event.getX() + " Y:" + event.getY();
tvStatus.setText( strMsg );
}
break;
}
}
return true;
}
}
onTouchEvent 함수를 오버라이드 하여 구현하는 방법
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.TextView;
public class TouchTest extends Activity
{
/** Called when the activity is first created. */
TextView tvStatus;
Canvas2D canvas;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation( LinearLayout.VERTICAL );
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT );
layout.setLayoutParams( param );
tvStatus = new TextView(this);
layout.addView( tvStatus );
tvStatus.setText( "Touch Status" );
canvas = new Canvas2D( this );
ViewGroup.LayoutParams canvasParam = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT );
layout.addView( canvas, canvasParam );
canvas.setOnTouchListener( this );
setContentView( layout );
}
class Canvas2D extends View
{
public Canvas2D(Context context)
{
super(context);
}
@Override
public void onDraw( Canvas canvas )
{
// Canvas 배경 설정
canvas.drawColor( Color.parseColor("#888888") );
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
Log.i( "event", "Canvas2D onTouch" );
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
String strMsg;
strMsg = "ACTION_DOWN X: " + event.getX() + " Y:" + event.getY();
tvStatus.setText( strMsg );
}
break;
case MotionEvent.ACTION_MOVE:
{
String strMsg;
strMsg = "ACTION_MOVE X: " + event.getX() + " Y:" + event.getY();
tvStatus.setText( strMsg );
}
break;
case MotionEvent.ACTION_UP:
{
String strMsg;
strMsg = "ACTION_UP X: " + event.getX() + " Y:" + event.getY();
tvStatus.setText( strMsg );
}
break;
}
return true;
}
}
}
<
Original Post : http://neodreamer-dev.tistory.com/450
Labels:
Android
,
Android Development
,
Event Handling
,
TistoryOldPost
,
Touch
,
Touch Event
,
안드로이드
,
안드로이드 개발
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment