Android

안드로이드/안드로이드

CNA(Chirag Note App) 클론코딩 & 리펙토링 회고

https://www.youtube.com/playlist?list=PLam6bY5NszYN6-a1wt7yRISWfmYPdkbMu  Android App Development | Notes App | Android StudioHello, in this tutorial series we are going to build an android app called: Notes App. This tutorial series is going to be a FREE complete Android developmen...www.youtube.comChirag Note App을 클론 코딩해 보았습니다.사용 기술스택구분원본리펙토링언어JAVAKotlinUIxmlxml디자인패턴MVCMVVM아키텍처 패턴패키징클린아키텍처DI없음..

안드로이드/안드로이드

TBA(Ticket-Booking-app) 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. Clean Architecture 구조 문제이전의 Planfit 코드와 다르게 이번에는 Repository를 만들었습니다.이전에는 Repository를 따로 만들지 않고 UseCase만으로 구현했기 때문에, 구조에 대한 깊은 고민을 하지 않았습니다. 하지만 이번에 Repository를 구현하고 UseCase의 인터페이스를 분리한 후, 그 구현체를 Data Layer에 두고 사용하다 보니 보일러플레이트 코드가 생기고, 이런 방식에 대해 의문이 들기 시작했습니다. 그래서 Clean Architecture에 대해 다시 찾아보면서, 제가 구조를 잘못 만들었다는 것을 깨달았습니다. Clean Architecture에서는 Repository가 여러 데이터 소스(API, DB 등)를 관리하고, UseCase는 ..

안드로이드/안드로이드

Ticket Booking app - UiLover Android 클론코딩 회고

https://www.youtube.com/watch?v=9aoUe0gPljYTicket Booking app을 클론 코딩해 보았습니다. 사용 기술스택구분원본리펙토링UIxmlxml디자인패턴MVCMVVM아키텍처 패턴패키징클린아키텍처DI없음Hilt통신Firebase RealtimeDatabaseFirebase RealtimeDatabase이미지 로딩glideglide오픈소스 라이브러리chip-navigation-bar(ismaeldivita),BlurView(Dimezis)chip-navigation-bar(ismaeldivita),BlurView(Dimezis) 과정해당 프로젝트는 유튜버분이 단순 화면만 구현하기 위해서 그런지 유지보수를 도와주는 컨벤션이라든가 deprecated 된 함수를 쓴다든가 Act..

안드로이드/안드로이드

Planfit 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. StateFlow를 사용하여 Splash화면에서 알맞은 화면으로 navigation을 하거나  대기하는 역할을 수행해야 되는데 화면의 이동이 원할이 되지 않았습니다. 이전 코드@HiltViewModelclass PlanfitSplashViewModel @Inject constructor( private val getPlanfitLoginType: GetPlanfitLoginType,) : ViewModel() { private val _isLoginFlow = MutableStateFlow(LoginEvent.UnChecked) val isLoginFlow: StateFlow get() = _isLoginFlow fun checkLoginState() = viewM..

안드로이드/안드로이드

Planfit onBoarding 페이지 클론 코딩 회고

현재 서비스 중인 Planfit이라는 앱의 onBoarding페이지를 클론 코딩해 보았습니다.지금까지 클론코딩을 할 때는 강좌나 책 등을 보며 해당 프로젝트를 클론코딩을 했었는데 이번에는https://wwit.design/2023/07/24/planfit/ Lifeplus한국의 UI/UX 모바일 패턴을 수집합니다.wwit.design해당사이트를 참고하여 만들었습니다. 화면만 보고서는 해당 화면이 어떻게 돌아가는지 알 수 없었습니다. 그래서 해당 앱을 설치하고 어떻게 돌아가는지 관찰 후에 해당 화면의 흐름을 다이어그램으로 만들었습니다.다이어그램을 만들다 보니 wwit에 나오는 Planfit페이지는 iOS 환경에서의 이미지라는 것을 알게 되었습니다. 그렇다고 안드로이드 기기에서의 모드화면을 캡처하고 해당 화..

안드로이드/AAC(Android Architecture Components)

[AAC] DataBinding의 정의와 적용

AAC 중 DataBinding에 관하여 포스팅을 해볼까 합니다. DataBinding 드로이드 애플리케이션에서 UI 구성 요소를 애플리케이션 데이터 소스에 결합할 수 있는 기술입니다. 이 기능을 사용하면 XML 레이아웃 파일에서 직접 데이터 객체에 접근할 수 있으며, 코드의 간결성과 유지보수성을 크게 향상시킬 수 있습니다.  이렇게 설명한다면 사람들은 ViewBinding과 무슨 차이가 있냐고 의문을 가질수있습니다. 이 둘의 차이는  XML 레이아웃 파일에서 직접 데이터 객체에 접근할 수 있다는 점입니다.  이는 큰차이입니다. ViewBinding의 장점은 더 이상 View를 findViewById를 통하여 가지고 올필요가 없어진 것입니다. 이것만으로 코드의 양이 줄어 좀 더 간결하고 성능의 향상을 볼..

안드로이드/안드로이드

[Android/Kotlin] flatMapLatest 로 리팩토링

필자가 앱을 완료하고 리팩토링을 하는 중이었습니다. override fun getAllBudgetsToFlowWhenBudgetChanged(): Flow = flow { budgetDataSource.getAllBudgetsOrederByDateToFlow().collect { budgets -> val list = budgets.map { budget -> val categoryProceduresList = categoryProceduresDataSource.getAllCategoryProceduresWithBudgetNum(budget.num) val reduce = categoryProceduresList.sumOf { categoryProcedures -> categoryProcedures.pr..

안드로이드/UI

[Android/UI] EditText 입력시 형식대로 넣어주기

이러한 EditText에 저는 값을 입력하면 내가 원하는 형식대로 EditText의 값을 바꿔주고 싶습니다. //in Activity private val decimalFormat = DecimalFormat("#,###") private var resultMoney: String = "" budgetMoneyEdittext.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { } override fun onTextChanged(charSequence: CharSequence?, p1: Int, p2: Int, p3: Int) { if(..

안드로이드/안드로이드

[Android/Kotlin] 액티비티의 종료로 ViewModel이 죽어버렸다!

https://github.com/LESSERAFIM-Aespa/TripMate/issues/126 가계부 컨탠츠(BudgetContentActivity) 가계부 수정시 버그 · Issue #126 · LESSERAFIM-Aespa/TripMate “가계부 컨탠츠(BudgetContentActivity) 가계부 수정시 버그” Describe the bug 가계부 수정시 카테고리를 추가하거나 삭제할경우 해당 카테고리가 추가되거나 삭제되지 않는 이슈가 발생 카테고리 삭재 github.com 개발을 하면서 액티비티에서 ViewModel의 함수를 사용 중, contentViewModel.updateBudgetAndCategories(budget.copy(num = budgetNum), categories) fi..

안드로이드/안드로이드

[Android/Kotlin] 알림(Notification) - 2, 알림의 속성

3. Notification의 정보를 입력후 알림을 등록 builder.run { setSmallIcon(R.mipmap.ic_launcher) setWhen(System.currentTimeMillis()) setContentTitle("키워드 알림") setContentText("설정한 키워드에 대한 알림이 도착했습니다!!") setStyle( NotificationCompat.BigTextStyle() .bigText("설정한 키워드에 대한 알림이 도착했습니다!!") ) } manager.notify(NOTIFICATION_ID, builder.build()) Notification 구성 해당 알림은 기본적인 형태의 알림입니다. 작은 아이콘: 필수 구성요소이며 setSmallIcon()을 통해 설정..

감자씨앗
'Android' 태그의 글 목록