1) xml
<?xml version="1.0" encoding="utf-8"?>
<!--
xmlns: android: 안드로이드 네임스페이스 정의
package: 앱의 패키지 이름을 지정, 패키지 이름은은 앱을 식별하는 고유한 이름
application 앱의 전체적인 정보를 포함
android:allowBackup: 앱의 백업 여부를 설정
android:icon : 앱 아이콘 이미지를 지정
android:label: 앱 이름을 지정
adroid:roundIcon: 라운드 앱 아이콘 이미지를 지정
android:supporttsRtl: 앱이 오른쪽에서 왼쪽방향을 지원하는지 여부를 설정
android:theme: 앱의 기본 테마를 지정
activity: 앱의 액티비티 정보를 포함
android:name : 액티비티의 이름을 지정
intent-filter: 액티비티를 시작하는데 사용되는 인텐트 필터 정보를 정의
action: 인텐트 필터에 사용될 액션 정보를 지정
category: 인텐트 필터에 사용될 카테고리 정보를 지정, 이 코드에서는 LAUNCHER 카테고리를 지정하여
앱이 실행될 때 런처화면이 나타납니다.
@: Android에서 리소스를 참조할 때 사용되는 기호
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.uidesign">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
package com.example.uidesign // 앱의 패키지 이름을 지정, 앱의 모든 클래스는 이 패키지 안에 있어야
// 한다.
import androidx.appcompat.app.AppCompatActivity // 기본적인 액티비티 동작을 구현하고
// ActionBar를 지원
import android.os.Bundle // Android 의 key-value 쌍으로 데이터를 저장할 수 있는 객체
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) // 액티비티가 초기활 될 때 필요한 작업을 수행
setContentView(R.layout.activity_main) // 메서드를 호출하여 이 파일에 정의된 뷰들을 화면에
// 표시
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/txtNormal <!-- id : txtNormal -->
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout>
<Button
android:id="@+id/btnClick"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Click"
android:textColor="#FF0000"
android:background="#333333"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
1) 이미지 선택 후 설정되는 속성
2) scaleType 속성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity">
</LinearLayout>
LinearLayout의 자식 뷰 속성
실습
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="22sp"
android:text="이름" />
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:ems="10"
android:inputType="textPersonName"
android:textSize="22sp"/>
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:textSize="22sp"
android:text="로그인" />
</LinearLayout>
1) Build.gradle(project:UIDesign)
buildscript { //코틀린 버전과 빌드 도구인 Gradle의 버전을 설정, 필요한 의존성들을 추가
ext.kotlin_version = "1.3.72"
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects { // 모든 프로젝트에서 공통으로 사용되는 설정을 정의
repositories {
google()
jcenter()
}
}
task clean(type: Delete) { // build 디렉토리를 삭제하는 작업을 수행
delete rootProject.buildDir
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android { // 프로젝트의 기본 설정
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig { // 앱의 기본 구성 정의
applicationId "com.example.uidesign"
minSdkVersion 16
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes { // 앱 빌드 유형을 정의
release {
…
}
}
}
dependencies { // 프로젝트에서 사용하는 라이브러리와 의존성을 정의
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}