여러 뷰들을 사용하다 보면 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..
이번에 프로젝트를 하게 되면 Room을 이용해 DB를 적용해 보았습니다. 처음에는 이러한 구조로 entity들을 설계하였습니다. 이렇게 만들려고 하니 Room에서 외래키의 연결이 잘못돼있다면서 787 에러를 보여줬습니다. 위의 구조의 경우 순환 참조가 일어납니다. 모든 테이블이 연결돼있으므로 참조할 수 없게 되는 현상이 생깁니다. 그래서 해당 참조를 끊어줘야 합니다. 이관계에서는 사실상 과정테이블의 경우 budgetNum은 필요가 없습니다. 편의를 위해 만든 것일 뿐 해당 과정이 어떤 가계부에 속해있는지는 부모인 카테고리를 따라 올라가다 보면 가계부를 찾을 수 있습니다. 변환시킨 DB 구조입니다. 이 구조를 코드로 만들면 @Entity( tableName = "BUDGET", ) data class Bu..
이전에 알림의 채널에 관련돼서 포스팅을 했지만 알림에 관해서는 정리를 안 한 것 같아 알림 기능을 정리해 볼까 합니다. 알림은 이러한 구조로 구성됩니다. NotificationManager : 알림을 시스템에 발생시키는 SystemService Notification : 알림 구성 정보를 가지는 객체 NotificationCompat.Builder : 알림을 다양한 정보로 생성 NotificationChannel : 알림의 관리 단위(Android Oreo에서 추가) 이제 위 구조들을 이용하여 알림을 생성시켜 봅시다. 1. 처음에는 NotificationManager를 안드로이드에서 받아 와야 합니다. val manager = getSystemService(NOTIFICATION_SERVICE) as N..
안드로이드로 앱을 개발하다 보면 여러 어댑터를 만나게 됩니다. 어댑터(영어: adapter, adaptor)는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구를 뜻합니다. 안드로이드에서 이러한 어댑터들은 리스트뷰나 ViewPager같이 연속된 객체들을 보여줄 때 어떻게 연결한 것인지에 대해서 설정할 수 있습니다. 오늘은 리사이클러뷰의 어댑터들에 대에서 포스팅을 해볼까 합니다. 리사이클러뷰(RecyclerView)는 여러 객체들을 아이템 단위로 구성하여 화면에 출력하는 뷰그룹이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스로 표시해 주는 위젯입니다. 그렇다면 이게 리스트 뷰랑 다른 점이 뭐가 다르냐고 말할 수 있습니다. 리사이클러뷰는 이 리스트뷰의 상위..
기존에는 startActivityForResult를 이용하여 액티비티 이동시 Result값을 받아오겠다는 것을 알려주고 onActivityResult()를 이용하여 값을 액티비티의 이동후 다 원래 액티비티로 돌아왔을 때 Result로 받아온 값들을 이용할 수 있었습니다. 그렇지만 최근에 와서는 이렇게 startActivityForResult가 deprecated 되면서 안드로이드 자체에서 쓰는 것을 권유하지 않습니다. 역시 같이 쓰이던 onActivityResult() 또한 deprecated 되었습니다. Deprecated : 이 메서드는 ActivityResultContract 및 androidx.activity.result.contract.ActivityResultContracts에서 사용할 수 있..
Context => 애플리케이션(객체)의 현재 상태의 맥락(context) https://developer.android.com/reference/android/content/Context Context | Android Developers android.net.wifi.hotspot2.omadm developer.android.com 응용 프로그램 환경에 대한 전역 정보(global information)를 지니고 있는 인터페이스입니다 => 액티비티와 애플리케이션에 대한 정보를 얻기 위해서사용가능합니다 액티비티 객체는 컨텍스트 객체를 상속받습니다 => 액티비티는 애플리케이션의 context를 통하여 특정 리소스와 클래스, 그리고 애플리케이션 환경에 대한 정보에 대해 접근할 수 있게 해줍니다. 안드로이드..
토스트(toast)는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열 다이얼로그를 말합니다. Added in API level 1이기 때문에 따로 호완성을 걱정할 필요는 없습니다만 토스트의 몇몇 함수 들은 Deprecated in API level 30 되었기 때문에 사용 시 주의가 필요합니다. 평상시 토스트는 다른 언어의 alert나 Log, print함수같이 변수나 상황 등을 출력하고 싶을 때 안드로이드 환경에서 사용할 수 있습니다. 토스트는 android.widget.Toast안에있어 사용 시 임포트 해줘야 합니다. 토스트는 Toast의 함수인 makeText() 함수로 만듭니다. 자바(Java) ver // 토스트 메시지 표시 Context context = getApplicationContext()..