본문 바로가기

코틀린

(14)
[안드로이드 중급] 툴바(Toolbar) 툴바(Toolbar)는 안드로이드 5.0(21버전)에 도입이되었다. 툴바의 형태인 앱바는 5.0 이전에 액션바라고 불렸다. 기존의 액션바는 고정된 상태이지만, 툴바는 커스터마이징이 자유로워져서 사용자가 원하는 디자인을 만들 수 있다. 툴바를 추가하는 방법은 아래와 같다. AndroidManifest.xml에 Theme.AppCompat.Light.NoActionBar 설정을 한다. 레이아웃에 툴바를 추가한다. 액티비티에서 툴바 객체를 생성한다. 생성한 툴바 객체를 setSupportActionBar() 메소드의 인자로 지정하여 호출한다. 툴바 객체나 getSupportActionBar()를 사용하여 속성 수정한다. 간단한 예제를 구현해보도록 한다. 새로고침, 검색, 공유 메뉴를 만들고, 각각의 속성을 달..
[안드로이드 개인공부] ContentProvider로 이미지 가져오기 구현하기 ContentProvider는 앱 사이에서 각종 데이터를 공유할 수 있게 해주는 컴포넌트이다. 안드로이드 표준 시스템에서는 연락처인 Contacts나 이미지나 동영상 등의 데이터를 보관하는 MediaStore등이 있다. 데이터를 검색, 추가, 갱신, 삭제할 수 있으며, 주로 SQLITE 등의 관계형 데이터 베이스 이용을 염두에 두고 설계되었다. ContentProvider로 부터 데이터를 읽어오자. ContentProvider로 부터 데이터를 읽어오려면 해당 ContentProvider가 어디에 있는지 알아야한다. 경로는 'content://스키마'를 가진 URI(Universal Resource Indentifier)로 지정되고, 일반적으로 접근할 대상 앱에서 정의가 된다. 이 URI는 authorit..
[코틀린] 고차함수 - 함수 참조와 익명 함수 이용 고차 함수에서 매개변수나 반환값으로 람다 함수를 많이 이용하지만, 함수 참조나 익명 함수를 이용해도 된다. 함수 참조를 이용한 함수 전달 고차 함수를 이용할 때 람다 함수 외에 함수 참조 연산자로 콜론 두개(::)를 이용할 수도 있다. 먼저 아래 소스코드는 람다코드로 작성한 코드이다. fun hoFun6(argFun: (x:Int) -> Int){ println("${argFun(10)}") } fun main() { hoFun6 { it * 5 } } [결과값] 50 고차함수를 선언하고, 매개변수로 함수를 받고 있다. 이렇게 선언한 고차 함수를 호출하면서 함수를 전달해야하는데 위의 소스코드에서는 it *5 라는 람다 함수를 넘겨서 10 * 5의 결과값을 출력하고 있다. 이런 소스 코드를 다음과 같이 함..
[코틀린] 고차함수 - 함수 반환 고차 함수는 다른 함수를 매개변수로 이용하거나, 반환하는 함수이다. 앞에서는 매개변수 부분에 함수를 이용하는 방법을 알아보았다. 이번에는 고차 함수에서 함수를 반환하는 방법에 대해 살펴보겠다. fun hoFun5(str: String): (Int, Int) -> Int { return when (str) { "*" -> { x1, x2 -> x1 * x2 } "-" -> { x1, x2 -> x1 - x2 } "/" -> { x1, x2 -> x1 / x2 } else -> { x1, x2 -> x1 + x2 } } } fun main() { val resultFun = hoFun5("*") println("resultFun * : ${resultFun(10,5)}") } [결과값] resultFun *..
[코틀린] 고차함수 - 매개변수 대입 고차함수란, 매개변수로 함수를 전달받거나 함수를 반환하는 함수를 말한다. 아래 소스에서는 fun 예약어와 hoFun이라는 함수명 그리고 ( )안에 매개변수, { } 안에 함수 내용을 선언했다. fun hoFun(x1: Int, argFun: (Int) -> Int){ val result = argFun(x1) println("x1 : $x1, result : $result") } fun main() { hoFun(10, {x -> x * x} ) } [결과값] x1 : 10, result : 100 하지만 일반 함수와는 차이가 있다. 두 번째 매개변수는 argFun: (Int) -> Int로 선언했다. 매개변수로 함수를 받고자 함수 타입을 선언한 것이다. 코틀린에서는 일반적으로 데이터 타입을 선언할 때 ..
[코틀린] 람다 표현식 람다식 또는 람다함수는 프로그래밍 언어에서 사용되는 개념이다. 익명함수라고도 부르며, 함수형 프로그래밍을 목적으로 하지 않더라도 간결함을 주 목적으로 사용된다. 함수형 프로그래밍에서는 람다 함수가 고차 함수의 매개변수나 반환값으로 사용되므로 더욱 중요하다. 코틀린에서 함수의 정의는 fun 예약어를 사용한다. fun 함수이름(매개변수) { 함수내용 } 람다 함수는 fun과 함수이름을 명시하지 않고 축약형으로 선언한다. {매개변수 -> 함수 내용} 람다 함수는 {}안에 매개변수와 함수 내용을 선언하는 함수로 아래와 같은 규칙을 정의한다. 1. 람다 함수는 항상 {}로 감싸서 표현한다. 2. {} 안에 -> 표시가 있으며 -> 왼쪽은 매개변수, 오른쪽은 함수 내용이다. 3. 매개변수 타입을 선언해야 하며 추론..
[코틀린] 일급 객체로서의 함수 코틀린에서 함수가 일급 객체로 활용되는 부분에 대해서 살펴보겠다. 코틀린의 함수 내에는 다양한 구성요소를 포함시킬 수 있다. fun superFun() { val superData = "hello" fun subFun1() { println("subFun1() .. superData : $superData") } fun subFun2(a: Int, b: Int): Int { subFun1() return a + b } class SubClass{ fun classFun(){ println("classFun() .. superData : ${superData}") } } subFun1() SubClass().classFun() } 함수를 클래스에 포함하지 않고, 함수 내부에 변수, 함수, 클래스를 선언했다..
[안드로이드 개인공부] Retrofit에 대해서 단계별로 공부해보자! 프로젝트 진행하면서 무작정 Retrofit 라이브러리를 사용했었다. 그래서인지 단계별로 왜 이렇게 구현하는 것인지, 왜 이것을 사용하는지 아무것도 모른 상태로 사용했다. 그렇기에 여기에 Retrofit의 기본 단계들을 공부하여 정리하려고한다. 일단, Retrofit은 안드로이드 및 자바를 위한 안전한 REST 클라이언트라고 말할 수 있다. 2010년 당시에는 네트워크 Request 보내기 위해서는 low-level java connection을 통해서 스레딩, json 파싱 등을 스스로 구현하여 사용해야했다. 이것들은 너무 복잡했다. 하지만 Retrofit은 이러한 복잡한 구현들을 모두 숨긴다. 즉, API와 Interact 하는 것을 더 쉽게 도와준다. 그렇기에 개발자들은 더 쉬운 네트워크 통신을 하기..