summary
https://www.notion.so/3-a038e238f3484664b4d49572b65400d1
코틀린 장점
- 버그가 적다
- 간결하다
- 많이 사용중
- Java와 완벽히 호환
3-2 코틀린 맛보기
- println : console 창에 출력, 버그 발견할 때 사용
- Toast 메시지 : 어플에 나타남
3-3 Kotlin 기초 문법 맛보기(1)
- 변수 : var
- 컬렉션 : 리스트(List), 맵(Map)
- 리스트 - 순서를 가지고 있는 형태의 자료구조, 같은 타입만 사용 가능
ex) var numList = listOf(1,2,3)
println(numList[0]) --> 1
var stringList = ListOf("a","b","c")
pritnln(stringList[1]) --> b
println(stringList.size) --> 3
- 맵 - 키(key)-벨류(value)값의 묶음 ==사전
ex) var nameMap = mapOf("FirstName" to "Rtan", "LastName" to "Lee")
--> FirstName: 키, Rtan : 벨류
--> println(nameMap["firstName"]) : rtan
--> pringln(nameMap.keys) : 키들 확인
- listOf(), mapOf() 는 읽이 전용 모드이므로 수정 불가능 --> 수정가능하게 하려면 : mutableListOf(), mutableMapOf()사용
- mutableListOf()
- add : 새로운 값 마지막에 추가
ex) var alphabetList = mutableListOf("a","b","c")
alphabetList.add("d")
- n번째에 값 추가
ex) alphabetList.add(2,"d")
- 값 변경
ex) alphabetList[0] = "A"
alphabetList.set(1,"B")
- 값 제거
ex) alphabetList.remove("d")
--> 같은 값이 있으면 가장 먼저 나오는 값 제거
alphabetList.removeAt(3)
--> n번째 값 제거
- 추가 및 변경: put
- 삭제 : remove
-
리스트 안에 맵 추가 가능
var students = mutableListOf(
mutableMapOf("name" to "Rtan"),
mutableMapOf("name" to "Kotlin")
)
--> [{name=Rtan},{name=Kotlin}]
-
toUpperCase() : 모든 문자열 대문자로
-
split() : 해당 문자 기준으로 나누기
3-4 Kotlin 기초 문법 맛보기(2)
- 함수 : fun()
- 리턴X
ex) fun printSum(num1: Int, num2: Int) {
println(num1+num2)
}
printSum(3,5) --> 8
printSum(4,-1) --> 3
- 리턴O
ex) fun sum(num1: Int, num2: Int) : Int{
return num1+num2
}
sum(3,5)
- 타입
ex) var one: Int = 1
var pi: Double = 3.14
- 반복문
for( i in 0..99) { // 0..99 : 범위
println(i)
}
var languages = listOf("Korean","English", "Kotlin", "Python", "Java", "JavaScript")
for (lang in languages) {
println(lang)
}
var users = listOf(
mapOf("FirstName" to "르탄", "LastName" to "박"),
mapOf("FirstName" to "안드", "LastName" to "이"),
mapOf("FirstName" to "로이", "LastName" to "김"),
mapOf("FirstName" to "개발", "LastName" to "최"),
mapOf("FirstName" to "스파", "LastName" to "김"),
)
for (user in users) {
println(user)
}
4-2 새로운 액티비티 시작하기(1)
Intent
-
어떤 작업을 하겠다는 의도를 표현하는 용도
-
다른 액티비티를 시작할 때 사용
ex) Intent(this, IstjActivity::class.java)
this : 현재 코드가 적혀있는 곳 (출발지 액티비티)
Istj~~ : 도착지 액티비티
IstjActivity - 액티비티 객체
::class.java - 참조를 위한 클래스
-
주고 싶은 정보 담아서 전달 가능
: putExtra(key,value)
key - 다른 화면에서 데이터를 확인할 때 쓰는 값
value - 전달하려는 값
4-3 새로운 액티비티 시작하기(2)
-
인텐트에 담겨있는 데이터 확인
: getStringExtra(key)
-
Toast.makeText(this,personalKey,Toast.LENGTH_LONG.show()
this - IstjActivity
: IstjActivity의 context를 이용해서 personalKey에 들어있는 정보를 메시지로 띄워주고 Toast의 길이는 LENGTH_LONG으로 보여주겠다.
-
intent의 this : 어디서 시작할지 보여주기 위함
-
toast의 this : 어디서 보여줄지 표현하기 위함
-
intent와 Toast.makeText의 첫번째 값은 context를 전달해 주어야 함.
--> context :현재 상태의 맥락을 의미, 현재 어디에 있는지, 어느 화면에 있는지에 대한 정보
-
Activity에 있는 context를 쓰겠다 : this
-
View에 있는 context를 쓰겠다 : view.context
view.context vs this
view에는 view를 생성할 때 사용한 context가 들어있음. --> view.context를 하면 view가 만들어질 때 사용한 context가 들어가 있다.
--> view에 들어있는 context는 view가 속한 액티비티의 context가 들어간다. (MainActivity)
웹뷰
앱에서 웹페이지를 보여주는 뷰
- 앱의 인터넷 사용 권한 추가
: net::ERR_CACHE_MISS오류 --> Manifest파일 수정
: net::ERR_ACCESS_DENIED오류 --> 앱 uninstall후 다시 설치
앱 배포 유의사항
[Package name]
- 중복 X
- 소문자만 가능
- com.중복어려운이름.프로젝트 이름
앱 아이콘 변경
app > res > mipmap
ic_launcher , ic_launcher_round 삭제
- 앱아이콘으로 사용하고 싶은 이미지 추가
- 이름을 ic_launcher.png로 변경, ic_launcher_round도 적용시켜주어야 함.
앱 배포하기