File - New - New Project - Empty Activity - Next
Name과 Location 설정
File - New - New Module -
이름 설정
Empty Activity
Finish
지금까지 설정해서 나온 파일들.
modul단위로 배포 가능.
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Gradle Scripts의 build.gradle(Project)눌렀을 때 - 버전들 각각 확인해보기
android {
compileSdk 31
defaultConfig {
applicationId "com.example.proapplication"
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
build.gradle(:app)에서 minSdk는 꼭 21버전 (최대 30)정도로 설정해주는 것이 좋다.
호환떄문에!
최종적으로 화면을 출력해달라고 하는 것이 Activity
정석으로 노가다? 하는 것이 java - com.example.proapplication1 - MainActivity에 코드를 넣는 것.
그것보다는 xml파일 등을 활용해서 코딩하는 것이 좋다.
태그 단위는 다 객체로 자동생성된다.(안드로이드가 직접해줌)
xml태그 형태(클래스 파일)로 변경된다는 뜻.
proapplication1( module) - manifests - AndroidManifest.xml안에서
**xmlns : xml namespace의 약어
module파일 - values - strings.xml
에서 앱 이름 바꾸고싶을 때 수정하면 됨
테마 변경 :
module파일 - values - themes - themes.xml
모듈 파일명 클릭하고
File - Settings
Optimize imports on the fly 선택 후 Apply
Settings - Appearance&Behavior - System Settings - Android SDK
탭에서 SDK Tools - 위 사진의 4가지가 꼭 항시 선택되어 있어야 한다.
C:\Users\Administrator\AppData\Local\Android\Sdk
기억해놓기
실행시켜보면
가장 기본적인 상태에서 실행된 모습.
Hello Wolrd가 출력된 모습을 볼 수 있다.
- 안드로이드는 공개 운영체제인 리눅스 기반
- 안드로이드 앱은 자바나 코틀린 언어를 이용해 개발
- 안드로이드 운영체제의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개됨
- 안드로이드 스마트폰은 구글뿐 아니라 여러 제조업체에서 제작 가능
- 안드로이드 앱은 구글의 플레이 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포가능
- 안드로이드 플랫폼에서는 모든 응용 프로그램이 평등하다는 사상을 바탕으로, 모바일에 기본으로 탑재된 앱과 개발 자가 만든 앱이 똑같은 환경에서 똑같은 API를 이용
안드로이드(앱)은 자바 클래스 런타임 때 그대로 실행하지 않고, DEX 파일로 컴파일을 해야 한다.
컴포넌트
- 앱은 여러 클래스로 구성되는데 크게 컴포넌트 클래스와 일반 클래스로 구분
- 클래스의 객체 생성부터 소멸까지 생명주기 관리를 개발자 코드에서 한다면 일반 클래스
- 생명주기를 안드로이드 시스템에서 관리한다면 컴포넌트 클래스
안드로이드 컴포넌트 4종류
- 액티비티 화면을 구성하는 컴포넌트
- 서비스 백그라운드 작업을 하는 컴포넌트
- 콘텐츠 프로바이더 앱의 데이터를 공유하는 컴포넌트
- 브로드캐스트 리시버 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
- 개발자가 컴포넌트 클래스를 만들 때는 지정된 클래스를 상속받아야 하는데 이 상위 클래스를 보고 구분가능
- 액티비티는 Activity, 서비스는 Service, 콘텐츠 프로바이더는 ContentProvider, 브로드캐스트 리시버는 BroadcastReceiver 클래스를 상속받아서 생성
라이브러리 사용 가능
모듈 파일 - res - values - strings.xml에
<string>태그를 추가하여 라이브러리를 넣어 사용하면 된다.
<resources>
<string name="app_name">ProApplication1</string>
<string name="app_des">만보기 어플리케이션</string>
</resources>
이름 | 설명 |
build.gradle | 빌드 설정 파일 |
AndroidManifest.xml | 앱의 메인 환경 파일 |
res | 리소스 폴더 |
activity_main.xml | 레이아웃 XML 파일 |
MainActivity.kt | 메인 액티비티 파일 |
** 안드로이드에서는 파일명 지정시 카멜표기법 xxxxx -> 대문자를 사용하면 안된다...
리소스 폴더
- drawable: 이미지 리소스
- layout: UI 구성에 필요한 XML 리소스
- mipmap: 앱 아이콘 이미지
- values: 문자열 등의 값으로 이용되는 리소스
- 리소스를 식별하기 위한 int형 변수가 R.java 파일에 등록
- res/layout/test.xml 파일이라면 R.layout.test라고 이용
- res 하위의 폴더명은 지정된 폴더명을 사용해야 합니다.
- 각 리소스 폴더에 다시 하위 폴더를 정의할 수는 없습니다.
- 리소스 파일명은 자바의 이름 규칙을 위배할 수 없습니다.
- 리소스 파일명에는 알파벳 대문자를 이용할 수 없습니다.
src/main/res/layout/activity_main.xml
<?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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="하히"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_main.xml에서
LinearLayoutCompat로 전체 태그를 바꿔주고,
안에 기본적으로 설정되어 있던 속성들을 지운다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="picture uploading..." />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/mallang" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Mallang, CAT, 한말랑" />
</LinearLayout>
우리 말랑이 사진으로 넣어봤다.
귀엽다!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:background="#EEDEFF">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON1"
android:backgroundTint="#FF00E6" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="BUTTON2"
android:backgroundTint="#7700FF" />
</LinearLayout>
색상 바꿔보기, 버튼 생성해보기 예제
'Android Studio' 카테고리의 다른 글
안드로이드 #6 : 전화걸기 화면에서 숫자누르기, back버튼, #(리셋) 기능 추가(이벤트 실습) 230303 (0) | 2023.03.03 |
---|---|
안드로이드 #5 : 전화걸기 화면 만들어보기(레이아웃 실습) 230303 (0) | 2023.03.03 |
안드로이드 #4 : 레이아웃 230302 (0) | 2023.03.03 |
안드로이드 #3 : 뷰 바인딩 230228 (0) | 2023.03.02 |
안드로이드 #2 : 뷰 클래스(TextView, ImageView, EditText, CheckBox, RadioButton, Button) 230228 (0) | 2023.02.28 |
댓글