본문 바로가기

Development/Android Studio

(Android Studio) Chapter1. 개요

1. 프로젝트 구조

  1) Android 앱 모듈

  2) 라이브러리 모듈

  3) Google App Engine 모듈

 

2. 프로젝트 트리 구조

  1) App

    - manifests

      > AndroidManifest.xml(안드로이드 앱 구조 설명)

    - java(자바의 소스파일)

    - res(리소스파일)

      > drawable(앱의 아트워크 저장, 처음에는 비어있음)

      > layout(앱의 레이아웃 저장) - main.xml(주 동작의 레이아웃파일)이 처음에 저장

      > minimap(런처 화면 아이콘이 포함된 파일 저장) - ic_launcher.png

      > values - colors.xml, dimens.xml, strings.xml, styles.xml

  2) Gradle Scripts(빌드 배포 도구정보)

    - 000.gradl

    - 000.properties

 

3. 시작하기

  1) Project

    - 이름과 기능 빌드 언어 선택

  2) 첫 화면

    - java 디렉토리 하위에 있는 메인 디렉토리 하위에 생성되는 MainActivity.java(동적 표현)

    - res 하위 layout에 생성된 activity_main.xml(정적 표현)

4. 강좌 내용 정리

  1) 텍스트 설정, 버튼 눌러 버튼 바꾸기

    - layout 설정 (activity_main.xml)

<?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">

    <EditText
        android:id="@+id/et_id"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:textColor="#F44336"
        android:hint="아이디를 입력하세요..." />
    
    <Button
        android:id="@+id/btn_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼"/>

</LinearLayout>

    - 동적기능 부여M(ainActivity.java)

package com.example.firstapp;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText et_id;     // 텍스트 변환할 id 지정
    Button btn_test;    // 텍스트 변환 할 버튼 id 지정

    @Override
    protected void onCreate(Bundle savedInstanceState) { // 첫 시작하는 부분
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        et_id = findViewById(R.id.et_id);  // resource.id.et_id > et_id를 가져와라
        btn_test = findViewById(R.id.btn_test); // btn_test를 가져와라
        btn_test.setOnClickListener(new View.OnClickListener() { // 버튼을 클릭하면 다음을 실행해라
            @Override                                            // onClick 클래스 기능 추가
            public void onClick(View view) {                     // 질문: View 변수는 왜 두번 들어감????
                et_id.setText("Loquens");                        // 지정한 텍스트로 전환해라
            }
        });

    }
}

  2) Intent (다른 구성 요소로부터 작업 요청하는 기능, 화면전환기능에 사용)

    - 버튼을 누르면 다른 페이지로 이동하여 스트링 데이터 전달하고 받는 기능 구현, 다른 페이지가 될 activity 추가

    - MainActivity 구성(.xml / .java)

<?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"
    tools:context=".MainActivity">


    <EditText
        android:id="@+id/et_test"
        android:layout_width="200dp"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn_move"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이동" />

</LinearLayout>
package com.example.intentexample;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private Button btn_move;
    private EditText et_test;
    private String str;

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

        et_test = findViewById(R.id.et_test);



        btn_move = findViewById(R.id.btn_move);
        btn_move.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                str = et_test.getText().toString(); // getText를 string 형태로 입력해라
                Intent intent = new Intent(MainActivity.this, SubActivity.class);
                intent.putExtra("str", str);    // 이름정보, 실제 이름
                startActivity(intent);  // 엑티비티 이동
            }
        });
    }
}

    - subActivity 구성(.xml / .java)

<?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"
    tools:context=".SubActivity">

    <TextView
        android:id="@+id/tv_sub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text = "서브콘텐츠 도착" />

</LinearLayout>
package com.example.intentexample;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SubActivity extends AppCompatActivity {

    private TextView tv_sub;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);

        tv_sub = findViewById(R.id.tv_sub);

        Intent intent = getIntent();
        String str = intent.getStringExtra("str"); //intent 된 string데이터 받기

        tv_sub.setText(str);

    }
}