모바일 프로그래밍 공부

모바일 프로그래밍 1주차

NaZZU 2025. 3. 17. 19:20

프로젝트 생성

  • 애플리케이션 이름
    • Project명 ( 공백 없이 입력 )
    • 응용 프로그램 명
  • 회사 도메인
    • user.companyname.com
  • 패키지 이름
    • 2단계 이상 입력
    • com.companyname.appname
      • 폴더 생성 구조 : com\companyname\appname
  • Activity 생성
    • 클래스명 ( 공백 없이 입력 )

 

안드로이드 앱 개발 프로세스

 

 

 

안드로이드 프로젝트 구조

 

  • 안드로이드 프로젝트 파일
File Function
.gradle Build 환경 설정
.idea Copyright, Scope 등 설정
app App관련 source, resource 파일
컴파일 후 생성되는 class 파일
gradle Gradle wrapper는 적절한 Gradle binary를 자동으로 다운로드 해주는 기능
.gitignore Git 에서 Project 별 ignore할 필요가 있는 파일 및 폴더 설정
build.gradle module의 build 방법이 정의 된 script
build에 사용할 SDK 버전, 애플리케이션 버전, 라이브러리 등 설정
gradle.properties Gradle 속성 저장
gradlew Gradle wrapper를 통해 빌드를 진행하기 위한 script
gradlew.bat Gradle wrapper를 통해 빌드를 징행하기 위한 script
local.properties Android SDK 폴더 지정
settings.gradle Gradle 설정

 

  • 안드로이드 app 폴더
Folder Function
app build generated assets 외부데이터 (DB, raw data) 저장
res Resource 파일
source R file
intermediates apk *.apk 파일/ *.json 파일
assets 외부 데이터 ( DB, raw data ) 저장
dex dex file
javac Classes 파일
manifest 애플리케이션을 구성하는 기본요소인 Activity, Sercice, Content Provider, Intents, Broadcast Reciver, Notifications를 정의하고 그 메타데이터들을 제공하는 XM: 문서 파일
outputs logs log file
lib      
src main java Mainactivity.java 파일 저장
res Resource 파일 저장

 

textView의 문자열을 "Welcome to my android world!"로 변경하기

 

source code)

<?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:id="@+id/main"
    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="Welcome to my Android World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

 

result )

 

 

 

Java 코드로 TextView의 속성을 변경하기

 

source code)

package com.inhatc.mobile_programming_practice;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);

        TextView objTV = findViewById(R.id.textView);
        objTV.setText("Android Programming!");
        objTV.setTextColor(Color.BLUE);
        objTV.setGravity(Gravity.CENTER);
        objTV.setTextSize(32);

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
}

 

result )

 

Edit Text 속성을 사용하기

 

source code)

<?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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="text"
        android:text="Google : "
        android:editable="true"
        android:layout_marginTop="146dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

OR

package com.inhatc.mobile_programming_practice;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);

        TextView objET = findViewById(R.id.editText);
        objET.setText("Google : ");
        objET.setGravity(0x01);

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
}

 

result )

 

source code)

package com.inhatc.mobile_programming_practice;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);

        TextView objET = findViewById(R.id.editText);
        objET.setText("Google : ");
        objET.setGravity(0x01);

        String str = objET.getText().toString();
        objET.setText(str + "Android Programming");

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
}

 

result )