본문 바로가기

분류 전체보기

(61)
본 캠프 22일차 - ActivityResultLauncher 또는 register For ResultActivity() register For ResultActivity() 서로 다른 두 액티비티 간 쌍방향으로 데이터 전달이 가능하게 해주는 것. class SignInActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sign_in) } } 기존에 메인인 Signin액티비티에서 바로 넣어보았다. class SignInActivity : AppCompatActivity() { private val btid : TextView by lazy { findViewById(R.id.et_id) } private..
본 캠프 21일차 - ActivityCompat.finishAffinity lv2 SignpActivity를 생성해 주세요. 타이틀 이미지는 원하는 이미지로 넣어주세요. 이름, 아이디, 비밀번호 모두 입력 되었을 때만 회원가입 버튼이 눌립니다. 셋 중 하나라도 비어있으면 “입력되지 않은 정보가 있습니다.” 라는 토스트 메세지 출력 비밀번호 EditText는 입력 내용이 가려져야 합니다. 회원가입 버튼이 눌리면 SignInActivity로 이동합니다. (finish 활용) lv3 HomeActivity를 생성해 주세요. SignInActivity에서 받은 extra data(아이디)를 화면에 표시해주세요. ImageView, TextView 외에 각종 Widget을 활용해 자유롭게 화면을 디자인 해주세요. 이름, 나이, MBTI 등 자기소개등이 들어가는 위젯을 자유롭게 디자인해주..
본 캠프 20일차 - Intent와 개인과제 시작 Intent 인텐트는 일종의 메시지 객체로 다른 앱 구성요소 작업을 요청 할 때 사용한다 예를 들어 다른 액티비티로 이동 또는 시작, 서비스 시작, 브로드캐스트 전달 등이 있다. 명시적 인텐트 명시적 인텐트는 예전에 사전캠프 때 보았던 startActivity()를 사용하는 것으로 직접 이 액티비티를 호출한다는 것이다. 사용자의 입력을 받아 세부 정보를 표시하는 새로운 액티비티를 띄울 대 명시적 인텐트를 사용한다. 암시적 인텐트 모든 애플리케이션을 검색하여 적합한 인텐트 필터를 가진 컴포넌트를 찾아 실행한다. 즉 이것을 실행할 명확한 어플리케이션, 작업을 바로 실행하는 것이 아니라 기기 안에 있는 안드로이드 시스템에서 적합한 에플리케이션의 목록을 보여줄 수 있다. 개인 과제 시작 LV1 시작 새 프로젝트..
본 캠프 19일차 강의를 보고 레이아웃을 만드는 걸 해보았다. 큰 레이아웃 안에 3개의 작은 레이아웃이 들어가고 그 안에 위젯인 버튼들이 들어간 상태이다. 큰 레이아웃의 컬러에 빨강을 주고 중간 레이아웃에 패딩을 줘서 안쪽으로 들어가게 하면 저렇게 빨간 테두리를 만들 수 있다는 걸 알 수 있었다. 이 작업 때문에 패딩이 뭔지 제대로 각인된거 같다. (물론 실전에서 쓸 수 있느냐는 다르지만) 일단 오늘은 강의만 듣고 내일까지 과제인 베이직반 5문제도 만들어 보려고 했는데 한 문제만 만들고 그 이후가 없다..프로그래머스에서 할 만한걸 찾고 있었는데 내일은 그냥 안드로이드 스튜디오에서 풀고 되는걸 가져가야겠다.
본 캠프 18일차 - let,filter,fold .let {} var selectFood = selectMenu(selectNumber) selectFood?.let{ food -> addOrder(food)} 과제에 들어갔던 문장인데 food를 addOrder(food)로 나타내는 문장이다. 일단 어떠한 자료형이든 사용할 수 있도록 해주는 형식이라고 한다. Int, String, 각종 class의 객체 등이 확장함수로 사용 가능하다고 한다. Filter if (categoryName != "Order" && categoryName != "Cancel") { var foodCategory = food.filter { it.category == categoryName } displayDetailMenu(categoryName) 필터는 리스트에 걸려있는 ..
본 캠프 17일차 - 지난 과제 키오스크 프로그램 다시 만들기 저번주에 만들었던 키오스크 프로그램의 해설 영상을 보고 내가 이해 한 부분, 아는 부분만 따서 다시 만들어 보았다. Menu 클래스 만들기 메뉴 클래스는 이후에 다시 음식들도 같이 사용 할 수 있게 open 클래스로 만들어서 상속 받을 수 있게끔 했다. 다만 처음에 init이라는 주 생성자를 이용하여 넘기는 건 좀 애매 해서 강의 예시에서도 사용해서 좀 익숙한 부 생성자인 constructor를 사용하여 여기에는 idx(번호),name(이름),explain(설명) 이렇게 세 가지만 생성자로 넘기는걸 만들어 두었다. 그리고 저 세개를 출력하는 println도 displayInfo라는 함수를 만들었는데 이거도 open으로 다른 클래스에서 받을 수 있게 해두었다. Food 클래스..
본 캠프 16일차 - 컬렉션(List, Map, Set) 컬렉션은 코틀린에서 List, Map 그리고 Set을 사용하여 개발에 유용한 자료구조를 제공해주는 것이다. List var variable = listOf(값1,값2,값3,...) 리스트는 listOf를 불러와 (값1,값2,값3,...) 이런식으로 읽기 전용으로만 방법이 있다. 이는 0,1,2,... 번 인덱스에 접근해서 값을 변경할 수 없다. var variable = mutableListOf(값1,값2,값3,...) variabel.set(인덱스,값) 다음으로는 mutable을 추가해 0,1,2,...,번 인덱스에 접근해서 값을 변경할 수 있다. 바꾸는 방법은 변수뒤에 .set을 넣고 괄호 안에 바꿀 인덱스(제일 첫번째 값 즉 값1은 인덱스 0부터 시작한다.)번호와 바꿔서 넣어줄 숫자값을 넣어주면 된..
본 캠프 15일차 -쓰레드 쓰레드 쓰레드는 실행흐름을 말하는데 프로그램에는 하나의 메인쓰레드가 있다. 지금까지 써왔던 fun main() {} 의 메인함수를 하나의 메인쓰레드라고 말한다. 지금까지 한것들은 메인 쓰레드 위에서 로직을 실행해 동시처리가 불가능 했는데 별도의 자식쓰레드를 생성하면 동시에 실행할 수 있다. 프로그램이 메모리에 올라가서 실행될때 이를 프로세스 1개로 칭하는데 쓰레드는 이보다 더 작은 단위이다. 쓰레드는 생성되서 수행할 때 각 독립된 메모리 영역인 STACK을 가진다. 위 사진이 메모리에 들어간 프로세스와 쓰레드, 스택의 공간을 나타낸 사진이다. 예를 들어 게임에서 공격을 했는데 공격하고 난뒤 일정시간 뒤 체력이 줄고, 일정시간뒤 때리는 효과음이 발생한다면 이상하니 이것이 한꺼번에 실행되야 편안하다. 이를 ..