전체 글 52

[Android/Kotlin] 재생/멈춤 아이콘 애니메이션 (VectorDrawable)

어플에 생동감을 더해주는 방법으로 애니메이션이 있다. View의 이동, 확대/축소, 회전, 투명도 조정 등 다양한 애니메이션을 사용할 수 있다. 그 중 아이콘에 대한 변화를 주는 애니메이션을 사용할 때 VectorDrawable을 많이 사용한다.음악 어플에서 흔히 보이는 아이콘인 시작/멈춤 아이콘 변경 애니메이션을 직접 만들어보면서 어떤 식으로 동작하는지 공부하고, 직접 스스로 응용해보면 좋을 것 같다. Vector Drawable이란?Vector Drawable이란 path라는 정보를 통해 Drawable Resource를 그리는 것을 말한다.말이 어렵게 되있는데, 간단하게 말하면 좌표평면 상에 점을 이용해 그림을 그리는 것이다.이해를 돕기 쉽게 예시를 들면 우리가 학생 때 배우는 함수 그래프 등을 생..

안드로이드 2020.03.05

[백준/Python] 2037_문자메시지

문제 오른쪽 그림과 같은 핸드폰 자판이 있다. 이 자판을 이용하여 어떤 영어 메시지를 치려고 할 때, 걸리는 최소 시간을 구하는 프로그램을 작성하시오. 단, 1번은 누를 경우에는 공백이 찍힌다고 하자. 그리고 만약에 AC라는 문자를 치려 한다면 A를 치고 난 후 일정 시간을 기다린 후 C를 치면 된다. 하나의 문자를 입력하려면, 버튼을 눌러야 한다. 버튼을 누르면 버튼에 쓰여 있는 문자가 입력되며, 버튼을 누를 때마다 다음 문자로 바뀌게 된다. 예를 들어, 2를 누르면 A, 2번 누르면 B, 3번 누르면 C이다. 공백을 연속으로 누를 때는 기다릴 필요가 없다. 입력 첫째 줄에 p와 w가 주어진다. (1 ≤ p, w ≤ 1,000) p는 버튼을 한번 누르는데 걸리는 시간이고, w는 AC와 같은, 같은 숫자..

[Android/Kotlin] 카메라로 사진 찍고 이미지뷰에 넣기

어플을 만들 때 카메라를 사용하는 경우가 많다. 당장 채팅어플만(카카오, 페매 등) 보더라도 갤러리에서 사진을 가져오거나, 직접 카메라로 사진을 찍어서 올리곤 한다. 그래서 카메라를 사용하는 법을 예제를 통해서 알아보고자 한다. 단순 Intent를 이용해서 카메라를 키고 사진을 받을 수 있지만 그렇게 되면 사진이 섬네일 형식으로 오기 때문에 파일에 사진을 저장하고, 그 파일을 불러오는 식으로 원본형태의 사진을 이미지뷰에 넣는 방식이다. 권한 설정 안드로이드 마시멜로우 버전(6.0) 이상부터는 앱에서 해당 권한이 필요할 때마다 사용자로부터 권한을 허가받도록 변경되었다. 그래서 카메라를 사용할 때도 권한을 확인해줘야 한다. 원래는 굉장히 복잡한 코드를 이용해서 권한 설정을 해줘야 하는데, 라이브러리를 이용해..

안드로이드 2020.02.19

[프로그래머스/Python] 기능개발 (Level - 2)

문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자연수입..

[프로그래머스/Python] 다리를 지나는 트럭

문제 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4,5] [6] ..

[Android/Kotiln] DataBinding(데이터바인딩)3 - Observable(실시간 데이터)

이번 포스팅에서는 데이터를 실시간으로 관찰할 수 있는 Obsevable 데이터에 대해서 알아보도록 하겠다. 이전 포스팅과 연관되는 부분은 아니지만 그래도 이전 포스팅들을 보고 오면 좋다. 1. DataBinding 1 - 기초 2. DataBinding 2 - BindingAdapter 실시간으로 데이터를 관찰해보자! 기존 안드로이드 개발을 할 때 화면에 보여주는 데이터에 변화가 생긴다면 어떻게 했는지를 생각해보자. A 텍스트 뷰에 적혀 있는 글자를 버튼을 눌러 다른 글자로 바꿀 경우 우리는 다음과 같이 값을 바꿔주었다. text_A.text = "내가 변경할 값" 이는 데이터가 변경될 때마다 우리가 직접 그 변경됨을 xml에 알려줘야 함을 의미한다. 그래서 우리는 값이 변경되면 뷰에서 알아서 변화를 감..

안드로이드 2020.02.06

[Android/Kotlin] DataBinding(데이터바인딩) 2 - BindingAdapter(바인딩 어댑터)

지난 번 포스팅에서 DataBinding에 대한 기초 실습을 통해 어떤 방식으로 DataBinding을 하는지 알아보았다. 이번에는 BindingAdapter라는 걸 이용하는 실습을 해보겠다. BindingAdapter란? 리사이클러뷰 아이템 요소에 프로필 사진, 이름, 나이가 들어간다고 해보자. DataClass에는 프로필 사진 Url (보통 이미지는 Glide를 이용하기 때문), 이름, 나이 요소가 들어가 있을 것이다. data class ProfileData( var profile : String, var name : String, var age : Int ) 우리는 데이터 바인딩을 할 것이기 때문에 각 요소를 바인딩 시켜주는 작업은 xml에서 진행을 할 것이다. 그런데, 여기서 문제가 발생한다! ..

안드로이드 2020.01.31

[백준/Python]6603_로또

문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34]) 집합 S와 k가 주어졌을 때, 수를 고르는 모든 방법을 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 ..

[Android/Kotlin] DataBinding(데이터바인딩) 1 - 기초

혼자서 데이터 바인딩을 학습했다. 중간에 헤맸던 부분이 너무 많아서 이제야 포스팅한다... 지금까지 학습한 부분을 예제를 통해서 알아보자. 데이터바인딩이란? 우리는 안드로이드 어플의 한 화면을 만들 때, 뷰를 생성하고 그 뷰에 적절한 값들을 넣어준다. 평소처럼 개발을 한다고 생각하면 이런 식으로 액티비티에 뷰를 바인딩시켜주는 작업을 한다. val button : Button = findViewById(R.id.btnSample) 한 두 개라면 괜찮지만 한 화면의 뷰가 10개 이상 넘어간다고 했을 경우 굉장히 막막하다.... 코틀린은 extenstion을 이용해 편하게 작업이 가능하긴 하나, 이 또한 모든 바인딩을 액티비티에서 해주므로 내가 현재 공부하려는 MVVM패턴에서는 적절치 못하다. 그래서 데이터 ..

안드로이드 2020.01.24

자 이제 무엇을 할것이냐? (MVVM 패턴)

지금까지 나는 개발을 할 때 activity에 모든 코드를 때려 박았다. 어떻게 보면 대가리만 큰 코드가 되었다고 할 수 있다. 이렇게 activity에 모든 코드를 넣어버리면 자연스럽게 어플은 무거워지고, 뭐가 뭔지 보기 힘들 것이다. 그래서 자연스럽게 디자인 패턴으로 눈이 돌아갔고, 그중 MVVM패턴을 공부할 예정이다. 현재 나의 머리로는 이해하는데 많은 시간이 소요될 것으로 본다... 누가 알려주는 사람도 없고 구글링을 하면서 공부하고 있기 때문에 계속 찾아내면서 공부해야지.. ㅎ MVVM이 뭔데? MVVM은 View - ViewModel - Model 로 구성된 디자인 패턴이다. 웬만한 어플은 MVVM을 적용하고 있다고 봐도 무방하다. MVC와 MVP에서도 의존성이 해결되지 않아 만들어진 MVVM..

안드로이드 2020.01.15