본문 바로가기
Android

안드로이드 스튜디오(JAVA)]카운팅 앱 만들기

by 김마리님 2020. 7. 14.

결과 화면 : 

 

숫자를 1씩 카운팅 하는 앱을 만들되, 0 아래로 내려가지 않는 앱을 만든다.

디자인이야.. 간단하니까()

레이아웃은 제약 레이아웃을 사용했다.

<?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:id="@+id/tv_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:textSize="70dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.4" />

    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="100dp"
        android:text="증가"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/btn_minus"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintVertical_chainStyle="spread_inside" />

    <Button
        android:id="@+id/btn_minus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="100dp"
        android:text="감소"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/btn_add" />


</androidx.constraintlayout.widget.ConstraintLayout>

 

먼저 사용할 버튼과 텍스트뷰를 메모리에 띄운다.

 

다음,

모든 버튼의 정보는 R파일에 다 있으므로, R파일에서 위젯의 이름들을 찾아서 선언했던 버튼과 텍스트뷰 변수에 값을 추가한다.

package com.mary.countingapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "Main_Activity";

    private TextView tvCount;
    private Button btnAdd,  btnMinus;
    private int count=0;

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

        tvCount=findViewById(R.id.tv_count);
        tvCount.setText(count+"");
        btnAdd=findViewById(R.id.btn_add);
        btnMinus=findViewById(R.id.btn_minus);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: btnAdd : "+v.getClass().getName());
                count++;
                tvCount.setText(count+"");
            }
        });

        btnMinus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(count>0) {
                    count--;
                    tvCount.setText(count + "");
                }
            }
        });

    }
}

이제 버튼에서 자바에 이벤트를 걸듯이 안드로이드 스튜디오도 이벤트를 걸어보자.

자바에서는 이벤트 추가 함수가 addActionListiner 이지만, 안드로이드는 setOnAc~ 함수를 이용한다. 

이벤트는 이벤트를 받을 타겟이 필요하므로 타겟으로 이벤트 리스너(OnClickListiner)을 설정한다. 

더하기를 할 경우 증감함수를 이용해 ++를, 빼기를 할 경우 -- 를 이용한다. 이 덧뺄셈을 한 값을 setText를 통해 텍스트뷰의 값에 넣는다.

 

이 때, -의 경우 0 이하로 내려가면 안되므로, 이벤트 내부에 if(조건식)을 걸어 0 이하일 경우 이벤트를 거치지 않고 그대로 함수가 끝나도록 유도한다.

 

이 때 주의할 점이 있다. 원래 TextView에 들어가는 값은 String이므로, 숫자를 넣을 경우 형변환을 해야한다. 필자의 경우 ""를 붙여 묵시적 형변환을 하여 문자열로 값을 넣어 만들었다.

반응형