본문 바로가기

안드로이드/안드로이드 개인공부

(8)
[안드로이드 개인공부] ContentProvider로 이미지 가져오기 구현하기 ContentProvider는 앱 사이에서 각종 데이터를 공유할 수 있게 해주는 컴포넌트이다. 안드로이드 표준 시스템에서는 연락처인 Contacts나 이미지나 동영상 등의 데이터를 보관하는 MediaStore등이 있다. 데이터를 검색, 추가, 갱신, 삭제할 수 있으며, 주로 SQLITE 등의 관계형 데이터 베이스 이용을 염두에 두고 설계되었다. ContentProvider로 부터 데이터를 읽어오자. ContentProvider로 부터 데이터를 읽어오려면 해당 ContentProvider가 어디에 있는지 알아야한다. 경로는 'content://스키마'를 가진 URI(Universal Resource Indentifier)로 지정되고, 일반적으로 접근할 대상 앱에서 정의가 된다. 이 URI는 authorit..
[안드로이드 개인공부] 안드로이드 스튜디오 단축키 안드로이드 스튜디오를 사용하면서 단축키에 대해서 알면 개발 속도에 영향을 줄 수있다. 그래서 구글링을 하는 도중 정리가 잘 되어 있는 좋은 자료가 있어서 아래와 같이 정리해보았다. Ctrl + Shift + A : Find in Action 찾고 싶은 기능을 영어로 입력하면 기능과 단축키가 나열된다. 단축키를 찾을 때 환경설정의 keymap으로 들어가는 수고를 줄여준다. 예시) 검색 문자 : Find in 같이 치면 이걸로 시작하는 기능이 표시 됨. Editing Ctrl + Space : 기본 코드 완성 Ctrl + Shift + Space : 스마트 코드 완성(예상되는 타입의 메소드또는 변수명 ) Ctrl + Q : 빠른 문서보기 Shift + F1 : 외부 문서보기(http://developer.a..
[안드로이드 개인공부] Retrofit에 대해서 단계별로 공부해보자! 프로젝트 진행하면서 무작정 Retrofit 라이브러리를 사용했었다. 그래서인지 단계별로 왜 이렇게 구현하는 것인지, 왜 이것을 사용하는지 아무것도 모른 상태로 사용했다. 그렇기에 여기에 Retrofit의 기본 단계들을 공부하여 정리하려고한다. 일단, Retrofit은 안드로이드 및 자바를 위한 안전한 REST 클라이언트라고 말할 수 있다. 2010년 당시에는 네트워크 Request 보내기 위해서는 low-level java connection을 통해서 스레딩, json 파싱 등을 스스로 구현하여 사용해야했다. 이것들은 너무 복잡했다. 하지만 Retrofit은 이러한 복잡한 구현들을 모두 숨긴다. 즉, API와 Interact 하는 것을 더 쉽게 도와준다. 그렇기에 개발자들은 더 쉬운 네트워크 통신을 하기..
[안드로이드 개인 공부] 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의 이름과 값이 결합되어 스트링..