본문 바로가기
IT/안드로이드 Android

안드로이드 앱 만들기 . 코틀린 시작하기

by SidePower 2022. 10. 9.

 

버튼만 하나 추가해서 텍스트뷰에 글자를 찍는 초간단 앱을 만들어볼게요.

 

 프로젝트 만들기

New Project 하나 만듭니다.

프로젝트명을 FirstApp으로 했습니다.

개발 언어는 Kotlin으로 지정해서요.

 

FirstApp Android 프로젝트 

 

 버튼 추가하기

앱 화면을 만드는 파일은 activity_main.xml 입니다.

Button만 추가해서 실행해 봤습니다.

<만 입력하니 자동으로 추가할 수 있는 항목들이 다 보이고

<Bu만 입력해도 Button이 바로 표시되어 코딩하기가 너무 편하네요.

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="클릭하세요" />

    <TextView
        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>

 

 버튼, 텍스트뷰 ID 세팅하기

버튼이나 텍스트뷰 같은 위젯을 컨트롤하기 위해서는 ID를 부여해야 됩니다.

위젯 아이디 부여 방법은 android:id="@+id/아이디"입니다.

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="클릭하세요"
    android:id="@+id/idBtnMain"
    />

<TextView
    android:id="@+id/idTxtMain"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"

 버튼 클릭 이벤트 주기 . EVENT

MainActivity는 앱 기능을 구현하는 프로그램 메인 소스입니다.

코틀린 언어이기 때문에 파일 확장자가 kt로 되어 있네요. MainActivity.kt

처음 프로젝트 오픈될 때 지정된 기본 내용입니다.

여기에서 Button 클릭 이벤트를 추가해 볼 거예요.

package com.example.firstapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

 

각 위젯마다 고유 기능이 있으며

앱 사용자가 버튼을 클릭하거나 화면을 터치하는 등의 동작을 이벤트(EVENT)라고 합니다.

이 이벤트를 감지하는 역할을 하는 것이 리스너(Listener) 또는 어댑터(Adapter)입니다.

아직 생초보라서 리스너만으로 해볼거에요.

버튼 클릭에 대한 리스너는 OnClickListener

화면을 손으로 터치에 대한 리스너는 OnTouchListener 등... 많습니다.

 

이번에는 간단하게 Button의 Click 대한 OnClickListener만 해볼게요.

package com.example.firstapp

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

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //아이디를 이용해 버튼과 텍스트뷰 가져오기
        var btn1 = findViewById<Button>(R.id.idBtnMain)
        var txt1 = findViewById<TextView>(R.id.idTxtMain)

        //버튼에 Click 이벤트 부여하기
        btn1.setOnClickListener(object: View.OnClickListener {
            override fun onClick(v: View?) {
                //텍스트뷰에 글자를 넣습니다.
                txt1.setText("안녕하세요. 클릭되었습니다.")
            }
        })

    }
}

activity_main.xml에서 버튼과 텍스트뷰에 부여한 ID를

소스에서 찾는 방법이 findViewById<위젯>(R.id.아이디)입니다.

var btn1 = findViewById<Button>(R.id.idBtnMain)

btn1 변수가 idBtnMain이라는 Button을 할당 받아 조작할수 있게 되네요.

 

btn1.setOnClickListener는 btn1이라는 버튼에 클릭이벤트를 지정하는 함수이며

View.OnClickListener로 실제로 발생하는 이벤트 리스너 객체를 지정하고

클릭 이벤트 수행 함수 onClick으로 텍스트뷰에 문자열을 지정했습니다.

txt1.setText("안녕하세요. 클릭되었습니다.")

 

onClick(v: View?)에서 View뒤에 ?가 붙어있는게 뭔지 궁금했는데요.

구글링으로 찾아보니 코틀린에서는 변수나 객체 뒤에 ?를 붙이면

null도 허용한다는 의미라고 합니다.

 

 AVD 실행하기

Shift + F10 또는 상단의 Run버튼  으로 실행합니다.

앱 상단의 버튼을 클릭하니깐 중간의 텍스트뷰에 

안녕하세요. 클릭되었습니다. 가 잘 표시되네요.

 

시작이 반이라고 하잖아요.ㅋ

갈수록 더 어렵고 복잡하겠지만 이번에는 버튼 클릭 이벤트 처리로 만족합니다.

 

 

감사합니다.

반응형

댓글