본문 바로가기

분류 전체보기

(64)
[안드로이드 기본] 셀렉터 속성 정리하기 버튼에 셀렉터를 지정하는 일은 안드로이드 개발하면서 많이 발생하는 일이다. 셀렉터를 지정하는 방법과 셀렉터 속성에 대해서 정리를 해보자! 셀렉터는 /res/drawable 디렉터리에 위치한 drawable 리소스로 만들어진다. button에는 android:drawable의 속성 값으로 들어가게 된다. selector 속성의 종류 android:state_pressed : 뷰가 눌렸을 때 (예, 터치나 클릭이 발생했을 때) android:state_focused : 뷰에 포커스가 위치했을 때 (예, EditText를 입력할 수 있을 때) android:state_selected : 뷰를 선택했을 때 (예, 방향키로 이동하다가 선택했을 때) android:state_checkable : 체크 가능한 상태일..
[안드로이드 기본] 안드로이드 로그 남기기 안드로이드에서 오류가 났을 때 안드로이드가 에러 메시지를 띄어준다. 하지만, 개발자가 코드를 작성하고, 그 코드의 문제가 생겼을 때의 모든 에러 메시지를 안드로이드가 띄어줄 수는 없다. 그렇기 때문에 그 문제를 살펴보기 위해 개발자는 로그를 잘 남겨야하는데, 안드로이드에서 로그를 남기는 방법은 아래와 같이 5가지가 있다. 안드로이드 로그 남기기 Error : 가장 심각한 문제가 발생했을 때 남기는 로그 Log.e("tag","error message"); Warning : 심각하지는 않지만, 나중에라도 문제의 소지가 있을 수 있어서 남기는 로그 Log.w("tag","warning message"); Information: 어떤 처리를 하면서 발생하는 진행 과정 등을 모니터링 하기 위한 목적으로 남기는 ..
[안드로이드 기본] 안드로이드 뷰에 대한 기본 지식 안드로이드 기본 공부에 들어가기 앞서 무작정 뷰를 공부하지 말고, 기본으로 알고 있어야하는 뷰와 관련된 용어들을 정리하고 들어가자! View : 사용자 인터페이스를 구성하는 클래스들의 최상위 클래스 View - 사용자 인터페이스 구성을 위해 사용할 수 있는 클래스들의 대표 이름들 TextView, EditText, Spinner, Button 등 ViewGroup - ViewGroup은 다른 뷰를 포함하거나 구성하는 클래스들의 상위 클래스 View Container - 다른 뷰를 포함할 수 있는 컨테이너 ListView, ExpandableListView, GridView, Gallery, ViewFlipper, ImageSwitcher, TextSwitcher, ScrollView 등 Layout - ..
[안드로이드 개인 공부] xml에서 include 와 merge 태그를 사용하면 레이아웃을 여러 파일로 나눌수가 있다. 그렇기 때문에 아주 긴 GUI를 구현하는데 도움을 준다. activity_main.xml 현재 메인 엑티비티는 두개의 레이아웃을 include하고 있다. 각 아이템에 해당되는 xml을 모두 써주기에는 너무 복잡하기 때문에, 가독성을 높이기 위해 include를 통해서 레이아웃을 여러 파일로 나눠서 사용할 수 있다. 또한 같은 디자인이 반복될 경우 를 통해서 구현이 가능하다. reuse_item1.xml reuse_item1은 두개의 텍스트 뷰를 가지고 있는 구조이다. reuse_item2.xml reuse_item2는 두개의 버튼이 나란히 수평으로 이어져있는 구조이다. 태그를 사용한 결과로 acitivity_main.xml의 렌더링의 모습은 아래와 ..
[안드로이드 개인공부] LiveData를 통한 데이터 바인딩 MVVM적용하기 참고하여 공부한 링크 : https://deque.tistory.com/112?category=984011 MVVM구조는 저번 글에서 설명한 것 처럼, view는 viewModel 객체를 멤버로 가지고 있지만, viewModel은 view의 객체를 가지고 있지 않는다. 그렇다면, viewModel에서 view의 함수를 호출하거나, view의 내용을 변경하거나, 혹은 context나 activity 객체의 함수를 호출해야 할 때는 어떻게 해야할까? 물론 context를 이용하고 싶으면, AndroidViewModel을 상속하면 되지만, 지금은 넘어가겠다. 해답은 바로 view가 viewModel의 특정한 데이터를 observing하고 있다가, 그 데이터가 변경될 때 view의 로직을 수행하면 된다. 예를 ..
[안드로이드 개인공부] BaseView, BaseViewModel 작성해서 MVVM 만들기 참고 블로그 https://deque.tistory.com/108?category=984011 공부하면서 참고한 소스 코드는 https://github.com/5seunghoon/Kotlin-MVVM-Sample 입니다. 먼저 MVVM 이란? MVP패턴에서 Presenter와 View, 그리고 Model간의 의존성이 너무 깊은것 아닌가?에서 시작되어 진보된 패턴이다. view는 viewModel의 참조를 가지고 있지만, viewModel은 view의 참조를 가지고 있지 않는다. viewModel도 Model의 참조를 가지고 있지만, Model은 viewModel의 참조를 가지고 있지 않다. 그럼 viewModel은 StartActivity나 snackbar 등 view의 함수를 어떻게 호출할 수 있을까?..
[안드로이드 개인공부] Retrofit에 RxJava적용해보기 Retrofit에 대해서 궁금한 부분은 https://zzandoli.tistory.com/2 를 참고하면된다. 기존 Retrofit을 사용할 경우 아래와 같이 인터페이스 서비스를 만들고 interface GitHubService { @GET("/users/{user}/repos") fun listRepos(@Path("user") user:String): Call} 해당서비스를 create해준다. val service:GitHubService = Retrofit.Builder() .baseUrl("https://api.github.com") .build() .create(GitHubService::class.java); 그리고 네트워킹을 하고자 하는 위치에 아래처럼 구현하여, Call객체를 통해 비동기..
[안드로이드 개인공부] Retrofit 사용방법 사용자가 URL을 브라우저 주소창에 작성하여 엔터를 누르면 원하는 페이지가 나온다. 특정 웹페이지를 사용자 웹 브라우저에게 보여주기 위해 내부적인 처리들을 하는 것이다. 그 내부적인 처리에서, 클라이언트가 서버에게 웹페이지를 보여달라고 하는 것을 요청이라고 하며, 그에 대한 서버의 대답을 응답이라고 한다. 클라이언트가 서버로 요청하기 위해서 HTTP패킷을 사용한다. HTTP패킷은 크게 헤더와 바디로 나뉘어진다. 헤더에는 메소드방식, 클라이언틔 정보, 브라우저 정보, 접속할 URL등 정보를 담을 수 있다. 바디는 보통 비어 있는데, 특정 데이터를 담아서 서버에게 요청이 가능하다. 여기서 GET과 POST방식으로 나눌 수가 있다. - GET의 경우 클라이언트가 입력한 Query의 이름과 값이 결합되어 스트링..