1. 안드로이드 리사이클러뷰와 그리드 레이아웃 매니저를 이용한 해상도별 item 그리기 프로젝트를 진행하며 마주친 문제인데, 리사이클러 뷰 에서 여러 종류의 아이템(헤더, 아이템카드, 푸터)을 뿌려주고 있는 상황이며, 가이드로 나온 디자인은 특정 해상도에서 아이템 뷰를 다르게 보여주기를 원하고 있었습니다. 아래는 디자인 가이드 예시 입니다. 리사이클러 내부에 들어가는 아이템이 한 가지 종류가 아니라 위 디자인 가이드를 보시면 알겠지만 최 상단에는 타이틀 헤더(Header)가 최 하단에는 푸터(Footer)가 붙어있는 상황입니다. 기본적으로 사용하고 있었던 LinearLayoutManager 를 걷어내고 GridLayoutManager 를 사용해야 함은 얼추 알고는 있었는데, 아이템 타입이 여러개 일 때는..
1. 안드로이드 중고 거래 앱 만들기 (With kotlin) 코틀린으로 안드로이드 중고 거래 앱을 만들어 보았습니다. 사용자는 이메일과 비밀번호로 회원가입 및 로그인 하게 되며 이후 물건과 가격 물건 사진으로 게시글을 등록할 수 있으며 제품마다 상품 게시자와 채팅할 수 있는 채팅방 목록과 채팅 또한 구현합니다. 프래그먼트뷰를 사용해서 하단의 메뉴바를 통해서 fragment 를 전환하는 방식으로 앱을 동작합니다. 파이어베이스 storage 기능을 사용하여 이미지를 업로드하고 실제로 받아와서 게시글 목록에 뿌려주는 작업 또한 실습해 보았습니다. 또 사용자는 중고 판매 게시글을 올릴때 플로팅 액션 버튼을 사용해서 제품 게시글을 올릴 수 있습니다. 주요 기능 이메일로 회원가입 및 로그인/로그아웃 사진 포함 중..
1. 안드로이드 간단 전자 액자 앱 만들기 With 코틀린 이번에 만들어본 안드로이드 어플리케이션은 유저가 선택한 사진을 페이드-인,아웃 효과를 적용시켜 보여주는 기능을 가진 앱입니다. 특징은 아래와 같습니다. 해당 앱을 만들어 보면서 익혔던 내용을 기록하고자 포스팅하였습니다. 특징 및 기능 안드로이드 Permission(권한) 사용 하여 엑티비티에서 외부 저장소에 접근 유저가 스마트폰에 저장된 저장소의 사진을 선택 (SAF, Storage Access Framework) 뷰 에니메이터를 사용해서 페이드-인,아웃 처럼 보이도록 설계 1.1. 개발 시 사용한 기술 및 학습내용 Layout 이 가로로 표시 되도록 설정 (사진 액자) Android Permission 사용 View Animation 사용 Ac..
1. 코틀린 Null이 허용된 변수 선언하기 보통 null이 허용된 변수라면 해당 변수에 아무것도 할당하지 않거나 null을 할당하고 사용할 경우 NullPointerException 일명, NPE가 발생하게 됩니다. 코틀린은 기본적으로 null을 허용하지 않고 null 허용 변수를 따로 만드는 방법으로 이 문제를 방지하고자 합니다. 😃 1.1. null 을 허용하지 않는 코틀린 아래 코드는 변수에 null을 할당하는 코드입니다. 코틀린에서는 이러한 방식은 에러입니다. 실제로 IDE 상에서 아래 코드를 입력해보면 빨간줄이 뜨는 것을 볼 수 있습니다. fun main() { var str1 : String = "Hello Kotlin" str1 = null // Error! println("str1: $s..
1. 코틀린 프로젝트 IntelliJ 에서 GitHub 연동하기 인텔리제이에서는 새로운 프로젝트를 만들고 이를 GitHub에 공유하여 레포지토리를 생성할 수 있습니다. 그 방법을 소개하도록 하겠습니다. 깃허브와 연동하여 커밋 푸시하는 경우 온라인 저장소에 이력을 남김으로써 인터넷 연결만 있다면 진행중인 프로젝트를 바로 가져올 수 있다는 장점이 있습니다. 먼저 IntelliJ의 메뉴 중에서 VCS 메뉴를 클릭해줍니다. VCS는 버전 관리 시스템(Version control system)의 약자로 말 그대로 프로젝트 소스 버전관리에 사용되는 메뉴들을 가지고 있습니다. VCS 메뉴들을 보면 여러가지 메뉴가 있는데 그 중에서 우리는 Share Project on GitHub 라고 되어있는 녀석을 사용하도록 하겠..
1. 코틀린 New Package, class 사라짐 안보임 해결 인텔리제이(IntelliJ)를 받고 나서 처음 프로젝트를 생성하고 패키지를 생성하는 예시 학습을 하려고 하는데 [New Package]는 보이지 않고, New - Directory 만 있더라고요. 당황스러워서 구글에 검색해보니 해결책을 찾을 수 있었습니다. 1.1. 문제 현상 아래와 같이 src 우클릭 하여 New 메뉴에 Package가 없고 Directory만 있는 경우 입니다. 또는 Class 등 추가가 없는 경우에도 해당될 수 있습니다. IntelliJ does not show 'Class' when we right click and select 'New' 1.2. 해결 방법 해결 방법은 간단합니다. 해당 폴더가 Sources Roo..
1. 코틀린 프로그래밍 환경 구축 코틀린 프로그래밍을 위해 실행 환경과 IDE를 설치하는 내역을 정리해드리려고합니다. 그 전에 앞서 간단하게 코틀린에 대해서 소개하고 넘어가도록 하겠습니다. 본 내용은 Doit 코틀린 도서를 기반으로 학습하며 작성했음을 밝힙니다. 1.1. 코틀린에 대해서 코틀린은 인텔리제이로 유명한 젯브레인사가 개발한 언어로 구글의 안드로이드 개발언어로 공식 발탁되었습니다. 코틀린을 사용하면 아래의 플랫폼에서 개발이 가능합니다. 코틀린/JVM : 자바 가상 머신에서 동작하는 앱을 개발할 수 있음 코틀린/JS : 자바스크립트로 웹 앱을 개발할 수 있음 코틀린/Native : LLVM 컴파일러를 이용한 다수 플랫폼을 상대로 앱을 개발할 수 있음 위에 나열한 것 처럼 JVM, JS, Nativ..
이번 글에서는 타입에 대해 또다른 별칭을 붙일 수 있는 코틀린의 기능을 알아보도록 하겠습니다. 🎨 타입에 별명을 짓는 키워드 typealias는 말 그대로 타입(type) 별명(alias)를 붙여서 만들어진 키워드입니다. 원래 정해져있는 타입을 다른 이름으로 사용하고 싶은 경우에 사용하면 편리한 기능입니다. 그러면 아주 간단한 예제 코드를 보면서 설명드리도록 하겠습니다. 💎 예제 코드 (examples) 아래는 typealias를 사용하는 예제코드입니다. typealias Number = Int fun main(args: Array): Unit{ val a: Number = 10 println(a) } 실행 결과 아래는 코드의 실행 결과입니다. 10 Process finished with exit cod..
문자열 ("") 내부에 바로 변수, 표현식을 사용할 수 있는 방법이 있다면, 얼마나 편할까요? C언어에서 사용하는 형식 지정자 %d, %s 등을 쓰지 않고 바로 쓸 수 있는 방법이 코틀린에 있습니다. 🍹 예제 코드 fun main(args: Array): Unit{ val a = 10 val b = 20 println("a의 값은 $a") // "a의 값은 " + a // Syntactic Sugar println("b의 값은 $b") println("a + b = ${a + b}") println("\\\$를 쓰면 어떨까") println("나의 월 수익은 10,000\$다") } 실행 결과 a의 값은 10 b의 값은 20 a + b = 30 \$를 쓰면 어떨까 나의 월 수익은 10,000$다 Proc..
저번 글에서는 문자 하나를 저장하는 Char 타입에 대해서 알아보았다면, 이번 글에서는 문자 여러 개를 저장할 수 있는 타입에 대해서 알아보도록 하겠습니다. 🥤 문자를 여러 개 담을 수 있는 타입이라고 해서 문자열 타입이라고 하며 String 키워드를 사용합니다. 예제 코드 다음은 예제 코드입니다. 아래 코드를 바탕으로 String에 대해서 한 번에 이해합니다. 🍇 fun main(args: Array): Unit{ var str: String = "Hello" println(str) str = str + "\nKotlin!" println(str) println(str[8]) val num = 10 * 5 + 3 println(str + num) println("Kotlin"[0]) } 실행 결과 다음..