분류 전체보기

Android

Codelab으로 Room 알아보기 - 1. Download and inspect the starter app

이번에는 드디어 Room Database에 대해 알아보러 간다. 완전 처음 보는 코드들이 나를 기다리고 있으리라 믿는다. (자랑은 아닌 듯하다) 시작하겠다. 1. Download and run the starter app 먼저 Github에서 앱을 다운로드 받는다. https://github.com/google-developer-training/android-kotlin-fundamentals-starter-apps/tree/master/TrackMySleepQuality-Starter GitHub - google-developer-training/android-kotlin-fundamentals-starter-apps: android-kotlin-fundamentals-starter-apps andro..

Android

Android Notification channel 설정이 적용안되는 경우

나의 상황 출시 초기 버전에서 생성한 Notification channel에는 mp3파일로 소리 설정이 되어있었고, 진동은 설정값이 없었다. 이번에 진동을 설정하고 소리를 변경하기 위해서 검색하다보니 OS 8.0 이상의 경우, Notification channel에 소리와 진동 설정을 해줘야 했다. 나는 여러 글에서 찾은 방법으로 코드를 구성했고 앱을 실행했지만 소리와 진동 설정은 정상적으로 되지 않았다. 해결법 앱을 삭제 후 재설치하거나 앱 데이터를 삭제한 뒤 재실행한다. 개인적인 추론 Android Developer 사이트에서 힌트를 찾아볼 수 있었다. 진동 설정을 위해 찾아본 메소드에 이런 내용이 있다. 마지막 줄에 보면 NotificationChannel이 create되는 메소드에 전달되기 전까지..

프로그래머스

문자열 겹쳐쓰기 코틀린(Kotlin)

오늘도 천천히 예열하는 느낌의 문제를 풀어보았다. (생각할 게 많아져서 머리를 많이 쓰기 싫었다 ㅋㅋㅋㅋ) 문제 문제를 보고 기존 문자열(my_string)에서 대체되기 시작하는 인덱스가 s이고 파라미터로 주어진 overwrite_string의 length 이후의 인덱스는 대체되지 않는다. 그래서 substring 함수를 사용해 기존 문자열의 대체되지 않는 부분을 구해주었고 대체되는 부분은 주어진 파라미터를 그대로 사용했다. 풀이 리턴될 answer 변수의 길이가 길어져 보기 힘들 수 있지만 이 문자열을 만드는 변수들은 위에서 말했던 3가지이다. overwrite_string에 의해 대체되지 않는 앞, 뒤 부분, 그리고 대체되는 부분. 끝이다.

프로그래머스

조건 문자열 코틀린(Kotlin)

오랜만에 안드로이드 글을 연재하다 공부 주제를 못잡고 가벼운 문제를 들고 왔다. 문제 가장 먼저 고민했던 것은 주어지는 두 개의 문자열을 어떻게 연산자로 변환할까? 였다. 하지만, 이 문제에선 총 4가지 케이스만 정의하면 되므로 when을 사용해 풀어보았다. 풀이 주어진 두 파라미터를 붙인 후 when에서 4가지 케이스를 분류했다. 리턴될 answer 변수에 if else 조건식을 사용해 곧바로 변수에 값을 대입했다. 물론 케이스가 더 많아지면 when의 케이스가 많아지고 중괄호 안쪽이 뚱뚱해질 것이다.

주저리주저리

최근 느낀 일할 때 하지 말아야 할 것

1. 자신만의 언어 사용 여러 글에서 많이 소개된 내용이지만 최근 갑작스럽게 확 체감이 된 것이다. 그 이유는 최근 회사에서 여러 팀, 다른 회사와 협업해 진행하는 업무가 이어졌는데 이 때, 우리 회사의 다른 팀 개발자 분이 본인만의 언어를 남발하셨다. 그래서, 우리 회사의 기획팀에서는 말 자체에 대해 이해를 못하셨다. (아무리 기획팀이 개발을 모르셔도 기본 시나리오는 파악하고 계셨다) 예를 들자면 이런 말들이었다. 우리가 서버에 ~을 쏜다 서버에서 받은 거 그대로 ~에 던진다 계속 서버에 날린다 이러면 안 붙는다 이 상황이면 붙었네 사실 내가 쓰면서도 어질어질한데... 이런 문장에서 대부분 주어가 없다면 그 누가 알아듣겠는가 싶다. 나는 그래서 최대한 공식적인(?) 용어를 사용하려고 노력했다. 아래와 ..

Android

Codelab으로 LiveData transform해보기 - 3. 정리(完)

Transforming LiveData LiveData에 transformation을 하고 싶다면 Transformations 클래스의 helper 메소드들을 사용한다. Transformations.map 메소드는 LiveData에 데이터를 변경하고 다른 LiveData 객체를 리턴해준다. Displaying the result of a transformation in a TextView 원본 데이터가 ViewModel의 LiveData로 정의되어 있는지 확인한다. 변수를 정의한다. 어떤 변수가 있다면 Transformations.map 메소드로 transformation을 수행하고 그 값을 변수에 리턴해준다. val newResult = Transformations.map(someLiveData) { ..

Android

Codelab으로 LiveData transform해보기 - 2. Add transformation for the LiveData

Transformations.map 메소드는 원본 LiveData의 데이터를 수정하고 결과 LiveData 객체를 리턴하는 방법을 제공한다. 이 transformations은 리턴된 옵저버가 LiveData 객체를 observe하고 있지 않으면 계산되지 않는다. - 주의사항 : Transformations.map 메소드에서 실행되는 람다식은 메인 스레드에서 실행되기 때문에 오래 실행되는 task를 포함하면 안된다. 이번에는 경과 시간의 LiveData 객체를 "MM:SS" 형식의 새 문자열 LiveData 객체 형태로 만든다. game_fragment.xml 레이아웃 파일은 이미 타이머 텍스트뷰를 가지고 있다. 지금까지 텍스트뷰에 보여줄 텍스트가 없었으므로 타이머 텍스트가 보이지 않았다. 1. GameV..

Android

Codelab으로 LiveData transform해보기 - 1. Add a Timer

이번에는 이전에 수정한 GuessTheWord 앱에 카운트다운을 위한 타이머를 추가한다. 단어 리스트가 비어있으면 게임이 끝나는 대신 타이머가 끝날 때 게임이 끝나도록 할 것이다. 이 때 사용될 유틸리티 클래스를 안드로이드에서는 제공하는데 CountDownTimer가 있다. 기기 설정 변경 도중 타이머가 destroy되지 않도록 ViewModel에 해당 로직을 추가한다. 프래그먼트는 타이머가 작동할 때마다 텍스트뷰를 업데이트하는 코드를 포함하고 있다. GameViewModel 클래스에 아래 과정을 따라 구현한다. 1. 타이머 상수를 갖고 있기 위해 companion object를 만든다. companion object { // Time when the game is over private const va..

Android

Codelab으로 DataBinding 알아보기 - 4. 정리(完)

데이터 바인딩 라이브러리는 LiveData나 ViewModel같은 AAC와 아주 매끄럽게 동작한다. ViewModel data binding 데이터 바인딩을 사용해 ViewModel과 레이아웃을 연결할 수 있다. ViewModel 객체는 UI 데이터를 가지고 있다. ViewModel 객체를 데이터 바인딩에 전달함으로써 뷰와 ViewModel 객체 사이의 통신을 일부 자동화할 수 있다. 아래는 ViewModel과 레이아웃을 연결하는 방법이다. 레이아웃 파일에 ViewModel 타입의 데이터 바인딩 변수를 추가한다. Fragment 파일안에 ViewModel을 데이터 바인딩에 전달한다. binding.gameViewModel = viewModel Listener bindings 리스너 바인딩은 레이아웃에서 ..

Android

Codelab으로 DataBinding 알아보기 - 3. Add LiveData to data binding

데이터 바인딩은 ViewModel 객체와 같이 사용되는 LiveData와 잘 작동한다. 저번 코드랩에서 ViewModel 객체에 데이터 바인딩을 추가했으므로 LiveData를 적용할 준비가 됐다. Add word LiveData to the game_fragment.xml file 이번에는 word 텍스트뷰를 ViewModel안에 있는 LiveData와 직접 바인드한다. 1. xml의 word_text에 text 속성을 추가해준다. 바인딩 변수를 사용해 GameViewModel의 word LiveData 객체로 설정한다. 여기서 우리는 word.value를 사용할 필요가 없다. 대신, 실제 LiveData 객체를 사용할 수 있다. 만약 word 값이 null이면 빈 문자열을 보여줄 것이다. 2. Game..

BonusTrack02.dev
'분류 전체보기' 카테고리의 글 목록 (11 Page)