검색결과 리스트
글
이벤트는 어떤 특정한 사건이 발생 할 경우 일어나는 것을 말하고 있따.
콜백 메서드를 이용하거나 이벤트 리스너를 이용 할 수 있다.
콜백 메서드는 시스템에 의해 자동적으로 호출되는 메서드이고, 리스너는 이벤트에 대한 인터페이스 임을 알아두자.
콜백의 경우 다음과 같은 간단한 코드로 테스트 할 수가 있다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
setContentView(view);
}
protected class mView extends View
{
public mView(Context context){
super(context);
}
public boolean onTouchEvent(MotionEvent event){
super.onTouchEvent(event);
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
이 코드를 실행해서 아무 곳이나 누르면 토스트가 떠서 작동 됨을 확인 할 수 있다.
다음은 리스너를 이용하여 만든 코드를 보자.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(listen);
setContentView(view);
}
class listener implements View.OnTouchListener
{
public boolean onTouch(View v, MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
listener listen = new listener();
처음 코드와 다른 점은 View를 생성해서 거기에 해당하는 리스너를 연결 해 준다는 것이다.
또한 인자 값에 View 객체를 받는 인자도 추가 된다. 별 다른 점은 크게 없는 것을 볼 수 있다.
다른 케이스로 액티비티가 리스너를 구현 할 수 있다. 그 방법은 다음과 같다.
public class ImageViewActivity extends Activity implements View.OnTouchListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(this);
setContentView(view);
}
public boolean onTouch(View v, MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
다음은 뷰에서 리스너 구현 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
view.setOnTouchListener(view);
setContentView(view);
}
protected class mView extends View implements View.OnTouchListener
{
public mView(Context context){
super(context);
}
public boolean onTouch(View v, MotionEvent event){
super.onTouchEvent(event);
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
}
다음은 이너 클래스를 쓰는 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(listener);
setContentView(view);
}
private View.OnTouchListener listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
};
}
마지막으로 가장 함축된 형태를 나타내는 코드로 이벤트를 설정 할 때 그 순간 객체를 생성해서 넘기는 방법이다.
또한 이런 이벤트 핸들러들은 우선 순위를 가진다.
제일 처음 뷰의 리스너이고 다음이 뷰의 콜백 메서드, 마지막으로 액티비티의 콜백 메서드 순으로 호출이 된다.
콜백 메서드를 이용하거나 이벤트 리스너를 이용 할 수 있다.
콜백 메서드는 시스템에 의해 자동적으로 호출되는 메서드이고, 리스너는 이벤트에 대한 인터페이스 임을 알아두자.
콜백의 경우 다음과 같은 간단한 코드로 테스트 할 수가 있다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
setContentView(view);
}
protected class mView extends View
{
public mView(Context context){
super(context);
}
public boolean onTouchEvent(MotionEvent event){
super.onTouchEvent(event);
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
이 코드를 실행해서 아무 곳이나 누르면 토스트가 떠서 작동 됨을 확인 할 수 있다.
다음은 리스너를 이용하여 만든 코드를 보자.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(listen);
setContentView(view);
}
class listener implements View.OnTouchListener
{
public boolean onTouch(View v, MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
listener listen = new listener();
처음 코드와 다른 점은 View를 생성해서 거기에 해당하는 리스너를 연결 해 준다는 것이다.
또한 인자 값에 View 객체를 받는 인자도 추가 된다. 별 다른 점은 크게 없는 것을 볼 수 있다.
다른 케이스로 액티비티가 리스너를 구현 할 수 있다. 그 방법은 다음과 같다.
public class ImageViewActivity extends Activity implements View.OnTouchListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(this);
setContentView(view);
}
public boolean onTouch(View v, MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
다음은 뷰에서 리스너 구현 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
view.setOnTouchListener(view);
setContentView(view);
}
protected class mView extends View implements View.OnTouchListener
{
public mView(Context context){
super(context);
}
public boolean onTouch(View v, MotionEvent event){
super.onTouchEvent(event);
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
}
다음은 이너 클래스를 쓰는 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(listener);
setContentView(view);
}
private View.OnTouchListener listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
};
}
마지막으로 가장 함축된 형태를 나타내는 코드로 이벤트를 설정 할 때 그 순간 객체를 생성해서 넘기는 방법이다.
또한 이런 이벤트 핸들러들은 우선 순위를 가진다.
제일 처음 뷰의 리스너이고 다음이 뷰의 콜백 메서드, 마지막으로 액티비티의 콜백 메서드 순으로 호출이 된다.
RECENT COMMENT