Android 96

MVVM 패턴 - 설명(1) (View)

MVVM 패턴은 사용하는 사람들마다 조금씩 만드는 방식이 달랐다. 여러 방식들을 보고 그 중에서 가장 개인적으로 마음에 드는 방식의 예제를 보고 따라하며 이해했다. 이번 공부에는 LiveData , RxJava , Retrofit2, Databinding 이 사용되었다. 사전 지식이 없다면 이해하기 힘들 수 있다. 먼저 View 파트부터 설명 해보겠다. View 는 전에도 말했듯 유저가 클라이언트랑 소통하는 화면을 의미한다. 안드로이드에서는 Activity 를 말하겠다. MVVM 패턴에서의 View는 ViewModel에서 변경되는 값들을 Observer 패턴으로 관찰하며(이 프로젝트에서는 LiveData가 이를 쉽게 해결한다.) 변경되는 값들을 그대로 바꿔서 보여준다. 일단 나의 경우는 모든 Activi..

Android 2021.02.11

안드로이드 하드웨어 모듈과 TCP/IP 소켓 통신

소켓 통신은 대학교때도 프로젝트로 진행했던 기억이 난다. 라즈베리파이로 온도센서, 습도센서를 이용해서 소켓 통신을 하여 경보기를 만들었는데 그때는 c언어로 소켓통신을 만들었기에 어렵게 어렵게 완성했던 기억이 있다. 지금은 안드로이드 개발에 큰 관심을 가지고 있기도 하고 정리해두고 싶어서 이렇게 글을 쓴다. 직접 혼자서 만들어보면 좋겠지만 당장 라즈베리파이나 아두이노도 없어서 인터넷글을 보고 사용법에 대해서 공부하고 있다. 공부하다보니 Android Things 라는것도 있던데 기회가 되면 이것도 알아보고 싶다. 열심히 공부하며 글을 쓰고 있었는데 정말 소개가 잘 된 블로그가 있었다.아래 내용은 해당 출처에 있는 글이다. 출처 :ddangeun.tistory.com/31 TCP/IP 소켓 통신 TCP/IP..

Android 2021.01.28

안드로이드에서의 Parcelable vs Serializable

안드로이드를 개발하다보면 다른 액티비티로 데이터를 전달할때 그 데이터가 복잡한 클래스의 객체라면 Serializable 또는 Parcelable 를 사용하여 직렬화 하여 인텐트에 추가해야한다. 그럼 직렬화는 뭘까? 직렬화는 1. 메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해 byte 코드 형태로 나열하는 것이다. 여기서 메모리 내에 존재하는 정보는 즉 객체를 말한다. 2. JVM 의 메모리에 상주 되어있는 객체 데이터를 바이트 형태로 나타내는 기술 역직렬화 라는 개념도 있는데 말그대로 위의 내용의 반대라고 생각하면 된다. Serializable 부터 뭔지 알아보자. Serializable 는 Java 에서 제공하는 interface다 사용하기도 쉽고 직렬화 또한 잘된다. 그러나! 사용하기..

Android 2021.01.28

안드로이드 DI 라이브러리 Koin 에 대해

DI 가 의존성 주입을 의미하는 단어라는것은 알고 있었다. Spring 공부할때 bean 으로 의존성 주입하고 어노테이션으로 썼던 기억이 난다. 안드로이드에서는 사용해보지 않았는데 Dagger2 라는 라이브러리가 그 역할을 해주고 있다는건 알고 있었다. 그렇게 알고만 있다가 새로 공부하고 프로젝트에 적용해보고 싶은 욕심이 생겨서 찾아보던 중 Dagger2와 성능차이도 나지 않는데 훨씬 쓰기 쉽고 직관적인 라이브러리 Koin 이 있다는걸 알고 사용해보기로 했다. 쉽고 좋은데 쓰지 않을 이유는 없지. 먼저 DI를 왜 쓸까? 사용하면 얻는 이점부터 알아보자. - 의존관계 설정이 프로그램 실행시에 이루어지기 때문에 컴포넌트간 결합도를 낮춘다. - 코드 재사용성이 증가한다. - 단위 테스트의 편의성을 높여준다. ..

Android 2021.01.24

안드로이드 MVVM 패턴 - 개요

얼마전부터 공부하고 있는 MVVM 패턴에 대해 정리하기위해 포스팅을 하기로 마음먹었다. 사실 MVVM 패턴 자체만 두고보면 엄청 어렵고 그런 개념은 아닌데 제대로 만들기 위해서 들어가는 여러가지 따라오는것들이 어려운거 같다. LiveData 라던지 RxJava 라던지.. 이런것들도 다음 포스팅에 적을것이다. 일단 MVVM 패턴에 대해서 먼저 알아보자. MVVM 패턴은 예전 MVP 포스팅에서도 언급했듯 MVP패턴의 View와 Presenter , Model 사이이 양방향 의존성이 심해서 이것을 해결하기 위해 만들어졌다. MVVM 은 크게 View - ViewModel - Model 로 이루어져있고 단방향 의존성을 가진다. VIew는 ViewModel 을 참조하지만 ViewModel 은 View 를 참조하지..

Android 2021.01.24

마법같은 애니메이션 Lottie 에 대해서

안드로이드 개발자들이 디자인과 애니메이션까지 손수 제작하기란 쉽지 않다. 물론 그런 능력자들도 많이 있기 마련이지만.. 그래서 강력하지만 gif 에 비해 훨씬 가볍고 적용하기도 쉬운 Lottie 에서 설명해보려고 한다. 이 라이브러리는 주거대여 서비스로 유명한 에어비엔비에서 제작했다. 애프터 이펙트라는 디자인 툴에서 만든 애니메이션을 json 파일로 변환하여 넣어주기만 하면 바로 애니메이션이 앱에 작동한다. json 파일이라 크기도 가볍다. 그럼 어떻게 적용하면 될까? 우선 코드를 보자. bulid.gradle 에 라이브러리를 추가해준다. implementation 'com.airbnb.android:lottie:버전' // 로티 사용하고 싶은 화면에 아래처럼 객체를 생성한다. var Lottiehear..

Android 2021.01.19

코틀린 retrofit2 공부

Retrofit2 https://square.github.io/retrofit/ 스퀘어 사의 오픈소스 라이브러리 A type-safe HTTP client for Android and Java type-safe = "타입에 안정적이다/컴파일 시 타입체크를 할 수 있어 런타임 전에 타입에 대한 문제를 미리 잡는다/네트워크로 오가는 데이터의 타입을 필요한 형태로 주고받을 수 있도록 보장한다. " 사용계기 HttpURLConnection이 싫은데 이제 더이상 피할 수 없어서 서버 DB를 구축했는데 모처럼 클라이언트에서 써보고 싶어서 사실 안드로이드에서 서버DB에 접근할 방법이 없어,, 프로젝트에 적용 1. 목표 클라이언트(안드로이드)에서 서버로 검색어를 request로 주고, 원하는 객체로 response를 ..

Android 2020.11.16

안드로이드 - service 정리

이 글은 제가 작성한 글이 아닙니다. 좋은 글이 있어서 가져왔는데 출처를 잊었습니다. 죄송합니다 ㅠㅠ 오늘은 안드로이드 4대 컴포넌트 중 하나인 Service에 대한 포스팅입니다. 안드로이드 4대 컴포넌트가 뭐냐구요? 안드로이드 어플리케이션을 구성하는 메인 구성 요소라 할 수있는데, 우리가 가장 많이 사용하는 Activity가 그 중 하나입니다! 1. Android Components [그림 1] 안드로이드 4대 컴포넌트 2. 서비스(Service)란? 안드로이드에서 Activity는 Background에서 작업을 수행할 수 없다. 이를 위해 우리는 Service를 사용한다. 예를 들면 노래를 켜고 웹 서핑을 하는 상황이 있다. 우리가 음악을 듣는 어플을 사용할때 보통 어플에 들어가 노래를 켜고 다른 화..

Android 2020.11.14

안드로이드 이중스크롤뷰

스크롤뷰 안에 스크롤뷰가 있을때의 각 스크롤뷰간의 스크롤 이벤트의 충돌을 방지하기 위함 srcollViewB.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) srcollViewA.requestDisallowInterceptTouchEvent(false); else srcollViewA.requestDisallowInterceptTouchEvent(true); return false; }); 설명 : ScrollViewA와 ScrollViewB가 있을때 안쪽 스크롤뷰(ScrollVie..

Android 2020.08.24