코틀린(Kotlin) 91

[코틀린(Kotlin)][팀 프로젝트] 간단한 SNS 만들어보기

만들고자 하는 것 1. 메인 페이지(MainPageActivity) - 앱의 첫 화면, 다양한 Widget들을 활용하여 매력적인 메인 페이지 만들기 - 팀원 분 파트 2. 디테일 페이지(DetatilPageActivity) - 메인 페이지에서 선택한 아이템의 상세 정보를 제공하는 페이지 - 상세 정보를 구조화된 형태로 표시하기 위해 ConstraintLayout 활용 - 메인 페이지에서 상세 페이지를 생성할 때 필요한 data를 Intent로 전달하기 - 팀원 분 파트 3. 로그인, 회원가입 페이지(SignInActivity, SignUpActivity) - 비밀번호 입력 시, 보안을 유지하기 위해 ***로 표현하기 - 로그인 이후에는 사용자 이름이 화면에서 보이도록 구성하기 - 로그인, 회원 가입 예외..

[코틀린(Kotlin)] 선택 정렬 알고리즘 연습

오늘도 기초문법 알고리즘 문제를 풀고 있었는데 오름차순에 관한 문제가 있었다 이 문제를 풀려면, 나는 일단 선택 정렬 알고리즘이 무엇인지부터 알아야 했다.. 주어진 숫자 배열 오름차순 정렬(선택 정렬 알고리즘 사용) - 예시) 입력 : [3, 2, 8, 5, 20] / 출력 : [2, 3, 5, 8, 20] - sort 사용 금지 - 리스트, 배열 상관없음 선택 정렬 알고리즘이란 현재 위치에 들어갈 값을 찾아 정렬하는 배열 현재 위치에 저장될 값의 크기의 대소관계에 따라 최소 선택 정렬(오름차순)과 최대 선택 정렬(내림차순)로 구분할 수 있다 기본 로직 1. 정렬되지 않은 인덱스의 맨 앞에서부터, 이를 포함한 그 이후의 배열값 중 가장 작은 값을 찾는다 2. 가장 작은 값을 찾으면, 그 값을 현재 인덱스..

[코틀린(Kotlin)] 로그인, 회원가입, 자기소개 페이지 만들기 (2

보완하고자 하는 것 TextView, EditText 등에 있는 text들을 하드코딩 형식에서 strings.xml 활용하여 수정 HomeActivity에서 종료 버튼에 이펙트 추가 → selector를 활용하여 눌렀을 때 이미지와 글자 색깔 변화 기타 코드 수정 → 수정된 코드는 깃허브에 커밋 strings.xml 활용하여 텍스트 출력 기존에 하드코딩 되어있던 레이아웃 속 텍스트뿐만 아니라 클래스 안에 있는 토스트 메시지도 @string/에 있는 텍스트를 받아와서 출력하도록 설정해 줬다 strings.xml 문자열을 리소스 파일에서 추출하여 사용하는 방법은 하드코딩의 두 가지 문제점을 해결해 준다 하드코딩의 문제점 앱을 다른 언어로 번역하기가 어렵다 앱의 다른 곳에서 같은 문자열을 재사용하기 어렵다 H..

[코틀린(Kotlin)] 객체 지향 프로그래밍

객체란? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)에서 객체(Object)는 상태와 행동을 가지는 개체를 말한다 상태(State)는 객체의 속성(Attribute)이며, 이는 변수를 통해 표현될 수 있다. 예를 들어, '차'라는 객체가 있다면 그 상태는 색깔, 브랜드, 현재 속도 등이 될 수 있다 행동(Behavior)은 객체가 수행하는 메서드이다 위의 '차' 객체에 대한 예를 들면, 행동은 가속, 정지, 방향전환 등이 될 수 있다 예시를 버스로 들어본다면, 버스에는 시내버스, 광역버스, 고속버스 등이 있다 공통점으로는 크게 모든 버스는 엔진을 킬 수 있다 모든 버스는 출발지와 도착지가 있다 모든 버스는 N명 이상 탑승할 수 있다 하지만 각 버스는 껍데기만 '버스'..

[코틀린(Kotlin)] 기초문법 while문과 if문 연습

오늘도 기초 문법에 대해서 공부하는데, 다른 분들의 문제를 풀던 중 주사위 문제가 있었다 두 개의 주사위를 던져서 특정한 숫자의 조합을 출력하기 - 예시) 입력 : 10 / 출력 4+6 = 10 - 입력 값이 12를 넘어가면 예외처리 - 여러 조합 중 아무거나 하나만 출력 for문 두 개를 이용한 방법의 활용 fun main() { val num = readLine()!!.toInt() for (i in 1..6){ for (j in 1..6){ if(i+j==num){ println("${i} + ${j} = ${num}") } } } } 처음엔 단순 주사위 문제인 줄 알고 for문 두 개를 이용해서 특정 입력 값(num)을 출력시켰다 우선 하나의 경우의 수만 출력하는 걸 하고 예외처리를 하기 위해 f..

[코틀린(Kotlin)] 기초문법 조건문/반복문 연습

기초문법 중에서도 조건문과 반복문의 연습을 위해서 간단한 문제 5가지를 만들어 보고 그걸 풀어보는 시간을 가졌다 또, 다른 분들의 문제도 풀어보면서 내가 어떤 문제들에 어려움을 많이 느끼는지 체크해 봤다 문제 1. 정수 num1과 num2를 입력받아 숫자를 비교해서 더 큰 수 출력하기 (단, num1 != num2) 예시) 입력 값 : 5, 10 출력 값 : 10 문제 1. 코드 class Test1 { fun test(){ val num1 = 5 val num2 = 10 if (num1>num2){ println("$num1") } else { println("$num2") } } } 문제 2. 정수들이 담긴 배열 arr에서 가장 큰 수를 출력하기 arr : [51, 25, 68, 40, 34, 55]..

[코틀린(Kotlin)] 로그인, 회원가입, 자기소개 페이지 만들기

구현하고자 하는 것 로그인 페이지(SignInActivity) → 로그인 버튼을 누르면 HomeActivity 실행 (Extra로 아이디를 넘겨주기) → 아이디 / 비밀번호 모두 입력되어야만 로그인 버튼 실행 ("로그인 성공" 토스트 메시지 출력) → 아이디 / 비밀번호 중 하나라도 비어 있다면 "아이디 / 비밀번호를 확인해주세요" 토스트 메시지 출력 → 회원가입 버튼을 누르면 SignUpActivity 실행 → 비밀번호 EditText는 입력 내용이 가려지게 하기 회원가입 페이지(SignUpActivity) → 이름, 아이디, 비밀번호 모두 입력 됐을 경우에만 회원가입 버튼이 클릭가능 → 셋 중 하나라도 비어 있다면 "입력되지 않은 정보가 있습니다" 토스트 메시지 출력 → 비밀번호 EditText는 입..

[코틀린(Kotlin)] 액티비티(Activity)와 인텐트(Intent)

안드로이드의 4대 컴포넌트 안드로이드 애플리케이션은 주로 네 가지 주요 컴포넌트로 구성된다 이들은 애플리케이션의 구조를 정의하고, 안드로이드 시스템과 어떻게 상호 작용하는지를 결정한다 액티비티(Activity) - 액티비티는 사용자가 직접 상호작용하는 화면을 말한다. 예) 이메일 앱에서 이메일 목록을 보여주는 화면, 이메일 작성 화면 등이 각각 독립된 액티비티이다 - 사용자 인터페이스(UI)를 담당하며, 사용자의 입력에 반응하는 이벤트 기반 프로그래밍을 가능하게 한다 서비스(Service) - 서비스는 백그라운드에서 오랜 시간 동안 실행 되어야 하는 작업을 수행한다 예) 음악재생, 파일 다운로드 등 - 사용자가 직접적으로 인지하지 못하는, 애플리케이션의 '백스테이지'에서 일어나는 작업 브로드캐스트 리시버..

[코틀린(Kotlin)] 안드로이드 UI 레이아웃(Layout

레이아웃이란? ViewGroup의 파생 클래스로서, 포함된 View를 정렬하는 기능 1. 레이아웃의 종류 1-1. Linear Layout 컨테이너에 포함 된 뷰들을 수평 또는 수직으로 일렬 배치하는 레이아웃 android:orientation = " " - vertical : 차일드를 위에서 아래로 수직으로 배열 - horizontal : 차일드를 왼쪽에서 오른쪽으로 수평 배열 LinearLayout의 자식(Children)으로 배치되는 View 위젯들은 오직 한 방향(가로or세로)으로만 배치한다 위젯의 크기(높이 또는 너비)와 관계없이 한 줄로만 배열한다 LinearLayout의 자식들은 중첩되지 않고, 지정한 방향으로 쌓이는 형태로 표시된다 LayoutWeight - LinearLayout에 자식(..

[코틀린(Kotlin)] 안드로이드 UI 위젯(Widget

안드로이드 UI(UserInterface) 뷰란? 안드로이드 앱의 UI를 구성하는 기본 단위는 뷰(View)이다 1. 뷰(View)의 구성 위젯(Widget) - View의 서브 클래스로서, 앱 화면을 구성하는 시각적인 모양을 지닌 UI요소 - 예) 버튼, 메뉴, 리스트 등 레이아웃(Layout) - ViewGroup의 서브 클래스로서, 다른 뷰(위젯 혹은 레이아웃)를 포함하면서 이들을 정렬하는 기능을 지닌 UI요소 2. 위젯(Widget) 2.1 위젯이란? View의 서브 클래스 중에서 화면에 보이는 것들을 말한다 (TextView, EditView, Button 등) 2.2 View View클래스의 속성은 모든 UI 컴포넌트들에서 공통적으로 사용할 수 있다 1. 식별자 지정 형식 android="@+..