당연히 안드로이드 앱은 사용자의 화면 터치에 대한 이벤트를 처리할 수 있어야 한다.

손가락으로 화면을 터치하면 터치 이벤트(Touch Event), 버튼이나 키패드를 누르면 키 이벤트(Key Event)

여러 이벤트들이 있는데 당연히 터치(Touch Event)가 가장 많이 사용되고 가장 중요하다.

 

이벤트 등록을 위해선 다음과 같은 이벤트 리스너 인터페이스의 구현이 필요하다.

View.OnTouchListener : boolean onTouch(View v, MotionEvent event)
View.OnKeyListener : boolean onKey(View v, int keyCode, KeyEvent event)
View.OnClickListener : void onClick(View v)
View.OnFocusChangeListener : void onFocusChange(View v, boolean hasFocus)

 

버튼 이벤트 등록

public class MainActivity extends AppCompatActivity {
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button = (Button) findViewById(R.id.btn)
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // do something...
            }
        }
    }
}

 

버튼 이벤트에 속하는 체크 박스 버튼 이벤트 등록

public class MainActivity extends AppCompatActivity {
    CheckBox checkBox;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        checkBox = (CheckBox) findViewById(R.id.chk);
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                if (checkBox.isChecked() == true) {
                    // do something...
                } else {
                    // do something...
                }
            }
        }
    }
}

 

키 이벤트 등록

public class MainActivity extends AppCompatActivity {
    EditText editText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        editText = (EditText) findViewById(R.id.edit1);
        editText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_UP) { 손가락이 떼졌을 때
                    Toast.makeText(getApplicationContext(), "손가락이 떼짐", Toast.LENGTH_SHORT).show();
                } else if (event.getAction() == KeyEvent.ACTION_MOVE) { // 손가락이 눌린 상태로 움직일 때
                    Toast.makeText(getApplicationContext(), "손가락이 눌려있는 상태", Toast.LENGTH_SHORT).show();
                } else if (event.getAction() == KeyEvent.ACTION_DOWN) { // 손가락이 눌렸을 때
                    Toast.makeText(getApplicationContext(), "손가락이 눌림", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }
}