버튼 클릭 이벤트 처리


1) 액티비티에서 View타입을 매개변수로받는 메서드 생성 후

   레이아웃에서 메서드 호출설정


레이아웃


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.firstapp.firstapp.MainActivity">

<Button
android:id="@+id/hellobtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"

android:onClick="testOnClick"/>

</android.support.constraint.ConstraintLayout>



액티비티


public class MainActivity extends AppCompatActivity {

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

}

public void testonClick(View view) {
Toast.makeText(MainActivity.this, "EventTest Click", Toast.LENGTH_SHORT).show();
}
}
}

2)이벤트리스너를 사용


공통레이아웃

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.firstapp.firstapp.MainActivity">

<Button
android:id="@+id/hellobtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"
</android.support.constraint.ConstraintLayout>


public class MainActivity extends AppCompatActivity  {

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

Button button = (Button)findViewById(id.hellobtn);
button.setOnClickListener(new MyListener());
}
class MyListener implements View.OnClickListener {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "EventTest Click", Toast.LENGTH_SHORT).show();
}
}
}



3)익명클래스를 사용


public class MainActivity extends AppCompatActivity  {

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

Button button = (Button)findViewById(id.hellobtn);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "EventTest Click", Toast.LENGTH_LONG).show();

}
});
}
}


4)액티비티 스스로 이벤트리스너 구현



public class MainActivity extends AppCompatActivity implements View.OnClickListener {

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

Button button = (Button)findViewById(id.hellobtn);
button.setOnClickListener(this);

}
@Override
public void onClick(View v) {
Toast.makeText(this, "EventTest Click", Toast.LENGTH_LONG).show();

}
}



터치 이벤트 처리

(1)새 프로젝트를 생성한다

(2) TextView 위젯을 생성하고 
    높이와 넓이를 match_parent 타입으로 설정하여 화면 전체를 덮는다



(3) 액티비티


화면에서 터치가 끝날 때 x좌표값을 받아서 처음 터치시좌표와 비교후 
증가인지 감소인지(우측으로 이동했냐 좌측으로 이동했냐)에 따라 분기시킨다.
-10 , +10 으로 값을 설정한 이유는 너무 작은 값에는 반응하지 않도록 하기위해서이다.

 
true를 리턴하면 이벤트를 소멸시키면서 다음이벤트로 진행되지 않는다.


안드로이드는 문자열을 다룰때 자바의 String타입이 아닌 CharSequence라는 자체 문자열 타입을 사용한다. 

그래서 안드로이에서 생성된 문자열에 자바API를 사용할려면 먼저 toString()메서드를 이용하여 CharSequence타입을 String타입으로 변경해야 한다.



+ Recent posts