안드로이드

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

왜 앱개발자 공고 AAC사용 경험을 우대할까?

안드로이드 앱 개발자 공고를 보면 우대사항으로 'AAC 경험'이라는 항목을 종종 볼 수 있습니다. 그렇다면 이 AAC는 무엇일까요?AAC란 무엇인가?AAC는 Android Architecture Components의 약자입니다. 이는 안드로이드 앱 개발 시 통일성과 코드 감소 등의 여러 장점을 제공하는 Jetpack 라이브러리 모음 중 하나입니다. AAC에는 DataBinding, Lifecycles, LiveData, Navigation, Paging, Room, ViewModel, WorkManager와 같은 요소들이 포함되어 있습니다. 이들은 앱의 구조나 디자인을 설계할 때 큰 도움을 줍니다.  DataBinding은 ViewBinding에 추가로 xml에서도 코드에 접근하여 해당 값들을 사용할수있..

안드로이드/안드로이드

[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/UI] BackGroundTint 값 Hex값으로 설정

여러 뷰들을 사용하다 보면 background를 설정해 놓고 필터처럼 색만 바꾸고 싶을 때가 있습니다. 이럴 때 쓰이는 속성인 BackGroundTint라는 속성값이 있습니다. 필자는 해당값을 xml이아닌 코틀에서 바꿔야 되는 상황을 격었습니다. 이러한 코드들을 찾아보니 viewStateCircleItem.backgroundTintList = when (data.isAvailable) { true -> ColorStateList.valueOf(ContextCompat.getColor(this.root.context, R.color.stateGrean)) else -> ColorStateList.valueOf(ContextCompat.getColor(this.root.context, R.color.gray..

안드로이드/안드로이드

[Android/Kotlin] Room 외래키 적용

이번에 프로젝트를 하게 되면 Room을 이용해 DB를 적용해 보았습니다. 처음에는 이러한 구조로 entity들을 설계하였습니다. 이렇게 만들려고 하니 Room에서 외래키의 연결이 잘못돼있다면서 787 에러를 보여줬습니다. 위의 구조의 경우 순환 참조가 일어납니다. 모든 테이블이 연결돼있으므로 참조할 수 없게 되는 현상이 생깁니다. 그래서 해당 참조를 끊어줘야 합니다. 이관계에서는 사실상 과정테이블의 경우 budgetNum은 필요가 없습니다. 편의를 위해 만든 것일 뿐 해당 과정이 어떤 가계부에 속해있는지는 부모인 카테고리를 따라 올라가다 보면 가계부를 찾을 수 있습니다. 변환시킨 DB 구조입니다. 이 구조를 코드로 만들면 @Entity( tableName = "BUDGET", ) data class Bu..

안드로이드/안드로이드

[Android/Kotlin] ViewModel 과 ViewPager

ViewModel은 같은 프래그먼트 끼리 동시에 사용하기 위해서는 private val sharedViewModel: MainSharedViewModel by lazy { ViewModelProvider(requireActivity())[MainSharedViewModel::class.java] } 이런 식으로 프래그먼트에서 액티비티를 불러와서 ViewModelStoreOwner로 지정해 주거나 private val sharedViewModel: MainSharedViewModel by activityViewModels() 위의 방법처럼 activityViewModels()를 사용하는 방법이 있습니다. 이러던 중 공유된 ViewModel의 라이브데이터를 observe를 하는 중 해당 프래그먼트가 켜져있지..

안드로이드/안드로이드

[Android/Kotlin] SharedPreferences

Preference란? 프로그램의 설정 정보 (사용자의 옵션 선택 사항이나 프로그램의 구성 정보)를 영구적으로 저장하는 용도로 사용 XML 포맷의 텍스트 파일에 키-값 세트로 정보를 저장 응용 프로그램 내의 액티비티 간에 공유하며, 한쪽 액티비티에서 수정 시 다른 액티비티에서도 수정된 값을 읽을 수 있다. 사용법 1. getSharedPreferences (name, mode) 여러 개의 Shared Preference파일들을 사용하는 경우 name : 프레퍼런스 데이터를 저장할 XML 파일의 이름이다. mode : 파일의 공유 모드 - MODE_PRIVATE: 생성된 XML 파일은 호출한 애플리케이션 내에서만 읽기 쓰기가 가능 - MODE_WORLD_READABLE, MODE_WORLD_WRITEABL..

안드로이드/안드로이드

[Android/Kotlin] DialogFragment 크기조절

안드로이드에는 커스텀한 다이얼로그를 사용하고 싶어 DialogFragment를 상속받는 새로운 다이얼로그를 만들곤 합니다. 여기서 주의할 점은 해당 다이얼로그의 크기를 제대로 설정을 해주지 않는다면 DialogFragment의 크기때문에 원하는 디자인이 안 나올 수도 있다는 것입니다. 여기서는 2가지 방법으로 크기로 조절할 수 있습니다. xml에 고정된 값주기 FrameLayout 등 뷰그룹을 사용해 감싸주면 원하는 사이즈의 다이얼로그가 노출됩니다. 그렇지만 이 방법의 경우 모든 안드로이드 폰의 화면이전부 다르기 때문에 상대적으로 줄 수는 없다는 점입니다. 코드에서 조절 //in DialogFragment onCreate(){ requireContext().dialogFragmentResize(this,..

감자씨앗
'안드로이드' 카테고리의 글 목록 (2 Page)