본문 바로가기
Android Studio

안드로이드 #1 : 안드로이드 기초, 기본설정, 출력해보기 230227

by haheehee 2023. 2. 27.

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>

색상 바꿔보기, 버튼 생성해보기 예제

댓글