분류 전체보기
-
하단 내비게이션 바(BottomNavigationView)Android 2025. 5. 4. 22:28
안녕하세요! 오늘은 캡스톤 진행을 하면서 꼭 필요한 UI 요소 중 하나인 BottomNavigationView 에 대해 소개하겠습니다. 저희 팀은 일차적으로 메인 대시보드 화면을 이렇게 만들어 보았습니다. 그 중 초록색 영역으로 표시한 부분은 하단네비게이션뷰(BottomNavigationView)라고 합니다. 안드로이드 공식 문서를 한번 살펴보겠습니다. 1) 정의"Represents a standard bottom navigation bar for application" → "애플리케이션용 표준 하단 내비게이션 바를 나타낸다" 2) 사용하는 이유 및 제한 요건"Bottom navigation bars make it easy for users to explore and switch between top-..
-
알람 기능 구현하기(AlarmManager)Android 2025. 4. 27. 22:10
안녕하세요! 오늘은 알람 울리는 기능에 대해서 한번 알아보고자 합니다 🙌알람 기능을 구현하기 위해서는 안드로이드 4대 컴포넌트 중에 액티비티, 브로드캐스트 리시버, 서비스 가 필요합니다. 하나씩 짚어보겠습니다!1. AlarmManager 에서 BroadcastReceiver 등록// AlarmSettingFragmentval alarmManager = requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManagerif(alarmManager.canScheduleExactAlarms()) { val intent = Intent(requireContext(), AlarmReceiver::class.java) val pending..
-
클린 아키텍처 파헤쳐보기Clean Architecture 2025. 4. 20. 22:25
안녕하세요! 이번에는 저번에 소개한 클린 아키텍처에 대해 좀 더 깊게 파헤쳐보도록 하겠습니다! 혹시 어플 사용하실 때 시간이 지남에 따라 UI 가 조금씩 바뀌는걸 체감하시나요? 이처럼 UI 는 디자이너나 앱 사용자의 요청으로 쉽게 변할 수 있는 부분입니다. 따라서 UI 를 격리하는 부분, 이에 초점을 맞춘 디자인 패턴이 고민거리였습니다. MVP, MVVM, MVI 등 여러 디자인 패턴 등이 언급되었고, compose 같은 선언형 UI 도 등장했습니다. 앱의 규모가 커질수록 아키텍처 설계에 대한 중요성이 커지게 되어 이에 대한 관심도가 높아졌습니다. 안드로이드 공식 문서에서도 앱 권장 아키텍처를 소개하고 있습니다. 여기서는 UI, Domain, Data 로 세 개의 계층으로 구분합니다. UI 계층은 데이터..
-
클린 아키텍처 소개Clean Architecture 2025. 4. 6. 16:30
안드로이드에서 중요한 개념인 클린 아키텍처에 대해 소개해보고자 합니다.클린 아키텍처란?클린 아키텍처는 소프트웨어의 구조를 설계할 때 지켜야 할 원칙과 방법을 의미합니다. 관련 다이어그램을 살펴볼까요? 클린 아키텍처는 여러 계층으로 나누어져 있는데요. 먼저 의존성 규칙과 모듈의 의미에 대해 먼저 알아보겠습니다. 의존성 규칙과 모듈각 계층은 바깥에서 안쪽 방향으로 의존합니다. 따라서, 외부는 내부를 알 수 있지만 내부는 외부에 대해서 알지 못합니다.그리고, 외부의 변경사항이 내부에 변경을 주면 안됩니다. 모듈에는 고수준 모듈과 저수준 모듈이 있는데요. 관련해서 표로 정리해보았습니다. 고수준 모듈저수준 모듈핵심적인 비지니스 로직 (추상화)상세한 기능 구현변경사항 거의 없음변경사항이 잦음동심원 안쪽동심원 바깥..
-
서버와 통신하기(retrofit)Android 2025. 3. 16. 22:34
띡띡띡... 오늘의 할일 작성 완료! 😎 어? 근데 데이터가 어떻게 저장이 되는걸까?🤔 사용자가 입력한 데이터는 어떻게 저장이 될까요?크게 내부 저장소와 외부 저장소로 나뉠 수 있는데, 데이터양이 많을 경우에 더 적합한 외부 저장소, 즉 서버에 데이터를 저장하는 방법에 대해 다뤄보고자 합니다. 안드로이드에서는 이를 위해 retrofit 을 주로 많이 사용합니다. 한번 하나씩 파헤쳐 보겠습니다! 1. retrofit 의존성 추가retrofit 을 사용하기 위해서는 먼저 관련된 의존성을 모듈 단위의 build.gradle 에 추가해야 합니다.implementation("com.squareup.retrofit2:retrofit:2.9.0")implementation("com.squareup.retrofit..
-
외부 앱 접속 막기Android 2025. 3. 3. 20:44
안녕하세요~ 오늘은 외부 앱의 접속을 차단하는 방법에 대해서 얘기해보고자 합니다 🙂 외부 앱의 접속을 막으려면 어떤게 필요할까요? 접근성 권한 : 다른 앱의 접속을 차단할 수 있는 권한을 사용자로부터 받아야 함서비스 : 차단할 앱을 백그라운드에서 감지해야함브로드캐스트 리시버 : 안드로이드 컴포넌트간의 데이터 전달 대표적으로 3개의 구성요소가 필요한데 하나씩 짚어보겠습니다 :) 접근성 권한 받아오기다른 앱의 접속을 차단할 수 있는 권한을 얻기 위해서는 사용자로부터 접근성 권한을 받아와야 합니다.val isAccessibilityPermitted = checkAccessibilityPermissions()if(!isAccessibilityPermitted) { AlertDialog.Builder(th..
-
핸드폰에 설치된 앱 불러오기Android 2025. 2. 25. 19:28
안녕하세요~ 오늘은 프로젝트를 진행하면서 알게된 핸드폰에 설치된 앱을 불러오는 방법에 대해 적어보려고 합니다.🙂 코드를 작성하는 적절한 위치만약 프로젝트가 단일 액티비티 구조라면, 설치 앱 목록을 불러오는 코드는 프래그먼트보다는 액티비티의 onCreate 생명주기에 작성하는 게 좋습니다. 왜냐하면, 프래그먼트는 생명주기가 생성 및 소멸될 수 있지만, 액티비티의 생명주기상 onCreate는 앱을 실행한 후 한 번만 호출되기 때문입니다. 변수 설정private lateinit var totalApps: MutableListprivate lateinit var requiredApps: List totalApps 변수는 핸드폰에 설치된 모든 앱 목록을 저장할 변수이고, requiredApps는 시스템 앱을 제..
-
Image & Network ImageCompose 2024. 12. 22. 17:10
오늘은 jetpack compose 에서 내부 저장소에 있는 이미지를 불러오는 방법과 외부 서버로부터 이미지를 불러오는 방법에 대해 다뤄볼려고 합니다. 🙂 Image (정적 이미지)Image 같은 경우에는 안드로이드 프로젝트 내 폴더(drawable) 에 있는 이미지를 불러올 때 사용합니다.총 3가지 방법으로 이미지를 불러올 수 있습니다.painter가장 많이 사용하는 방법입니다. drawable 폴더 내에 있는 이미지를 불러올 때 사용합니다. 코드는 다음과 같이 작성합니다.Image( painter = painterResource(id = R.drawable.image), contentDescription = "이미지에 대한 설명" // contentDescription = null)..