본문 바로가기

안드로이드

(25)
[안드로이드 기본] 액티비티와 주요 구성 요소 안드로이드에서 가장 중요한 4대 컴포넌트는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더이다. 그리고 그외의 인텐트, 인텐트 필터, 노티피케이션, 프래그먼트가 존재한다. 먼저 액티비티(Activity)는 사용자 인터페이스 화면을 구성하는 컴포넌트이다. 다양한 위젯들이 화면안에 구성이되고, 사용자에게 시각적으로 보여지게 된다. 서비스(Service)는 백그라운드에서 실행되는 컴포넌트이며, 백그라운드에서 실행되기때문에, 시각적인 사용자 인터페이스를 액티비티와 다르게 가지지 않는다. 인텐트(Intent)는 앱을 개발하다보면 데이터를 주고 받고 싶은 경우가 있다. 이때 인텐트를 사용하여 데이터를 주고 받게 되는데,사용되는 것이 인텐트이다. 액션도 넣을 수 있고, 플래그도 넣을 수도 있다. 메시지라고..
[안드로이드 기본] 셀렉터 속성 정리하기 버튼에 셀렉터를 지정하는 일은 안드로이드 개발하면서 많이 발생하는 일이다. 셀렉터를 지정하는 방법과 셀렉터 속성에 대해서 정리를 해보자! 셀렉터는 /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객체를 통해 비동기..