반응형

분류 전체보기 129

[Android/Kotlin] WebView 사용하기

안녕하세요 골드입니다. 이번 글은 Android에서 WebView를 사용하는 아주 간단한 예제를 하나 소개하도록 하겠습니다. WebView는 안드로이드 Native에서 Web을 호출해서 보여주는 방식입니다. 1. Manifest.xml 먼저 웹을 사용하려면 인터넷에 대한 권한이 필요합니다. Manifest에 인터넷 권한을 추가합니다. 마찬가지로 Manifest 파일 안에 태그에 clearText 속성을 true로 설정합니다. 그렇지 않으면 Web을 호출했을 때 clear text error가 발생합니다. clear text error를 방지하기 위해 해당 속성을 true로 설정하였습니다. 2. 사용하기 activity_main.xml파일에 WebView를 추가합니다. MainActivity.kt 파일에 ..

[Android/Kotlin] 뷰 결합(View Binding) 사용법

안녕하세요 골드입니다. 이번 글은 안드로이드에서 사용하도록 권장하는 방법 중 하나인 뷰 결합에 대한 글입니다. 뷰 결합을 사용함으로써 생산성이 다소 높아질 것이라고 생각됩니다. 뷰 결합은 기존의 개발 방식을 더 편리하게 만들어주는 하나의 도구입니다. 특히 Java로 안드로이드 개발을 하던 시절에 View에 대한 참조를 위해 findViewById를 상당히 많이 사용했었습니다. findViewById로 참조하고 형변환을 해서 사용하던 기존 방식에 대한 불편함을 View Binding이 상당 부분 해결해줍니다. 그렇기 때문에 구글에서 사용을 권장하는 방법입니다. 요약 : 구글 : 너네 findViewById 쓰니까 에러도 많고 귀찮았지? 그래서 우리가 준비했다. View Binding이라는 걸 한 번 사용해..

[Kotlin] 코틀린 초기화 방법과 순서

안녕하세요 골드입니다. 오늘은 코틀린에 있는 여러 가지 초기화 방법에 대해서 설명을 해보려고 합니다. 어떤 방법이 있는지 그리고 이 방법들 중 어떤 것이 먼저 동작하는지 알아볼 것입니다. 1. 생성자 - 기본 생성자 클래스의 인스턴스를 생성할 때, 우리는 생성자를 사용합니다. 여러 생성자를 생성하여 인스턴스의 고윳값을 원하는 방식으로 설정할 수 있습니다. 코틀린의 기본 생성자는 이렇게 생겼습니다. 코딩을 하다보면 한 번쯤은 사용한 경험이 있는 익숙한 코드입니다. 함수의 인자를 선언하듯이 Test 클래스의 생성자를 정의할 수 있습니다. 이게 코틀린의 기본 생성자입니다. 정의한 클래스 생성자 매개변수를 그냥 사용할 수도 있고, 클래스 속성의 커스텀 게터와 세터를 정의해야 한다면 일대일 대응 관계로 정의한 후..

[Kotlin] lateinit과 lazy 차이점

목차 소개 lateinit lazy lateinit과 lazy의 차이점 초기화 시간 Nullable vs Non-nullable Compile-time vs Run-time error 스레드 안정성 결론 소개 Kotlin은 전역 변수를 선언하면 반드시 초기화 해줘야 한다. 전역 변수를 초기화하지 않고 선언할 수 있도록 도와주는 키워드가 lateinit과 lazy다. 먼저 Kotlin에 lateinit과 lazy가 있는 이유는 null 안정성 시스템 덕분이다. 속성을 nullable로 선언하면 사용할 때마다 ? 연산자나 !! 연산자를 사용해야 하기 때문에 번거로움이 있고 그렇지 않다면 반드시 초기화를 해줘야 한다. 초기화를 하지 못 하는 상황이 발생할 수도 있기 때문에 Kotlin 언어에서 이 둘을 지원한..

[Kotlin] Java의 void, Kotlin의 Unit, Nothing 차이점

안녕하세요 골드입니다. 이번 글은 키워드의 차이점에 대해서 정리한 글입니다. 그중 자바의 void와 코틀린의 Unit에 차이점을 살펴보고 추가로 Nothing에 대해서도 작성하도록 하겠습니다. 결론부터 이야기하면 코틀린의 Unit은 자바의 void와 비슷합니다. 1. void와 Void 먼저 자바의 void는 반환 타입이 없으므로 생략한다는 의미입니다. 흔히 자바로 메소드를 생성할 때 반환 타입이 없으면 void를 사용합니다. 매번 사용하는 main메소드도 void를 사용합니다. 반환 값이 존재하지 않기 때문입니다. 그리고 Void가 있습니다. void와 Void는 다릅니다. int와 Integer가 같지만 다르듯이 void와 Void도 이와 같습니다. 비유하자면 void는 기본형이고 Void는 참조형입..

[Kotlin] var, val 그리고 const val

안녕하세요 골드입니다. Kotlin이라는 언어를 사용한다면 너무나도 당연하게 쓰는 var과 val 키워드가 있습니다. 이번 글에서 이 둘의 차이점에 대해서 알아보고 비슷하지만 다른 val과 const val의 차이점에 대해서도 알아보도록 하겠습니다. 1. var var은 variable를 의미하며, Kotlin에서 변수를 선언할 때 쓰는 키워드입니다. 흔히 말하는 기본 자료형 혹은 객체 참조 모두 var 키워드를 사용한 변수에 할당할 수 있습니다. var 키워드로 선언된 변수는 값을 변경할 수 있습니다. 변수를 선언할 때, 타입을 같이 작성할 수도 있습니다. 다만, 선언하면서 초깃값을 지정하였다면 변수의 타입을 생략할 수 있도록 코틀린은 타입 추론(type inference) 기능이 있습니다. 2. va..

[Android/Kotlin] Bottom Sheet Dialog Fragment 사용법

안녕하세요 골드입니다. 오늘은 안드로이드에 새롭게 업데이트된 Bottom Sheet Dialog 사용법에 대해서 알아보도록 하겠습니다. Bottom Sheet을 사용하면 아주 쉽게 밑에서 올라오는 팝업창을 만들 수 있습니다. 결과물을 먼저 보여드리면 이런 모습입니다. 1. 의존성 라이브러리 추가와 프래그먼트 생성 먼저 build.gradle(module)에 dependency {} 안에 라이브러리를 하나 추가합니다. Bottom sheet은 기본 제공되는 view가 아니기 때문에 라이브러리를 추가해야만 사용할 수 있습니다. 라이브러리를 추가한 후 오른쪽 위에 Sync Now를 클릭합니다. 그다음 저는 프래그먼트를 하나 생성하도록 하겠습니다. 여러분의 자바 패키지에서 마우스 오른쪽 클릭 New -> Fra..

[Android/Kotlin] 서울시 공공데이터 사용법

안녕하세요 골드입니다. 서울 열린 데이터 광장에 들어가시면 서울시에서 제공하는 다양한 API를 이용할 수 있습니다. 흔히 지하철, 버스, 도서관 등 다양한 정보들을 제공하고 있기 때문에 이를 이용하여 앱을 만들 수 있습니다. data.seoul.go.kr/dataList/datasetList.do 서울 열린데이터광장 전체 6,642건 을 찾았습니다. 정확도순 최신공개일순 조회순 제목순 조회 공공데이터 [일반행정] 민주주의 서울 자유제안 정보 서울시 시민제안 사이트로, 시민이 제안을 하면 10일동안 10표 이 data.seoul.go.kr 공공데이터 사용 먼저 홈페이지에 접속하고 로그인을 해야 합니다. 만약 아이디가 없다면 회원 가입 후 이용할 수 있습니다. 로그인을 하고 공공데이터 -> 데이터셋으로 접속..

[Android/Kotlin] Retrofit2 활용하기 (Kotlin data class File from JSON)

안녕하세요 골드입니다. Java를 사용할 때, JSON파일을 읽기 위해 Retrofit2을 사용하는 법은 이미 글을 올린 적이 있습니다. 이번에는 Kotlin으로 Retrofit2를 사용하는 방법에 대해서 글을 작성하도록 하겠습니다. 1. Retrofit2 의존성 추가 먼저 build.gradle(Module: app) 파일에 Retrofit2를 추가합니다. dependencies {} 중괄호 안에 코드를 추가합니다. 맨 밑에 두 줄입니다. Retrofit2를 위해서 컴파일할 때, 자바 버전 1.8이상이어야 합니다. 같은 파일에서 android {} 중괄호 맨 아래 부분에 새로운 코드를 추가합니다. compileOptions {} 부분을 추가하면 됩니다. 이 코드는 자바 1.8이상으로 컴파일하겠다는 말입..

[Java] PriorityQueue(우선순위 큐) 사용법과 예제

안녕하세요 골드입니다. 1. PriorityQueue(우선순위 큐)란? 흔히 아는 Queue는 FIFO(First In First Out) 형식으로 먼저 들어온 데이터를 먼저 방출하는 방식입니다. PriorityQueue는 Queue인터페이스 중의 하나로, 저장 순서에 상관없이 우선순위(Priority)가 높은 것부터 선출하는 것이 특징입니다. 저장공간으로 배열을 사용하고, 각 요소를 힙(heap)이라는 자료구조 형태로 저장합니다. 힙은 이진트리의 한 형태로 가장 큰 값과 가장 작은 값을 빠르게 찾을 수 있다는 장점이 있습니다. 기본적으로 PriorityQueue는 요소에 대한 비교 기준이 존재해야 하고, 비교 기준에 따라 그 우선순위를 결정하게 됩니다. 2. PriorityQueue 선언 Priorit..