TIL

안드로이드/안드로이드

[Android/Kotlin] 알림(Notification) - 1, NotificationChannel 속성

이전에 알림의 채널에 관련돼서 포스팅을 했지만 알림에 관해서는 정리를 안 한 것 같아 알림 기능을 정리해 볼까 합니다. 알림은 이러한 구조로 구성됩니다. NotificationManager : 알림을 시스템에 발생시키는 SystemService Notification : 알림 구성 정보를 가지는 객체 NotificationCompat.Builder : 알림을 다양한 정보로 생성 NotificationChannel : 알림의 관리 단위(Android Oreo에서 추가) 이제 위 구조들을 이용하여 알림을 생성시켜 봅시다. 1. 처음에는 NotificationManager를 안드로이드에서 받아 와야 합니다. val manager = getSystemService(NOTIFICATION_SERVICE) as N..

안드로이드/안드로이드

[Android/Kotlin] 리사이클러뷰(RecyclerView) 스크롤 이벤트

리사이클러뷰에서는 기존에 스크롤 이벤트를 관리할 때 setOnScrollListener를 이용해서 OnScrollListener객체를 집어넣어서 해당 로직을 구현하였습니다. package androidx.recyclerview.widget; //Set a listener that will be notified of any changes in scroll state or position //스크롤 상태나 위치의 변경 사항에 대해 알림을 받을 리스너를 설정합니다. @Deprecated public void setOnScrollListener(@Nullable OnScrollListener listener) { mScrollListener = listener; } 그러나 이방식은 스크롤 동작에 따라 여러 개의..

안드로이드/안드로이드

[Android/Kotlin] 알림(Notification)아이디 채널아이디

오늘은 알림(Notificatio)을 알아볼까 합니다 알림은 사용자에게 미리 알림을 주고 다른 사람과의 소통을 가능하게 하며 앱에서 보내는 기타 정보를 적시에 제공하기 위해 Android가 앱의 UI 외부에 표시하는 메시지입니다. 사용자는 알림을 탭 하여 앱을 열거나 알림에서 바로 특정 작업을 실행할 수 있습니다. 공식 안드로이드 docs를 보면 알림을 이렇게 설명하고 있습니다. 알림은 여러 방식으로 사용자에게 여러 정보들을 표시하거나 동작(event)들을 수행할 수 있게 해 줍니다. 기존에 안드로이드에서는 알림 채널을 따로 만들어 줄 필요 없이 알림을 구현할 수 있었지만 안드로이드 API26 오레오 버전부터는 따로 Notification Channel을 추가를 해줘야 합니다. 이처럼 Notificati..

CS 지식

[알고리즘] Dynamic Programming

개요 최적화 이론의 한 기술이며, 특정 범위까지의 값을 구하기 위해서 그것과 다른 범위까지의 값을 이용하여 효율적으로 값을 구하는 알고리즘 설계 기법입니다. 즉 작은 문제를 해결한 후, 해결한 작은 문제의 해답을 활용하여 주어진 문제들을 풀어 최적화하여 풀면 설명 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것입니다. 각 하위 문제의 해결을 계산한 뒤, 그 해결책을 저장하여 후에 같은 하위 문제가 나왔을 경우 그것을 간단하게 해결할 수 있습니다. 이러한 방법으로 동적 계획법은 계산 횟수를 줄일 수 있습니다. 특히 이 방법은 하위 문제의 수가 기하급수적으로 증가할 때 유용합니다. Dynamic Programmin..

안드로이드/안드로이드

[Android/Kotlin] 뷰 바인딩(ViewBinding)

뷰바인딩을 쓰는 이유 안드로이드 코드에서 xml에 있는 UI에 접근을 하기 위해서는 FindViewById를 이용합니다. @SuppressWarnings("TypeParameterUnusedInFormals") @Override public T findViewById(@IdRes int id) { return getDelegate().findViewById(id); } //ex) val button : Button = findViewById(R.id.button) 이 방법도 나쁘지는 않지만 일일이 findViewById() 함수로 하나하나 찾아서 가져와야 한다는 애로사항이 있었습니다. 3.5 버전까지는 개발자들이 findViewById를 사용했었지만, Butter knife라는 라이브러리나 extensi..

코틀린/Effective Kotlin

[Effective Kotlin] 12. 가독성 - 연산자 오버로드를 할 때는 의미에 맞게 사용하라

연산자 오버로드는 의미에 맞게 사용해야 합니다. 코틀린은 객체의 연산자 기능을 함수로 오버로드할 수 있습니다. 이 기능은 아주 강력한 기능이지만 잘못 사용할 경우 가독성 문제뿐만 아니라 큰 위험으로 다가올수도 있습니다. 팩토리얼 함수를 예를 들어 봅시다. 수학에서는 팩토리얼 함수를 A!로 표현합니다. 그렇지만 대부분의 코드에서는 저런 팩토리얼 같은 기능을 연산자로 재공하고 있지는 않습니다. fun Int.factorial(): Int = (1..this).product() fun Iterable.product(): Int = fold(1) { acc, i -> acc * i } 대부분 이런 식으로 로직을 작성해야 합니다. print(10 * 6.facorial()) // 10 * (6!) = 7200 /..

코틀린/문법및 라이브러리

[Kotlin] Coroutine Flow 맛보기

여러 영상들이나 문제들을 볼 때 Flow를 많이 보았습니다. 그렇지만 그 당시 Flow를 잘 몰랐기에 해당내용을 이해하기 쉽지 않았습니다. 그래서 오늘은 이 Flow를 알아볼까 합니다.  리액티브 프로그래밍은 기존의 명령형 프로그래밍과 대응되는 방식입니다.명령형 프로그래밍 : 데이터를 요청한 후 일회성으로 수신. 이경우 데이터가 필요할 때마다 결괏값을 매번 요청한다는 점에서 매우 비효율적입니다.리액티브 프로그래밍 : 구독을 하면 지속적으로 데이터를 전달하는 역할을 함.  이렇게 전달이 되는 흐름을 데이터 스트림이라고 합니다. Coroutine Flow는 코루틴 상에서 위에서 말한 리액티브 프로그래밍을 지원하기 위해 만들어진 구현체입니다. 코루틴에서 데이터 스트림을 구현하기 위해서는 Flow를 이용하여 구..

코틀린/Effective Kotlin

[Effective Kotlin] 11. 가독성 - 가독성을 목표로 설계하라

코트는 작성할 때보다 수정할 때 더 많은 시간을 필요로 합니다. 그 이유는 해당 코드를 일고 이해하며 어디를 수정해야 하는지 찾아야 하기 때문입니다. 그렇기에 보았을 더 쉽게 이해할 수 있는 코드를 짜는 것은 중요합니다. 이번장이 가독성에서는 어떻게 해야 잘 읽히고 좀 더 이해하기 쉬운지를 주제로 이야기를 해나갈까 합니다. 코틀린은 코드를 간결한게 만들어주는 예약어와 여러 함수들을 가지고 있습니다. 이러한 부분은 코드를 간결하게 짜는 것을 도움을 주지만 어떻게 보면 가독성이 떨어지는 코드를 짜는 것도 도와줍니다. 예를 들어 일반적인 if 같은 조건문을 쓰는 코드가 있다고 생각해 봅시다 이러한 조건문은 코드 짜는 사람들에게 있어서 코틀린을 배우지 않고 다른 언어들을 배운 사람들이더라도 이러한 조건문은 더 ..

안드로이드/안드로이드

[Android/Kotlin] 리사이클러뷰(RecyclerView) 어댑터 이야기

안드로이드로 앱을 개발하다 보면 여러 어댑터를 만나게 됩니다. 어댑터(영어: adapter, adaptor)는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구를 뜻합니다. 안드로이드에서 이러한 어댑터들은 리스트뷰나 ViewPager같이 연속된 객체들을 보여줄 때 어떻게 연결한 것인지에 대해서 설정할 수 있습니다. 오늘은 리사이클러뷰의 어댑터들에 대에서 포스팅을 해볼까 합니다. 리사이클러뷰(RecyclerView)는 여러 객체들을 아이템 단위로 구성하여 화면에 출력하는 뷰그룹이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스로 표시해 주는 위젯입니다. 그렇다면 이게 리스트 뷰랑 다른 점이 뭐가 다르냐고 말할 수 있습니다. 리사이클러뷰는 이 리스트뷰의 상위..

안드로이드/안드로이드

[Android/Kotlin] ActivityResultLauncher는 무었일까요?

기존에는 startActivityForResult를 이용하여 액티비티 이동시 Result값을 받아오겠다는 것을 알려주고 onActivityResult()를 이용하여 값을 액티비티의 이동후 다 원래 액티비티로 돌아왔을 때 Result로 받아온 값들을 이용할 수 있었습니다. 그렇지만 최근에 와서는 이렇게 startActivityForResult가 deprecated 되면서 안드로이드 자체에서 쓰는 것을 권유하지 않습니다. 역시 같이 쓰이던 onActivityResult() 또한 deprecated 되었습니다. Deprecated : 이 메서드는 ActivityResultContract 및 androidx.activity.result.contract.ActivityResultContracts에서 사용할 수 있..

감자씨앗
'TIL' 태그의 글 목록 (2 Page)