본문 바로가기

IT/안드로이드

안드로이드 인터페이스 -1 (이해 안됨 주의)

앱으로 돈벌자 - 1


인터페이스 

수십가지의 기능들을 코드로 구현하면 클래스와 함수가 많아진다.

클릭이벤트가 발생해야 뷰의 클릭이벤트로 인지하는 이벤트 핸들러가 구현되어있는데 이 수많은 작업들을 모든 클래스마다 구현하기는 매우 비효율적


그래서 기본라이브러리(view.class)에 탑재해서 이 라이브러리가 인터페이스 함수를 호출하게 만들어서 클릭이벤트하고싶을때 인터페이스 함수만 구현하면 됨


public interface OnClickListener {

  void onClick(View view)

}


온클릭리스너가 인터페이스 그 안에 onclick은 온클릭리스너의 인터페이스 함수


인터페이스 함수는 필요로하는곳마다 입맛대로 구현해야하니 함수의 내용이 없음 그래서 사용할 클래스에서 반드시 구현해줘야함


view : 인터페이스 정의 및 인터페이스와 컨트롤러 연결구현

controller : 인터페이스와 컨트롤러 연결 (setter에 인터페이스 전달하여 호출)

controller : 인터페이스 함수 구현

view : 인터페이스 함수 실행



일반적으로 

클릭이벤트를 view안에 인터페이스로 생성

view를 import 또는 view.onclicklistener 인터페이스를 implements 받아서 클릭이벤트를 처리

공통으로 필요한 클릭이벤트 수신기능을 인터페이스로 만들고

그 클릭에 대한 처리는 컨트롤러에서 재정의



클릭 이벤트 처리는 

View | Controller 


View는 OS에서 클릭이벤트를 받는 역활을 하고,

Controller은 클릭이벤트 발생시 필요한 기능을 구현.


컨트롤러는 액티비티


뷰에서 클릭이벤트를 받아서 액티비티로 던진다.



뷰는 최상위 클래스

텍스트뷰,이미지뷰와 같은 것들은 그걸 상속받은 상태


그래서 뷰가 연결은 지어준거니까


액티비티단에서 뷰안에있는 필요한 메소드를 가져와서 오버라이드 해서 

내가 필요한기능을 구현



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


위에 내용은 내가 블로그 참고하면서 그때그때 이해하고 적으면서 배우기위해 적어놓은것


개념 이해

- 인터페이스를 사용하는 이유는 ? 개발을 편리하게 , 비슷한 기능끼리 구글이 묶어놓은것


-인터페이스 함수를 구현했을때는 입맛에 맞게 사용해야하기때문에 오버라이드가 필수


- 인터페이스를 사용하려면 뷰 클래스에 인터페이스를 정의해주고 setter메소드를 만들어서(이건 뷰랑 컨트롤러(액티비티)랑 연결해주는거)


사용순


setter메소드(인터페이스생성){

@오버라이드

인터페이스 메소드 구현 (뷰 뷰)

}


이제 그럼 이 컨트롤러(액티비티)는 뷰의 클릭이벤트를 받을준비가 되어있음


각 xml에 레이아웃등은 다 뷰 extends 임


그러니 그 레이아웃등에서 클릭이벤트가 일어나면 

뷰에 있는 인터페이스 (온클릭리스너) 가 동작하는데 그걸 액티비티단에서 내가 새로생성해주고 하면 그 인터페이스를 받고 거기서 내가 구현한 기능이 동작하는것같다


말로하니까 설명 이 어렵네


레이아웃 클릭이벤트 발생 -> 뷰 클래스 (온클릭리스너[인터페이스])  -> 클릭 기능(미구현)

레이아웃 클릭이벤트 발생 -> 액티비티(컨트롤러) 안에 setter(new 인터페이스  ){

클릭 기능 구현

}


이런개념인것같은데 좀더 맨정신일때 다시이해해봐야겠따














'IT > 안드로이드' 카테고리의 다른 글

모바일 일곱번째 발자국(RealtiveLayout / style)  (0) 2018.02.04
모바일 다섯걸음  (0) 2018.01.30
모바일 4발자국  (0) 2018.01.28
안드로이드 세번째 걸음  (0) 2018.01.26
모바일 두발자국  (2) 2018.01.24