돌아오신 것을 환영합니다
이제 import와 package(패키지)들이 중요하다는 것을 알았으니
자세한 내용은 추후에 다뤄볼 예정입니다
지금으로써는 이 정도로 충분하다고 생각합니다
그러면 그 다음 단계로 넘어가 봅시다
class가 있는 15번째 줄입니다
시작하기 앞서 import를 최소화시켜 주겠습니다
여기 작은 화살표가 보이실 것입니다
닫아주시면 됩니다
그러면 공간을 덜 차지합니다
모든 코드들은 그대로 있지만 최소화시킬 수 있는 것입니다
자 그럼 class를 다시 살펴보겠습니다
이 코드들이 서로 묶여있다는 것이 보입니다
왼쪽의 화살표로 닫아보면 알 수 있습니다
이 내용들이 다 연결되어 있다는 것입니다
화살표로 어떤 것들이 한 묶음인지 알 수 있습니다
그럼 코드들을 하나로 묶는 것은 어떻게 하는 것일까요?
그건 이 중괄호를 통해 할 수 있습니다
그럼 여기서 중괄호의 역할을 살펴봅시다
여기서 중괄호가 시작되고 여기서 닫힙니다
여기도 중괄호가 있고
여기서 닫힙니다
여기에서도 중괄호가 열리고 여기에서 닫힙니다
여기에도 있고 여기서 닫힙니다
마지막으로 여기서도 열리고 닫힙니다
이런 식으로 중괄호가 있으며 이 안에 내용들을 가둬두며
한 묶음이 되도록 합니다
좋습니다
이 중괄호 안에 있는 모든 내용은 MainActivity라는 class(클래스)의 일부인 것입니다
그러면 class(클래스)란 무엇일까요?
학교도 아닌데 클래스는 왜 필요한 것일까요?
이는 프로그래밍에서 코드 묶음을 일컫는 용어입니다
그러면
직접 클래스를 만들어 보면서 어떤 식으로 동작하는지 살펴보겠습니다
우선 쉽게 말씀 드리자면 클래스에는 코드를 잔뜩 써놓을 수 있고 거기서 코드를 실행할 수 있는 개념입니다
이 경우에는 MainActivity라는 클래스가 있습니다
우리 애플리케이션의 시작점입니다
애플리케이션을 실행할 때마다 MainActivity가 실행될 것입니다
MainActivity가 없이는 앱이 어디서부터 시작해야 하는지조차 모릅니다
이곳이 늘 애플리케이션이 시작하는 곳입니다
시작점은 꼭 있어야 하며 이는 Android 스튜디오 파일 내부 깊숙한 곳에 정의되어 있습니다
이는 자동으로 생성된 파일 중 하나이며
실제로 'MainActivity'라는 파일이 프로그램의 실행 시작점입니다
이 MainActivity 뒤에는 콜론 기호(:)와 ComponentActivity가 뒤따릅니다
이것의 역할은 무엇이냐면 이 MainActivity가 ComponentActivity처럼 동작해야 한다고 말하는
것입니다
이것은 androidx.activity.ComponentActivity 내에 있으며 이전에 import를 살펴볼 때 본 적이
있습니다
이 부분입니다
이것의 역할은 그저 activity(액티비티)가 어떻게 동작해야 하는지에 대한 것들을 알려주는 것입니다
수많은 코드들이 들어있습니다
따라서 이 ComponentActivity 자체가 클래스입니다
Ctrl이나 command를 누르고 method(메소드) 이름을 클릭하면 이 파일로 넘어가지는데
바로 ComponentActivity.java 파일입니다
보시다시피 수많은 내용이 있습니다
이 코드들이 ComponentActivity의 모습입니다
좋습니다
현재로써 모든 이 안에 모든 코드들을 모두 이해하기엔 버겁습니다
어쨌든 이 부분은 MainActivity가 ComponentActivity처럼 동작하며
액티비티들이 ComponentActivity 내 기능 등을 따르라고 알려주는 것입니다
그렇다면 Activity(액티비티)란 무엇일까요?
애초에 액티비티가 무엇인지 다뤄본 적이 없습니다
액티비티는 단순히 말해서 여러분이 휴대폰에서 보는 것들입니다
따라서 화면입니다
액티비티는 화면 전체라고 할 수 있습니다
여러분이 화면에서 보는 것들은 여러분이 실행한 액티비티 내에 있는 것들입니다
그러니까 어떤 화면에서 다른 화면으로 넘어가고 싶다면
주로 한 액티비티에서 또 다른 액티비로 넘어가는 것입니다
지금은 MainActivity로만 시작을 하고 있기 때문에 아직 이 외에
액티비티는 없습니다
그러므로 액티비티 간의 전환이 없습니다
이는 추후에 작업해 볼 내용입니다
Fragment(프래그먼트) 등 여러 방식이 있으며
추후에 다뤄 볼 예정입니다
어쨌든 액티비티를 가장 쉽게 이해하려면 그냥 '화면에 보이는 것'이라고 생각하시면 됩니다
여러분이 화면에서 보는 것이 액티비티입니다
이 경우에는 MainActivity가 Content(콘텐츠)로 MyFirstAppTheme을 갖고 있으며
우리가 갖고 있는 모든 것이 있습니다
그리고 그 전에 oveerride fun onCreate(savedInstanceState: Bundle?)이 보입니다
이건 도대체 무엇일까요?
이것의 뜻은 MainActivity가 생성될 때
즉 이 액티비티가 생성될 때에
이 중괄호 속에 있는 것을 실행하라는 뜻입니다
그래서 이 중괄호 속 내용은 정확히 무엇일까요?
무엇이 실행되어야 하는 것일까요?
첫 번째로 super.onCreate(savedInstanceState: 가 보입니다
이것이 하는 일은 무엇이냐면
onCreate의 기본적인 역할은 해당 액티비티를 먼저 실행하도록 하는 것입니다
그것이
super.onCreate의 역할입니다
기본적인 것들을 실행하고 그 다음에 실행하고 싶은 것들을 하라는 것입니다
좋습니다
여기도 마찬가지입니다
이후에 우리가 원하는 것을 작업하고 있습니다
setContent로 Content가 MyFirstAppTheme이 되도록 설정하고 있습니다
그 다음에 무언가를 화면에 띄우기 위해 Surface를 사용해 애플리케이션의 모습을
정의합니다
화면이나 MainActivity가 표시하는 것의 배경이라고 할 수 있습니다
그리고 그 안에 Greeting이라는 것이 있습니다
여기 Greeting(name:"Denis")말입니다 이 savedInstanceState : Bundle이 무엇인지도 설명해 드릴 것이지만
굉장히 복잡할 것입니다
일단은 그냥 수많은 설정 묶음이라고 생각하시면 됩니다
좋습니다
이 Greeting을 살펴 볼 것인데 그 전에
이 내용들을 빠르게 짚고 넘어가 보겠습니다
MainActivity의 content를 MyFirstAppTheme으로 설정한다고 알려줍니다
그 다음에 MyFirstAppTheme이 어떻게 보일지 정의합니다
Surface라는 container(컨테이너)가 theme(테마)의 '배경' 색상을 사용합니다
좋습니다
그러니까 이 Surface는 애플리케이션의 배경을 위해 사용하는 것입니다
꼭 집어 배경 색상만 말하는 것이 아니라 더 전문적인 견해로 보자면
MainActivity의 surface(표면)인 것입니다
그리고 이 Surface가 화면 전체를 채워야 한다고 알려주는 것입니다
fillMaxSize(최대사이즈로채우기)라고 쓰여있습니다
그러니까 가진 것으로 전체 화면을 채우고 너의 색상을
즉 배경 색상을 MaterialTheme.colorScheme.background로
설정해 달라는 뜻입니다
그리고 이것의 역할을 애플리케이션의 테마에 따라 color scheme (색상 구성표)를 바꿔줍니다
그 뜻은 예를 들어 다크(어두운) 모드와 라이트(밝은) 모드일 때의
사용되는 색상이 달라지는 것입니다
모르셨던 분들을 위해 알려드리자면 스마트폰에는 이 두 가지의 모드가 있습니다
하나는 다크 모드이고 하나는 라이트 모드입니다
라이트 모드는 환하게 모든 것이 보이며 낮 시간대에 어울리는 밝은 색상들을 사용합니다
하지만 밤에는 이러한 색상들이 너무 밝게 느껴질 수 있습니다
침대에서 휴대폰을 볼 때 너무 빛이 밝으면 다크 모드를 사용해 보시기 바랍니다
모든 화면이 조금 어두워집니다
회색빛이나
흑백 계열이 주 색상들입니다
아무튼 그런 것들을 이곳에서 정의하는 것입니다
사용하는 테마에 따라 배경 색상을 바꾼다는 뜻입니다
그리고 그 안에 또 중괄호와 함께 무엇이 화면에 표시되어야 하는지 알려주고 있습니다
그리고 Greeting이 표시되어야 한다고 알려줍니다
Greeting은 무엇이냐면 이는 compasble(컴포저블)이며 이름에 마우스를 올려보면
그들이 무엇인지 볼 수 있는데 예를 들어 Surface는
마우스를 올리고 잠시 기다려 보면 이 또한 컴포저블이라는 설명이 보입니다
MyFirstAppTheme 또한
컴포저블입니다
이 초록색인지 연두색인지 아무튼 이 초록색의 문자들은
거의 대부분 컴포저블을 표시하기 위해
사용됩니다
컴포저블은 단순히 화면에 보이는 요소입니다
따라서 화면에 보이는 다른 컴포저블들을 담고 있는 역할을 하거나 그 자체가
화면에 보여지는 역할을 합니다
이 경우에는 Greeting이 여기 Greeting 함수를 호출하는데
이 또한 컴포저블입니다
하지만 실질적으로 화면에 출력되는 것이 이 문자이며 이것 역시 컴포저블입니다
마우스를 올려보면 컴포저블이라고 쓰여 있습니다
그러니까 여기서 일어나는 일은 Greeting이라는 것을 실행하라고 요청하는 것이고
그러므로 이 Greeting이라는 함수가 실행되며 이 함수는 이 코드들을 실행시킵니다
이 코드는 무엇일까요?
이 코드들은 그저 text composable(문자 컴포저블)을 보여주는 것입니다
그리고 그 문자는 "Welcome $name!"이어야 합니다
이 $name은 여기에 있는 name을 가져와서 실행시키라고 하는 것입니다
여기에 있는 이름은 무엇일까요?
그건 바로 이곳에서 전달한 것입니다
그래서 method(메소드)라는 것을 조금 살펴보려고 합니다
function(함수)와 method(메소드)에 대해서 말입니다
그런 다음 직접 만들어보면 더 이해하기 쉬울 것입니다
그때 그것들의 역할과 의미를 제대로 알게 될 거라고 생각합니다
제가 말했듯이 지금은 그저 이 코드들의 전반적인 설명을
드리려는 것입니다
아무튼 우리가 전달한 name이 있고 type(종류)는 String(문자열)입니다
어떤 type들이 있는지는 2일차 강의에서 살펴 보려고 합니다
그러니까 Strings도 그 수업에서 다뤄 볼 예정입니다
그리고 modifier가 있는데 type은 Modifier이며 Modifier라고 정의했습니다
이런 식으로 설정들을 컴포저블에 직접적으로 전달할 수 있습니다
이런 식으로 보여야 한다고 알려주는 것입니다
그리고 그걸 여기서 정의한 것입니다
기본 값을 사용하거나 우리가 전달한 것을 사용합니다
우리는 fillMaxSize 즉 최대 사이즈로 채울 것을 전달했습니다
그것이 modifier였습니다
이는 컴포저블의 외관을 modify(수정/제어)할 수 있도록 하는 것입니다
좋습니다
그리고 마지막으로 modifier는 우리가 여기에 전달한 modifier를 사용하라고 정의하는 것
입니다
지금까지 이 코드가 하는 일들을 설명해 드렸습니다
말씀 드렸듯이 이 중 이해가지 않는 부분이 있더라도 걱정 마시기 바랍니다
직접 만들어 보는 시간을 갖을 것이고 그때 더 이해하기 쉬울 것입니다
재차 말씀드리지만 지금은 전반적인 개념을 알려드리려는 것입니다
자 그럼 마지막으로 Preview라는 것이 있습니다
지난 강의에서 보셨듯이 Preview는 애플리케이션의 부분들을
여기서 보여주는 역할을 합니다
좋습니다 그럼 다음 영상에서는 마지막 내용을 다뤄 볼 것인데 바로 애플리케이션을 조금 더
완화시키는 것입니다
이미 영상이 12분이 넘어가고 있으므로
여기서 멈추고 다음 영상에서 뵙겠습니다