Android
-
View Binding in FragmentAndroid 2023. 2. 24. 02:10
Fragment에서 View Binding을 사용 시 발생하는 이슈가 있어 해당 이슈를 알아보는 글을 포스팅하려고 합니다. Problems in ViewBinding View Binding in Fragment private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _..
-
Custom CalendarAndroid 2023. 2. 24. 02:03
CustomCalendar 생성하기 Android 내부에도 Calendar View가 존재합니다 java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.FrameLayout ↳ android.widget.CalendarView 하지만 커스텀할 수 있는 범위도 너무 한정적이고, 예쁜 디자인에 맞는 캘린더를 개발하기 위해서는 직접 달력을 커스텀하여 개발하는 과정이 필요합니다. 필자는 캘린더를 커스텀하기 위해서 RecyclerView + GridLayoutManager를 사용했습니다. 캘린더의 생성만을 확인하기 위해 databinding, LiveData, architecture등의 사용을 제외했고, 추가적인 기능..
-
Dark ThemeAndroid 2023. 2. 24. 01:52
안녕하세요. 10기 양민욱입니다 :) 오늘의 주제는 Android Q에 도입된 굉장히 인기가 많았던 기능으로 저 또한 평소에 선호하고 있는 Dark Theme입니다!! Dark Theme 다크 테마는 안드로이드 스튜디오, 크롬과 최근에 GitHub에서 다크 테마를 공식적으로 지원해 주면서 Mash-up 전체 톡방에 한번 이슈가 되었던 기능이기도 합니다. 다크 테마를 앱에서 사용하면 어떤 점이 좋을까요? 다크 테마의 장점 전력 사용량을 상당히 절약할 수 있습니다(기기 화면 기술에 따라 다름). 시력이 낮은 사용자와 밝은 빛에 민감한 사용자를 위한 가시성을 개선합니다. 누구나 어두운 환경에서 쉽게 기기를 사용할 수 있습니다. 필수적인 기능은 아니지만 다크 테마를 좋아하는 저와 같은 사람들을 위해, Dark ..
-
Custom ViewAndroid 2023. 2. 24. 01:44
안녕하세요 안드로이드 9기 강다현입니다. 이번에 알아볼 내용은 Custom View 입니다! 안드로이드로 앱을 개발할 때, 기존에 존재하는 뷰에 기능적인 부분을 조금 더 커스터마이징해서 구현하거나 여러 화면에서 같은 기능, 속성을 가지는 뷰를 재사용하고 싶을 때 여러 뷰를 통합하면서 원하는 속성을 넣고 싶을 때 등등… 이러한 needs가 생길 때 Custom View를 만듭니다. 그러면 어떻게 만드는가? 부터 시작해보도록 하겠습니다. Custom View 만들기 View 기본 먼저 View를 좀 알아야 Custom View도 만들던가 하겠죠? 기본적으로 모든 view 클래스들(Button 이라던지..ImageView 라던지)은 View 클래스를 상속하기 때문에, 바로 View를 상속하거나 subclass..
-
Dagger - Raw DaggerAndroid 2023. 2. 24. 01:32
Dagger - Raw Dagger 이번에는 제가 프로젝트에 적용하며 공부해 본Dagger2에 대해 복습하는 겸! 해서 글을 작성해 보겠습니다. (이하 Dagger) Dagger는 리플렉션을 사용하지 않고 런타임에 바이트코드도 생성하지 않는 것을 특징으로 가지는 Android의 DI 라이브러리입니다. DI란 무엇인가? 에 대해서는 일단 알고 있다고 가정하겠습니다. 흔히 다른 DI 라이브러리라고 알려지는 Koin과 비교되는데 Koin은 정확히 말하자면 DI 라이브러리는 아닙니다. Koin은 Service locator라는 패턴이고, 이와 관련해서는 진성님의 글을 참조하도록 합시다. 아무튼 이런 Dagger는 보일러 플레이트 코드를 없애는 나름의 단계를 거친다고 할 수 있습니다. (완전히 자의적으로 정한 단..
-
Room - Android Local DatabaseAndroid 2023. 2. 23. 13:02
🙇 안녕하세요 ! Mash-Up 10기 Android Developer 정현성 인사드립니다. 🙇 이번 포스팅 주제로 무엇을 할까 고민을 하다,,,, 최근 취업 준비를 하며 그동안 개발했던 애플리케이션들을 하나의 포트폴리오로 보여주는 애플리케이션을 개발한 적이 있습니다. 개발하며 사용했던 기술 스택 중 하나인 Room에 대해 다시 정리해볼 겸 포스팅 주제로 선정하였습니다. 💾 Local Database 안드로이드에서는 앱의 데이터를 효율적으로 관리하기 위한 저장소로 SQLite라는 데이터베이스를 제공하고 있습니다. 이는 다른 외부 Database들과 달리 소규모 데이터를 관리하고 사용하는 데 적합한 관계형 데이터베이스입니다. 예를 들어, 애플리케이션 사용 과정에서 발생하는 용량이 크지 않은 데이터들은 굳이..
-
Android UI TestAndroid 2023. 2. 14. 14:48
안녕하세요. Mash-UP 안드로이드 10기 양민욱 입니다 :) 여러분은 Android 개발 과정에서 테스트를 도입하시나요? 저도 이번 포스팅을 공부 하면서 처음 도입 했는데요. 테스트는 Android 프로젝트를 생성할 때 기본으로 생성되어 있을 정도로 구글에서 권장하고 있습니다. 개발 과정에서 테스트를 도입하면 어떤 점이 좋을 까요? 이 질문에 대한 구글의 공식 답변은 아래와 같습니다. 서비스 장애를 초기에 신속한 발견 기존 코드의 호환성을 신경 쓰지 않고 코드 수정/ 기능 추가 가능 코드의 안전성 보장 테스트는 작성한 코드에 대한 안정성과 정확성, 기능 동작이 올바르게 동작하는지 확인 해주고, 무엇보다 이미 테스트로 정확성을 인정된 코드를 수정한 이후 기존 코드와 호환성을 확인할 때 유용하게 사용할 ..
-
Replace LiveData, SingleLiveEvent with Coroutines!Android 2023. 2. 14. 14:34
Flow 와 Channel 의 작고 귀여운 기능 안녕하세요. Mash-up Android 10기 정세희라고 합니다. 요즘 쭉쭉 상승세인 Coroutine 의 귀여운 아이들인 Flow 와 Channel 의 간단한 기능 하나를 소개하기 위해 나타나게 되었습니다 : ) 안드로이드에서도 이제 별도의 라이브러리 추가 없이 Coroutine을 기본적으로 사용할 수 있습니다. 비동기 라이브러리의 대표적인 Rxjava를 뒤쫓고 있는 무서운 녀석이죠. 앞서 매쉬업 안드로이드 블로그에서 기본적인 Coroutine 동작방법에 대해서 설명했다면, 이번 글에서는 비동기적으로 사용하는 방법 외에 MVVM 아키텍처에서 자주 쓰이는 LiveData 와 SingleLiveEvent 를 Corouitne의 Flow, Channel 로 ..