안녕하세요. 점냥입니다:) 안드로이드에서 제공해주는 폰트 대신 디자이너가 요구하는 폰트를 적용해야 할 때가 생깁니다. 안드로이드 폰트를 적용하는 방법으로 두 가지가 존재한다고 하여 각각의 방법으로 포스팅을 진행하려고 해요! Font Resource Android 8.0(API 수준 26)부터 Font 리소스가 추가되었다고 합니다. res/font 경로에 폰트와 관련된 리소스 파일을 생성하고 R 파일에 의해 접근이 가능하다고 해요. ex) R.font.my_font Q. Android 8.0부터 지원한다고 한다면 그 이전 버전에서는 사용할 수 없는 건가요? 아니에요. 가능합니다! Support Libaray를 이용해 Android 4.1(API 수준 14) 이상부터는 Font를 사용할 수 있어요. 자세한 ..
안녕하세요 점냥입니다:) 이전 딥링크 - 1 글에서는 URL Scheme 방식과 한계점에 대해서 간단히 알아보았습니다. 이번 포스팅에서는 구글에서 URL Scheme 방식의 한계점을 보안한 App Link에 대해서 알아보도록 하겠습니다. App Link 개요 2015년도에 Google/IO에서 발표한 기술이에요. Scheme 값이 중복되는 문제를 해결하였습니다. App Link는 http, https로 Scheme를 제한해서 URL Scheme 자체가 하나의 도메인을 나타나게끔 변경하였습니다. URL Scheme에서 자유롭게 정의했던 market:// 이나 Line:// 형식은 사용할 수 없습니다. App Link를 적용한 Intent-filter 코드를 보면 scheme을 http, https로 설정했..
안녕하세요 점냥입니다:) 안드로이드 개발자인 여러분들은 어떤 방식으로 실 기기에 앱을 빌드하고 있으신가요? 저는 처음에 LG 그램 노트북으로 안드로이드를 개발할 당시에는 USB 선으로 핸드폰과 노트북을 연결해서 빌드를 해왔습니다. 그런데 맥북으로 넘어오니까 노트북에 USB 포트가 사라졌더라구요 ㅠ _ ㅠ 커넥터를 별도로 구매해서 사용중인데 매우 귀찮습니다. 여러분들도 그렇지 않나요? 본론으로 돌아와서 이번 포스팅 주제는 WiFi를 사용해서 간편하게 앱을 설치하는 방법에 대해서 소개하려고 합니다! 포스팅 기준 Android Studio 4.1 버전입니다. Android plugins 설치 Android Studio에서 여러 plugin을 설치할 수 있어요. Java 대신 사용하는 Kotlin도 plugin..
안녕하세요. 점냥입니다 :) 2021년 1월의 끝이 벌써 다가오고 있어요. 그리고 곧 채용 시즌인가봐요. 🤗 채용 공고 정보를 올려 주는 톡방에 들어가 있으면 요즘 여러 좋은 기업에서 채용 공고들이 올라오고 있는 것을 볼 수 있어요. 저는 그럴때마다 얼른 기술 면접 준비를 해야지 해야지하고 다짐하고 있습니다. 그런 의미에서 이번 포스팅 주제로 Android 기술 면접에서 기초적인 개념일 수도 있지만 헷갈리는 여러 Lifecycle 질문에 대해서 답을 확인해보려고 해요. 이 포스팅을 준비하기 전, "Lifecycle에 대해서 어느정도 다룰 예정이신가요? 범위 엄청 넓어요!" 라는 질문을 받았어요. 사실 주제를 처음 생각할 때는 간단한 개념처럼 느껴졌는데 포스팅을 위해 정리 하다보니 Activity , Fr..
안녕하세요. 점냥입니다 :) 오늘의 주제는 Android Q에 도입된 굉장히 인기가 많았던 기능으로 저 또한 평소에 선호하고 있는 Dark Theme입니다!! Dark Theme 다크 테마는 안드로이드 스튜디오, 크롬과 최근에 GitHub에서 다크 테마를 공식적으로 지원해주면서 Mash-UP 전체 톡방에 한번 이슈가 되었던 기능이기도 합니다. 다크 테마를 앱에서 사용하면 어떤 점이 좋을까요? 다크 테마의 장점 전력 사용량을 상당히 절약할 수 있습니다(기기 화면 기술에 따라 다름). 시력이 낮은 사용자와 밝은 빛에 민감한 사용자를 위한 가시성을 개선합니다. 누구나 어두운 환경에서 쉽게 기기를 사용할 수 있습니다. 필수적인 기능은 아니지만 다크 테마를 좋아하는 저와 같은 사람들을 위해, Dark Mode 기..
안녕하세요. 점냥 입니다!!! Testing your app is an integral part of the app development process Android Developer 사이트의 원문입니다. 앱 개발하는 과정에 있어서 테스트는 핵심 적인 부분을 차지한다고 하는데요. 프로젝트 구조가 복잡해지는 만큼 기능의 확장 및 유지 보수 측면에서 테스트는 변경된 코드가 기존 기능을 망가뜨리지 않는 지 미리 체크 할 수 있다는 점에서 많은 이점을 주기 때문입니다. 부끄럽게도 저도 지금 껏 개발 했던 프로젝트에 제대로된 테스트를 수행해본 적이 없는데요. 여러분도 저와 같다면 함께 천천히 테스트에 대해서 알아가 봅시다:) Unit Test Unit Test는 테스트 종류 중 가장 작은 단위이며 로컬 기기(개발..
안녕하세요. 점냥입니다:) 이번 포스팅에서는 MVP 아키텍처 패턴에서 Model에 관하여 알아보려고 합니다. 구글의 Blueprints v2 다양한 아키텍처 샘플 코드와 안드로이드 개발자 사이트의 예제를 보면 데이터를 관리하는 부분의 클래스 이름이 Model이 아니란 것을 느낄 수 있다. data, source 등 새로운 개념이 등장하여 이것이 모델인가?라는 의문이 필자도 들었다. 해당 개념은 Repository Pattern이라는 디자인 패턴 개념이다. Repository Repository pattern은 Model에 대해서 관심사 분리를 수행한 개념이라고 할 수있습니다. MVP에서 Model이랑 데이터를 요청하고 받는 Presenter는 최대 관심사가 뭘까요? 바로 View에게 넘겨줄 Data를 받..
애니메이션의 프레임과 비슷하게 안드로이드의 화면도 여러 개의 프레임들이 순차적으로 그려지고 완성되어 사용자에게 보이는 과정을 거칩니다. 초당 프레임 수가 많아질수록 사용자는 부드럽게 느낍니다. 그런데 이상하게 유명한 앱과 달리 자신이 만든 앱이 버벅거린다는 느낌을 받은 적이 있나요? 답은 뷰를 그리는 과정 속에서 여러분들의 불필요한 코드와 로직에 의해 하나의 프레임을 그리는 속도가 느려지게 되는 것입니다. 결과적으로 초당 프레임 수가 낮아지고 사용자는 버벅거린다는 느낌을 받게 됩니다. 이번 포스팅에서는 한 픽셀을 여러 번 그리는 오버드로에 대해서 알아보겠습니다. 문제점들 View Groub의 중첩으로 발생할 수 있는 오 버드로 LottoLike 일부분 코드입니다. 자세히 보시면 자식인 RelativeLa..
안녕하세요 점냥입니다:) 이번 포스팅에서는 JitPack을 사용해 Android 라이브러리를 배포해보는 방법에 대해 설명하겠습니다. 라이브러리를 배포하기 위해서는 모듈을 생성해야 하는데요. 만약 모듈에 대해 궁금하신 분들은 아래 링크를 확인해주세요. 라이브러리 생성 Step 1. JitPack 배포하기 위한 준비 Github 홈페이지 JitPack은 Github Repository의 최신 Release를 가져와서 배포하는 형식입니다. 따라서 Github 계정이 없다면 시작조차 할 수 없어요. 따라서 GIthub 계정을 미리 만드셔야 합니다. 계정이 있으시면, 자신이 개발한 라이브러리를 Github Repository에 올리시면 됩니다. 이 부분으로 인해 라이브러리의 코드를 공개하기 어려운 경우 다른 방식..
이제까지 색상별로 Drawable를 생성했었는 데 너무 비효율적이더라구요 코드상으로 color를 변경할 수 있습니다. 코드로 Drawable 속성 변경하기 val drawable : Drawable = imageview.drawable val color = ContextCompat.getColor(mContext,R.color.colorToSet) if (drawable is ShapeDrawable) { drawable.paint.color = color } else if (drawable is GradientDrawable) { drawable.setColor(color) }