당연히 쓰는데 왜 모를까

앱으로 돈벌자 - 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 인터페이스  ){

클릭 기능 구현

}


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














Comment +0

오늘도 간단하게 끄적이러 왔다.


목요일날 진행했던 LinearLayout에 이어


RelativeLayout에 대해 간단하게 작성해보았다.



해당 레이아웃은 상대위치를 설정한다고 보면되는데


기준점이 되는 뷰에 아이디를  설정해놓고 layout_설정 으로 위치시켜줄수 있다.


해당 내용을 진행하면서 어차피 같은 텍스트에 같은 크기를 만들기 귀찮아서 알아보니


style이라는 좋은게 있더라


res아래에 values 라는 폴더안에 style.xml에 등록을 해놓으면 언제어디서든 쓸수있다.


해당 화면에 style= @style/texttest1 로 style에 만들어놓고 <item>을 이용해서 등록해놨던 부분들을 쓱 불러와서 사용해주었다.



Comment +0

저번 시간까지 간단하게 안드로이드 스튜디오 구조에 대하여 작성하였고



이제 실제로 앱을 만드는 걸 가져보려한다.


나도 배워가는 입장이라 알려준다라기 보다는


내가 참조하고있는 블로그 ( 쉽게배우는 안드로이드 - 순수하지않은개발자 님) 를 참조하면서


그냥 이번에 새로 알게된 내용을 적는 정도로 하려한다.









레이아웃 구조 파악



View - 안드로이드 화면을 구성하는 기본단위. 하나의 영역마다 view라고 함



000Layout - 부모뷰. 흔히 사용하는 뷰는 LinearLayout, RelativeLayout, FrameLayout 정도가 있다.



TextView, EditText, ImageView - 자식 뷰로 부모뷰 안에 들어갈 수 있는 뷰들이다.



ScrollView - 스크롤뷰. 뷰가 화면보다 클때 사용해야 하며 가로 세로 스크롤 방향을 지정 가능. 단 하나의 자식뷰만 사용가능하다. 일반적으로 LinearLayout이 스크롤뷰의 자식이 됨.


RecyclerView - 스크롤뷰와 비슷하지만 리스트형식으로 화면을 뿌릴 때 쓰는 뷰. 




Layout 사용 용도


LinearLayout - 보통 이 레이아웃은 앞서 말했듯이 스크롤뷰의 자식으로 많이쓴다. 메뉴같이 여러개가 보여질때 쓰면 좋다고 한다.


스크롤뷰는 자식뷰가 하나여야 하니까 스크롤뷰 [ LinearLayout { 여러 뷰 } ] 이런식으로 감싸서 사용할듯 한다.



RelativeLayout - 이 레이아웃은 이름그대로 '상대적인' 레이아웃이다. 자식뷰가 고정적이지 않아서 복잡한 구조를 만들때 사용하며 자주 사용하는 레이아웃이기도 하다.


FrameLayout - 가장 기본적인 레이아웃으로 자식뷰를 레이아웃 그레비티 속성을 이용하여 상,하,좌,우에 배치할수 있는데 그렇기때문에 자식뷰가 적은곳에 사용하면 좋다.






내일은 해당 레이아웃에 대하여 캡쳐와 함께 한번더 정리하도록하겠다.

Comment +0