-
생 초보가 Android App 개발하는 일기 with kotlin - 2Android 2021. 1. 6. 01:51728x90
Adroid Studio를 여니 갑자기 update 하라고 하네요. 3.5에서 4.0으로 update길래 그냥 update 했습니다.
바뀐 점들은 제가 초보기 때문에 일단 넘기고 공부 좀 한 다음에 다시 살펴봐야 할 것 같네요.
어제에 이어 2강에서 간단한 셋팅하는법 쭉 보다가 auto import 기능 활성화하는 것만 적용했습니다.
- File > Settings > Editor > General > Auto Import 메뉴로 이동
Project 구조 분석
- app/java/com.rajent/MianActivity
- project 생성 시 빈 project를 선택하면 AppCompatActivity를 상속받아 class를 만들어줍니다.
- 그리고 OnCreate를 overide해서 수정하는데 setContentView함수로 Resource에 정의된 아래 activity layout를 설정하는 code입니다.
- R은 Resource, 그뒤로는 아래 res이하 경로와 일치합니다. /를 . 으로 바뀌는 정도만 다르네요.
- app/res/layout/activity_main.xml
- activity의 UI를 정의합니다. UI로 화면을 그리거나 배치할 수 있고 xml모드로 resource를 정의할 수 있습니다.
- Hello, World 문구를 변경하고 싶으면 Code로 이동해서 android:text="Hello. World!" 여기를 수정하면 됩니다.
- app/res/values/strings.xml : string resorce를 정의.
Layout종류
-
LinearLayout
- 직선 방향으로 배치 (가로 혹은 세로)
- 복잡한 Layout은 nested LinearLayout으로 정의 가능
- XML으로 직접 입력시 추천
- Component Tree에서 우클릭 후 "Convert LinearLayout to ConstraintLayout" 눌러서 변경 가능
-
ConstraintLayout
- 복잡한 Layout을 nested view group 없이 정의 가능
- 상하좌우 constraint 지정해줘야 함
- match_prarent 대신 match_constraint 사용 (또는 "0dp" 사용)
- Designer 쓴다면 사용 추천
-
TableLayout
- 테이블 구조를 표현할 때 사용
- Row:태그를 사용해서 행 지정
- Column: 0번 column부터 시작하지 않을 때는 layout_column 속성으로 열 값 지정
-
FrameLayout
- Children View들을 중첩하는 Layout
- 표시되는 순서: 맨 마지막 View가 맨 위에 출력됨
Inflation : Layout xml을 읽어서 메모리 내에 객체로 만드는 과정
Anko : Kotlin Lab, SetContaintView()없이 바로 code에서 UI정의 가능anko를 사용하려면 Gradle에 추가해줘야 한다고 하네요.
Gradle Scripts > build.gradle에서 아래와 같이 추가해줍니다.이건 version 명시...
buildscript { ext.kotlin_version = '1.3.41' ext.anko_version = '9.10.8'
module쪽에 dependencies에 추가해줍니다.
dependencies { implementation "org.jetbrains.anko:anko:$anko_version"
그리고 MainActivity.kt에서 아래와 같이 사용 가능합니다.
import org.jetbrains.anko.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //setContentView(R.layout.activity_main) verticalLayout { padding = dip(30) editText { hint = "name" textSize = 24f } editText { hint = "Password" textSize = 24f } button("Login") { textSize = 26f } } } }
그냥 실행하니 에러가 나네요. Project build를 하니 download를 받으면서 시간이 좀 지나면 build successed가 뜨고 다시 실행하니 잘 동작합니다.
ID 속성
다른 view 참조를 위해 id사용
adroid:id="@+id/[이름]"
@: Resource 참조 의미
+: 추가- 여러 군데서 사용 가능
Kotlin에서는 [이름]에 해당하는 부분을 바로 변수로 사용 가능
-> Java에서는 findViewById()로 찾아야 했던 것에 비해 매우 편리하다고 하네요layout_ 로 시작하는 속성
- 현재 view와 이 view가 놓이는 view group 간의 관계 설정
- layout_width & layout_height: 가로 세로 길이 : wrap_content( 딱 맞는 크기) 또는 match_parent (view group 전체 크기) 사용
- 숫자로도 지정 가능 : layout_height="100dp" 참고로 dp는 밀도 독립적인 픽셀 개념. 해상도에 가변적이라고 하네요.
- layout_gravity : 놓일 view group에서 정렬
- layout_margin: 현재 view 바깥의 여백. padding은 내 view내에서 여백 줄 때 사용. 별개임.
- layout_weight: 크기 비율 지정 가능
대충 Layout이 어떤 건지 개념적으로 정리해봤습니다.
Anko 설정하면서 띄워본 거 말고는 아직 UI나 로직상에 뭔가 바꿔본 게 없네요.
오늘은 2~4강을 쭉 보면서 개념을 이해하고 정리해봤는데 다음은 실제 Activiy 구현 부랑 Event 쪽이라서 재밌을 것 같네요.
'Android' 카테고리의 다른 글
생 초보가 Android App 개발하는 일기 with kotlin - 3 (0) 2021.01.07 생 초보가 Android App 개발하는 일기 with kotlin - 1 (0) 2021.01.04