본문 바로가기

안드로이드14

안드로이드 Annotation을 이용한 코드 생성(2) 안녕하세요. 지난 포스팅에 이어서 이번에는 Annotation을 이용한 코드생성을 진행해보겠습니다. 혹시나 안보셧다면 먼저 보고 이 글을 읽으시길 바랍니다. https://dog-footprint.tistory.com/49 안드로이드 Annotation을 이용한 코드 생성(1) 안녕하세요. 이번 포스팅에서는 Annotation을 이용한 코드 생성하는 방법을 알려드리겠습니다. 이전에 어노테이션과 관련된 포스팅을 한적이 있었는데 이것에 대한 연장선이라고 생각하시면 되겠 dog-footprint.tistory.com 일단 코드 생성을 위해선 몇가지 개념을 알아야 합니다. FileSpec : 코드생성 파일을 정의하는 클래스 TypeSpec : 파일생성시 어떤 타입의 파일을 정의하는 지에 대한 클래스(예를 들면 .. 2021. 8. 8.
안드로이드 Annotation을 이용한 코드 생성(1) 안녕하세요. 이번 포스팅에서는 Annotation을 이용한 코드 생성하는 방법을 알려드리겠습니다. 이전에 어노테이션과 관련된 포스팅을 한적이 있었는데 이것에 대한 연장선이라고 생각하시면 되겠습니다. https://dog-footprint.tistory.com/43 자바 어노테이션(2) - 리플렉션 안녕하세요. 이번 포스팅에서는 어노테이션이 리플렉션을 통해 어떻게 사용될 수 있는지 적어보려고 합니다. 리플렉션이란 클래스의 정보를 알아내는 것인데 런타임에 동적으로 클래스 정보를 dog-footprint.tistory.com 일단 안드로이드에서 코드 생성을 하기 위한 기본적인 구조로는 processor 모듈과 annotation 모듈을 생성해야 합니다. processor 모듈은 annotation에 대한 코드.. 2021. 8. 2.
자바 어노테이션(2) - 리플렉션 안녕하세요. 이번 포스팅에서는 어노테이션이 리플렉션을 통해 어떻게 사용될 수 있는지 적어보려고 합니다. 리플렉션이란 클래스의 정보를 알아내는 것인데 동적으로 클래스 정보를 얻을 수 있는 프로그래밍 방법입니다. 클래스만 알고 있다면 해당 클래스의 변수나 메소드 등을 알 수 있습니다. 이 리플렉션을 통해 클래스에 어떤 어노테이션이 적용 되었고 해당 어노테이션에 대한 정보 또한 알 수 있습니다. 코드는 코틀린 기준으로 작성되었으며 이를 기준으로 설명드리겠습니다. 일단 프로젝트에 코틀린에서 리플렉션을 사용하기 위한 라이브러리를 설치합니다. implementation "org.jetbrains.kotlin:kotlin-reflect:1.5.20" 어노테이션과 이를 적용할 data class를 선언하겠습니다. @k.. 2021. 6. 23.
안드로이드 뷰가 그려지는 과정 안녕하세요. 이번 포스팅에서는 안드로이드에서 뷰가 그려지는 과정에 대해 포스팅해보겠습니다. 액티비티가 포커스를 얻게 될때 레이아웃을 그리게 요청하는데요. 뷰가 그려지는 건 레이아웃 트리의 루트노드 부터 시작하게 됩니다. 레이아웃 트리는 말그대로 레이아웃에 있는 뷰그룹이나 뷰들을 트리형태로 나타난건데 예를 들면 이런 구조로 되어 있다면 이를 오른쪽 처럼 전위순회 하면서 그려지는 방식입니다. 레이아웃을 그리는 과정은 측정패스(Measure Pass)와 레이아웃패스(Layout Pass)의 가 있습니다. Measure Pass는 onMeasure 메소드를 호출하는데 뷰의 크기를 결정하기 위한 메소드 입니다. Layout Pass는 onLayout메소드를 호출하는데 뷰의 위치를 결정하기 위해 호출되는 메소드 입.. 2021. 6. 9.
안드로이드 구글STT에서 Recording이 안되는 이유 안녕하세요. 이번 포스팅은 구글STT를 실행하면서 Recording하는 방법을 알려드리고 싶지만 현재 기술적으로 불가능해서 왜 안되는지에 대한 이유를 알려드리기 위해 적게 되었습니다. 구글STT는 Recording한 데이터를 가지고 서버에 보내서 해당 결과값을 받아 처리하게 되어있습니다. 이 과정에서 마이크 채널을 구글 STT가 점유하게 되는데 우리가 Recording을 하기 위해 AudioRecord나 MediaRecord를 쓸때도 마이크 채널을 씁니다. 즉 2개의 앱에서 마이크 채널을 사용하기 때문에 먼저 실행된 앱이 먼저 점유권을 가지에 되어 한쪽은 실행되고 다른 한쪽은 실행이 안되는 것입니다. 입력 공유에 대한 내용은 아래 사이트에서 확인하실 수 있습니다. developer.android.com/.. 2021. 4. 26.
Android MVVM Example 프로젝트 안녕하세요. 오랜만에 글을 쓰게 되었습니다! 첫 직장을 1년동안 다니다 얼마전 퇴사하고 다시 블로그에 글을 쓰게 되었네요ㅎㅎ 안드로이드에서 MVVM에 대한 예시가 많은데 모양이 조금씩 다릅니다. 이번 포스팅에서는 제가 MVVM을 기반으로 한 프로젝트를 소개하려 합니다. 서버통신과 로컬디비를 기반으로 프로젝트를 구현했고 BindingAdapter를 이용해 뷰와의 디펜던시를 없앴습니다. 코드는 깃허브에 올려놓았습니다. github.com/ckdrb7017/MVVMDemo ckdrb7017/MVVMDemo Contribute to ckdrb7017/MVVMDemo development by creating an account on GitHub. github.com 2021. 4. 1.