728x90
전체 글

전체 글

    [Android] 스켈레톤 로딩 화면 구현하기 - Facebook shimmer library

    사용자가 어떠한 요청을 했는데 화면에 아무런 변화가 없다면 어떤 느낌을 받을까요? 요청이 제대로 들어갔는지, 앱이 고장 난 건지 사용자는 알 수가 없습니다. 따라서 데이터를 로딩 중에는 사용자가 알기 쉽게 로딩 애니메이션을 보여주는 것이 좋습니다. 로딩 애니메이션에는 스켈레톤 UI, 루프 애니메이션, 프로그래스 바 등의 다양한 방법이 있습니다. 이번 포스팅에서는 위의 화면과 같이 스켈레톤 로딩 화면을 구현해보겠습니다. 스켈레톤 로딩 화면은 표시될 정보의 대략적인 형태를 미리 보여줘서 다음 화면까지 부드럽게 연결해주는 역할을 합니다. 스켈레톤 로딩 화면을 구현하는 데는 여러 방법이 있지만, 가장 유명한 Facebook에서 제공하는 shimmer-android 라이브러리를 사용해보겠습니다. 라이브러리 추가 ..

    [Android] viewModelScope.launch() 간단하게 바꿔보기

    ViewModel에서 코루틴을 사용할 때는 androidx-lifecycle에서 제공하는 viewModelScope를 많이 사용합니다. viewModelScope는 ViewModel의 extension property로 ViewModel이 destroy 될 때 자식 코루틴들을 자동으로 취소하는 기능을 제공합니다. 이번 포스팅에서는 viewModelScope를 보다 간단하게 사용할 수 있는 방법을 알아보겠습니다. 확장 함수 사용하여 개선하기 ViewModel에서 viewModelScope을 사용해 코루틴을 실행할 때는 일반적으로 아래와 같은 방식으로 사용합니다. class MainViewModel : ViewModel() { init { viewModelScope.launch { // ... } viewM..

    [Android] API key값 local.properties에 안전하게 보관하기

    안드로이드 프로젝트를 하며 다른 서비스의 API를 이용하는 경우가 종종 생깁니다. 위의 사진은 네이버 지도 API의 사용 가이드입니다. 이처럼 API를 호출할 때 인증을 위해 API key값을 HTTP 헤더에 포함해야 하는 경우가 많습니다. HTTP 헤더에 API key값을 담아서 요청하기 위해선 해당 key를 어딘가에서 보관하고 있어야 합니다. API key는 인증에 필요한 비밀번호나 마찬가지이므로 보안에 유의하셔야 합니다. 만약 코드상에 상수값으로 하드 코딩이 되어 있다면, Github 등에 노출될 위험이 있기 때문에 .gitignore 파일을 통해 정보가 노출되지 않도록 보관해야 합니다. 이번 글에서는 local.properties 파일을 사용해 API key값을 안전하게 보관하는 방법에 대해 알아..

    [Git] Github에서 토큰 인증 로그인

    개인 프로젝트를 진행하던 중 아래와 같은 에러 메시지가 발생했습니다. Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. ... The requested URL returned error: 403 이유는 2021년 8월 13일 이후부터는 기존의 비밀번호 대신 토큰을 사용해서 접근하도록 변경되었기 때문입니다. 따라서 github에서 Personal access token을 발급 받아 설정해주어야 합니다. 1. Github 로그인 후 Setting 탭 클릭 2. 좌측 하단의 Developer settings 클릭 3. 좌측의 Personal access toke..

    [Android] BottomNavigationView에서 Fragment 전환

    이번 포스팅에서는 BottomNavigationView를 통해 Fragment를 전환할 때 생길 수 있는 문제점과 해결 방안에 대해 알아보겠습니다. menu_bottom_navigation.xml 우선 간단하게 menu.xml을 통해 BottomNavigationView의 item을 지정해줍니다. activity_sample.xml 다음은 Fragment를 담아줄 FrameLayout과 BottomNavigationView를 배치해줍니다. SampleActivity.kt class SampleOneActivity : AppCompatActivity() { private val binding by lazy { ActivitySampleOneBinding.inflate(layoutInflater) } ove..

    [Android] Kotlin Coroutine 기본 개념 익히기

    Coroutine이란? 안드로이드에서 비동기 프로그래밍을 하기 위해선 AsyncTask나 Rx 등 여러 솔루션들이 있습니다. 코루틴 역시 비동기 프로그래밍을 하기 위해 나온 개념입니다. 코루틴을 이용하면 메모리를 효율적으로 사용하면서 손쉽게 비동기 처리를 할 수 있습니다. 코루틴은 코틀린 언어의 하위 개념이 아닌, 오래전부터 C#, Python, Go 등의 다양한 언어에서 지원하고 있던 개념입니다. 코루틴은 Co + Routines의 약자로써 Co는 Cooperation, Routines은 functions을 의미합니다. 즉, 서로 협력하는 함수들이라는 의미로, 여러 함수들이 번갈아가면서 실행되어 비동기적인 프로그래밍이 가능합니다. 코루틴은 흔히 경량 스레드라고 불립니다. 코루틴은 스레드 위에서 실행되는..

    [Android] 클린 아키텍처에서 페이징 라이브러리 사용하기 - 도메인 계층의 의존성 문제

    이번 글에서는 Clean Architecture에서 Paging 라이브러리를 사용할 경우 의존성을 어떤 식으로 관리해야 할지에 대해 다뤄보겠습니다. 프로젝트 구조 제가 현재 진행 중인 개인 프로젝트는 Clean Architecture + Multi module로 구성되어 있습니다. 위의 사진과 같이 Clean Architecture의 data, domain, presentation 계층에 맞게 총 3개의 모듈로 나누어져 있으며, data -> domain, presentation -> domain의 의존 관계를 가지고 있습니다. 또한 data와 presentation 모듈은 안드로이드 라이브러리로 되어 있고, domain 모듈은 안드로이드에 대한 의존성이 없는 Kotlin 라이브러리 되어 있습니다. Cl..

    [Android] Paging 3.0 Library 알아보기 - 2

    이번 포스팅에는 이전 글에서 언급했었던 Paging2에 없던 Paging3.0만의 기능을 설명해보려고 합니다. Paging3.0의 개념과 기본적인 사용 방법은 이전 글을 참고해주세요. [Android] Paging 3.0 Library 알아보기 Paging이란? 페이징이란 데이터를 가져올 때 한 번에 모든 데이터를 가져오는 것이 아니라 일정한 덩어리로 나눠서 가져오는 것을 뜻합니다. 예를 들어, 구글에서 어떤 키워드로 검색하게 되면 leveloper.tistory.com 1. 데이터 스트림 변환 Paging을 사용할 때 데이터를 가공해야 하는 경우가 많이 생깁니다. 예를 들어, 데이터를 화면에 표시하기 전에 먼저 필터링을 하거나 데이터를 다른 형태로 변환해야 할 수도 있습니다. Paging3.0은 기본적..

728x90