시작!(184)
-
백준 2588번 - 곱셈 (코틀린)
fun main() { val first = readln()!!.toInt() val sec = readln()!! // 2 -> 1 -> 0 순으로 ...456이면 654 순으로 출력. for ( i in 2 downTo 0) { println( first * sec[i].digitToInt()) } println(first*sec.toInt()) } ** digitToInt() : 문자 변수의 값이 숫자인경우, digitToInt() 함수를 이용하여 숫자로 변환 할 수 있다. ** for ( i in 2 downTo 0 ) 2 부터 0까지 거꾸로 for 문을 돌린다.
2022.06.01 -
Android - 인터넷에서 이미지를 로드하여 표시하기
이전에서는 웹 서비스에서 데이터를 가져와, 응답을 Kotlin 객체로 파싱하는 방법을 배웠다. 이 지식을 기반으로, 웹 URL 에서 사진을 로드하고 표시한다. 또한 RecyclerView를 빌드하고, 이 뷰를 사용해 개요 페이지에 이미지 Grid 를 표시하는 방법을 다시 확인한다. 기본 요건 프래그먼트를 만들고 사용하는 방법 Retrofit 라이브러리와 Moshi 라이브러리를 사용하여 REST 웹 서비스에서 JSON을 검색하고 이 데이터를 Kotlin 객체로 파싱하는 방법 RecyclerView로 그리드 레이아웃을 구성하는 방법 Adapter, ViewHolder, DiffUtil의 작동 방식 학습할 내용 Coil 라이브러리를 사용하여 웹 URL에서 이미지를 로드하고 표시하는 방법 RecyclerView..
2022.05.27 -
Android - 인터넷에서 데이터 가져오기
오늘의 주제는 인터넷에서 데이터 가져오기 입니다 ! 학습할 내용 REST 웹 서비스의 정의 Retrofit 라이브러리를 사용하여 인터넷에서 REST 웹 서비스에 연결하고 응답 받기 Moshi 라이브러리를 사용하여 JSON 응답을 데이터 객체로 파싱하기+ 시작 코드는 아래의 안드로이드 개발 공식 소스로 시작합니다. 프로젝트 이름은 MarsPhotos 앱 입니다. 시작 코드 URL: https://github.com/google-developer-training/android-basics-kotlin-mars-photos-app/tree/starter 화성 사진 데이터는 웹 서버에 저장된다. 이 데이터를 App으로 가져오려면, 연결을 설정하고 인터넷을 통해 서버와 통신해야한다. 대부분의 웹 서버는 REST라..
2022.05.20 -
Android - Thread
Coroutine을 알아보기전에, 먼저 스레드에 대해 간단히 알아보자. 스레드는 추상적인 개념이지만, App에서 코드를 실행하는 단일 경로로 생각하면 된다. 작성하는 각 코드 줄은, 스레드에서 실행될 명령어이다. 일반적으로 UI 스레드가 있는데, 지금까지 작성한 예제 코드들은 모두 기본 스레드에 있다. 각 코드는, 다음 줄이 실행되기 전에 이전 줄이 완료 되기를 기다린다. 그러나, 실행 중인 App에는 기본 스레드 외에도 스레드가 더 있다. ! ** 기본스레드는 UI 스레드를 의미한다. 근데 경우에 따라 아닐수도 있음. 내부적으로 프로세서는 실제로 별도의 스레드로 작동하지 않고, 여러 명령어 간에 전환하여 멀티태스킹을 제공한다. 기본 스레드가 아닌 스레드로 작업하면, App의 사용자 인터페이스 응답성을 ..
2022.05.16 -
Android - Test code 작성시 추가해야할 header들
build.gradle ( Module: ***.app ) androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test:runner:1.1.2-alpha02' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-alpha02' testImplementation 'androidx.arch.core:core-testing:2.1.0' Test Class 파일에 추가할 것들. import androidx.test.ext.junit.runners.AndroidJUnit4 import com.example.cupcake.mod..
2022.05.16 -
Android - Test 디렉터리 생성하기
( ^^ 몰아서 많은걸 하려니 뒤돌면 까먹게 된다 ㅜㅜ ) 원래 새 프로젝트를 생성할 때, 아래와 같이 자동으로 만들어지기는 하지만, 내가 실습하는 강의에서는 테스트 디렉토리부터 만들도록 진행하고있어서 포스팅 해본다. 안드로이드 공식 강의인, Kotlin 으로 배우는 android 기본 사항 자료를 기반으로 작성했다. 1. 먼저 Android 뷰에서 Project 뷰로 전환한다. 2. 그러면 Project 뷰가 아래와 같이 표시된다. 3. app -> src 로 드롭다운 한다. 4. src 를 마우스 오른쪽 버튼 클릭하고, New -> Directory 를 선택한다. 5. 다음과 같은 창이 표시된다. 6. 여기서 androidTest/java 를 선택한다. 7. 이제 프로젝트 구조에 androidTest..
2022.05.16 -
Android - Back Stack
작업하는 화면의 전 단계로 이동하는 동작이다. App을 처음 열면, Android 는 기본 활동이 포함된 새로운 작업을 생성한다. Activity 는 Back Stack 이라는 Stack 으로 배열되고, 사용자가 이동한 각각의 새 Activity 는 작업의 back stack 으로 Push된다. 맨 위의 stack 활동은, 현재 사용자가 상호작용하고 있는 활동을 나타내고, 그 아래의 stack 은 백그라운드로 전환되었다가 중지된 활동을 의미한다. Back stack 은 뒤로 이동하고자 하는 경우에 유용하다 ! 안드로이드는 Stack의 맨 위에 있는 현재 Activity를 삭제하고 폐기 한 뒤에, 그 아래에 있는 활동을 다시 시작할 수 있다. 즉, Stack 에서 활동을 없애고 이전 활동이 Forgroun..
2022.05.11 -
Android - Fragment 간 공유되는 ViewModel
UI 요소가 자동으로 업데이트 되도록 하려면, binding, lifecycleOwner 를 App의 수명 주기 소유자와 연결해야 한다. !! * LiveData 변환을 사용하여 형식 지정. Transformations.map() 을 사용해 변환한다.. 흠. 이 함수는 LiveData 소스를 조작하고, 관찰 할 수도 있는 업데이트된 값을 반환한다. LiveData 변환을 사용할 수 있는 몇 가지 실시간 예는 다음과 같다. > 표시할 날짜 및 시간 문자열 형식 지정. > 항목 목록 정렬 > 항목 필터링 또는 그룹화 > 모든 항목 합계, 항목 수, 마지막 항목 반환 등과 같이 목록의 결과 계산. 통화 단위 설정인데, NumberFormat.getCurrencyInstance().Format() 을 사용해 변..
2022.05.10 -
Android - ViewModel 과 LiveData 사용하기
LiveData는, 수명 주기를 인식하는 관찰 가능한 데이터 홀더 클래스이다. (?!?!?! ㅠㅠ) LiveData는, LiveData는 Data를 보유한다. LiveData는 모든 유형의 데이터에서 사용할 수 있는 래퍼이다. LiveData는 관찰이 가능하다. 즉, LiveData 객체에서 보유한 데이터가 변경되면, 관찰자에 알림이 제공된다. LiveData는 수명 주기를 인식한다. Livedata에 관찰자를 연결하면 관찰자는, LifeCycleOwner ( Activity 또는 Fragment) 와 연결된다. LiveData 는 STARTED 또는 RESUMED 같은 활성 수명 주기 상태인 관찰자만 업데이트한다. MutableLiveData 는, 변경 가능한 버전의 LiveData 이다. 즉, 내부에..
2022.05.04 -
Android - App architecture (1)
아키텍처는 앱에서 Class간의 책임을 할당하는 가이드라인을 제공한다. App architecture 가 잘되어있으면, 향후 App을 확장하고 더 많은 기능을 포함 할 수 있다. 가장 일반적인 아키텍처 원칙은 , 분리, 모델에서 UI만들기 이다. 분리 디자인 원칙 - 각각 별개의 책임이 있는 여러 클래스로 App을 나눠야 한다는 원칙이다. Model 에서 UI 만들기 - Model 은 App의 데이터 처리를 담당하는 구성 요소로, App의 View 객체 및 App 구성요소와 독립되어 있으므로, App의 수명 주기 및 관련 문제의 영향을 받지 않는다. 또한 Arcitecture 의 기본 Class 또는 구성 요소는, UI 컨트롤러 (Activity, Fragment) , ViewModel , LiveDat..
2022.05.02