같은 결과를 도출하지만 약간씩 다른 방법으로 리스너를 구현했습니다.

 

콜백메서드 재정의

 

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View vw = new MyView(this);
    setContentView(vw);
  }

  class MyView extends View{
    public MyView(Context context){
    super(context);
  }

  public boolean onTouchEvent(MotionEvent event){
    super.onTouchEvent(event);
    if (event.getAction() == MotionEvent.ACTION_DOWN){
      Toast.makeText(this.getContext(), "touch Event Received",Toast.LENGTH_SHORT).show();
      return true;
    }
    return false;
  }

}

 

리스너 인터페이스 구현

public class MainActivity extends AppCompatActivity {
  TextView mResult;
  final int READ_CONTACT_CODE = 0;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    View vw = new View (this);
    vw.setOnTouchListener(TouchListener);
    setContentView(vw);
  }

  class TouchListenerClass implements View.OnTouchListener {
    public boolean onTouch(View v,MotionEvent event){
      if (event.getAction() == MotionEvent.ACTION_DOWN){
        Toast.makeText(MainActivity.this,"touch Event Received",Toast.LENGTH_SHORT).show();
        return true;
      }
      return false;
    }
  }
  return false;
  TouchListenerClass TouchListener = new TouchListenerClass();

}

 

=========================================================

액티비티 리스너 구현

 

public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View vw = new View (this);
    vw.setOnTouchListener(this);
    setContentView(vw);
  }

  public boolean onTouch(View v,MotionEvent event){
    if (event.getAction() == MotionEvent.ACTION_DOWN){
      Toast.makeText(MainActivity.this,"touch Event Received",Toast.LENGTH_SHORT).show();
      return true;
    }
    return false;
  }
}

 

===================================

View에서 리스너 구현

 

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MyView vw = new MyView (this);
    vw.setOnTouchListener(vw);
    setContentView(vw);
  }

  class MyView extends View implements View.OnTouchListener{
    public MyView(Context context){
      super(context);
    }
    public boolean onTouch(View v,MotionEvent event){
      if (event.getAction() == MotionEvent.ACTION_DOWN){
        Toast.makeText(MainActivity.this,"touch Event Received",Toast.LENGTH_SHORT).show();
        return true;
      }
      return false;
    }
  }
}

 

=====================================

익명 내부 클래스 이용 리스너 구현

 

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View vw = new View (this);
    vw.setOnTouchListener(TouchListener);
    setContentView(vw);
  }

  View.OnTouchListener TouchListener = new View.OnTouchListener(){
    public boolean onTouch(View v,MotionEvent event){
      if (event.getAction() == MotionEvent.ACTION_DOWN){
        Toast.makeText(MainActivity.this,"touch Event Received",Toast.LENGTH_SHORT).show();
        return true;
      }
      return false;
    }
  };
}

 

 

===================================================================

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<Button
android:id="@+id/btnread"
android:layout_width="269dp"
android:layout_height="58dp"
android:layout_marginBottom="208dp"
android:text="주소록 읽기"/>

<Button
android:id="@+id/btnreset"
android:layout_width="267dp"
android:layout_height="55dp"
android:layout_marginBottom="136dp"
android:text="리셋" />

<TextView
android:id="@+id/result"
android:layout_width="244dp"
android:layout_height="61dp"
android:layout_marginBottom="188dp"
android:text="TextView" />

</LinearLayout>

 

---------------------------------------------------------------------

 

public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      LinearLayout MyLinear = (LinearLayout) findViewById(R.id.linear);
      MyLinear.setOnTouchListener(TouchListener);
   }

   View.OnTouchListener TouchListener = new View.OnTouchListener(){
      public boolean onTouch(View v,MotionEvent event){
         if (event.getAction() == MotionEvent.ACTION_DOWN){
            TextView text = (TextView)findViewById(R.id.result);
            text.setText("touched");
            return true;
         }
         return false;
      }
   };
}

+ Recent posts