안드로이드에서 blur효과 구현하기 : Box Blur

안드로이드에서 blur효과 구현하기 안드로이드 SDK에서는 Blur에 관한 API를 제공하고 있지 않기 때문에 일반적으로 라이브러리를 사용하여 구현하게 된다.  Blur 효과를 구현하기 위해서는 이미지를 구성하는 픽셀에 대해서 먼저 알아야 한다. 픽셀(Pixel)이란? 픽셀은 화소라고도 하며 화면 또는 이미지를 구성하는 가장 기본이 되는 단위다. 더보기…

안드로이드 스튜디오에서 Java 앱 모듈 만들기

자바 애플리케이션을 개발할 때 이클립스를 많이 사용하는데, 간단한 앱을 만들거나 모듈을 테스트 해보기 위해 안드로이드 스튜디오를 사용할 수도 있다. 다음의 순서를 따라 콘솔에 “Hello World”를 출력하는 실행 가능한 애플리케이션을 만들자 기존 프로젝트를 불러온거나 새로운 안드로이드 스튜디오 프로젝트를 생성한다. 프로젝트 패널 더보기…

프로젝트에 Dynamic Feature Module 적용 후기

Dynamic Feature Module 적용 후기 다이내믹 피쳐 모듈이란? 다이내믹 피쳐모듈 (Dynamic Feature Module, 이하 DFM)을 사용하면 베이스 모듈(일반적으로 app모듈)로부터 특정 기능과 리소스를 분리하여 App Bundle에 포함시킨다. 그런 다음 Dynamic Delivery 를 통해 안드로이드 5.0 이상을 실행하는 기기가 앱의 기능을 다운로드하는 더보기…

D8, R8 그리고 enum 이야기

D8 과 R8 안드로이드에서는 대표적인 세가지 컴파일러가 있다 코틀린 or 자바 컴파일러 D8 R8 우선,  코틀린(또는 자바) 컴파일러는 코틀린(또는 자바) 코드를 자바 프로그래밍 바이트코드로 변환한다.  하지만, 우리는 이 바이트 코드를 안드로이드기기에서 실행할 수 없다. 안드로이드에서는 바이트코드 대신 DEX 코드라고 불리는 더보기…

Android Studio 3.6 출시, 새로운 기능 알아보기

디자인 디자인 편집기의 분할된 화면 레이아웃 편집기이나 네비게이션 편집기 같은 디자인 편집기에서 이제 분할된 화면을 볼수 있는 스플릿뷰 기능을 제공합니다. 이제 코드와 UI를 동시에 볼 수 있습니다. 스플릿뷰는 기존의 프리뷰(Preview)윈도우를 대체하고 파일기반으로 확대배율이나 디자인 뷰 옵션 등의 정보를 보존한다. 컬러 더보기…

글쓴이 Charlezz,

RxJava, RxAndroid 3.0 출시, 무엇이 변경되었지!?

RxJava 3.0 RxJava란 비동기적인 이벤트 기반의 프로그램을 만들 때 사용하는 라이브러리로써 모든 것을 스트림으로 처리한다. 이번 3.0.0 릴리즈에는 코드 전반적으로 많은 정리와 성능 개선이 이루어졌다고 한다. 어떤 점들이 개선되고 변화되었는지 알아보자. 메이저 버전넘버가 수정됨에 따라 아티팩트 아이디도 변경이 되었다. 그레이들에 더보기…

찰스의 안드로이드 2차 meet-up 후기

두 번째 모임! 코로나 바이러스 유행에도 와주신 모든 분들에게 감사하단 말씀 드립니다!! 안드로이드 아키텍처 MVVM 발표자료.pdf AR SDK, 영상통화 발표자료.pdf 기술 세션 발표자를 모집합니다! 20분 내외로 간단히 자신만의 노하우나 트러블슈팅 사례가 있다면 오프라인 모임에서 공유해주셨으면 합니다. 사소하고 간단하다고 생각하는 팁도 더보기…

글쓴이 Charlezz,

macOS vs Windows 빌드 시간 테스트

테스트 목적 동일한 기기의 동일한 개발환경에서 macOS와 Windows의 빌드시간의 차이를 알아본다. 테스트 환경 테스트 기기 : 13인치 Macbook 2015 중급형 테스트 OS : macOS Mojave, Windows10 (부트캠프환경) 빌드 환경 : 안드로이드 스튜디오 버전 3.5.3, SDK Platform 29, build-tools 29.0.2 빌드 더보기…

이미지의 추가/삭제 변경사항을 감지하고 삭제된 Uri인지 확인하기

내 앱이 아닌 다른 애플리케이션에서 미디어(이미지, 동영상 또는 파일)을 추가/삭제 여부를 감지하기 위해서는 ContentObserver를 다음과 확장하여 사용할 수 있다. class PickleContentObserver(val activity:FragmentActivity) : ContentObserver(Handler()), LifecycleObserver{ … val contentChangedEvent = SingleLiveEvent<Void>() // Activity 또는 Fragment에서 구독 init { activity.lifecycle.addObserver(this) activity.contentResolver.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, 더보기…