안드로이드 스튜디오를 활용하여 간단한 계산기 앱을 만들 수 있는 방법을 알아보겠습니다. 이 과정에서는 자바를 사용하여 기본적인 계산 기능을 구현하고, 사용자 인터페이스를 구성하는 방법을 설명합니다. 이러한 앱은 안드로이드를 배우는 데 있어 매우 유용한 프로젝트입니다.
앱 디자인 및 XML 레이아웃 설정
레이아웃 구성 요소 소개
앱의 사용자 인터페이스는 XML 파일에서 정의됩니다. 여러 가지 레이아웃 방식이 있지만, 이번에는 TableLayout을 사용하여 계산기 버튼을 배치합니다. 이 레이아웃은 버튼을 행(row)으로 나누어 배열할 수 있도록 해줍니다. 아래는 기본적인 레이아웃 XML 코드입니다.
“`xml
<tableRow>
<EditText
android:id="@+id/et_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="숫자를 입력하세요." />
</TableRow>
<!-- 버튼 행 설정 -->
<tableRow>
<Button android:id="@+id/num_1" android:text="1" />
<Button android:id="@+id/num_2" android:text="2" />
<Button android:id="@+id/num_3" android:text="3" />
<Button android:id="@+id/btn_plus" android:text="+" />
</TableRow>
<tableRow>
<Button android:id="@+id/num_4" android:text="4" />
<Button android:id="@+id/num_5" android:text="5" />
<Button android:id="@+id/num_6" android:text="6" />
<Button android:id="@+id/btn_minus" android:text="-" />
</TableRow>
<tableRow>
<Button android:id="@+id/num_7" android:text="7" />
<Button android:id="@+id/num_8" android:text="8" />
<Button android:id="@+id/num_9" android:text="9" />
<Button android:id="@+id/btn_multiple" android:text="*" />
</TableRow>
<tableRow>
<Button android:id="@+id/num_0" android:text="0" />
<Button android:id="@+id/btn_clear" android:text="C" />
<Button android:id="@+id/btn_slush" android:text="/" />
<Button android:id="@+id/btn_result" android:text="=" />
</TableRow>
“`
이 레이아웃에서는 EditText를 사용하여 사용자 입력을 받고, 여러 개의 Button을 사용하여 숫자와 연산자를 표시합니다. 각 버튼은 클릭 시 해당 숫자나 연산자를 입력창에 추가하거나 계산을 수행하게 됩니다.
레이아웃 설명
TableLayout을 사용하면 각 버튼을 행으로 나누어 배치할 수 있어, 계산기 인터페이스를 직관적으로 구성할 수 있습니다. 각 버튼은 고유한 ID를 가지고 있으며, 필요에 따라 속성을 조정할 수 있습니다. 예를 들어, stretchColumns 속성을 사용하여 열의 크기를 균일하게 조정할 수 있습니다.
앱 로직 구현
Java 코드 설정
앱의 기능을 구현하기 위해 Java 클래스를 작성합니다. 아래는 기본적인 계산기 로직을 포함한 Java 코드입니다.
“`java
package com.mary.countingapp;
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 {
private EditText ptResult;
private Button btn[] = new Button[16];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initListener();
}
private void init() {
btn[0] = findViewById(R.id.num_0);
btn[1] = findViewById(R.id.num_1);
btn[2] = findViewById(R.id.num_2);
btn[3] = findViewById(R.id.num_3);
btn[4] = findViewById(R.id.num_4);
btn[5] = findViewById(R.id.num_5);
btn[6] = findViewById(R.id.num_6);
btn[7] = findViewById(R.id.num_7);
btn[8] = findViewById(R.id.num_8);
btn[9] = findViewById(R.id.num_9);
btn[10] = findViewById(R.id.btn_plus);
btn[11] = findViewById(R.id.btn_minus);
btn[12] = findViewById(R.id.btn_multiple);
btn[13] = findViewById(R.id.btn_slush);
btn[14] = findViewById(R.id.btn_clear);
btn[15] = findViewById(R.id.btn_result);
ptResult = findViewById(R.id.et_result);
}
private void initListener() {
for (int i = 0; i < 14; i++) {
btn[i].setOnClickListener((View view) -> {
Button button = (Button) view;
ptResult.append(button.getText().toString());
});
}
btn[14].setOnClickListener((View view) -> ptResult.setText(""));
btn[15].setOnClickListener((View view) -> {
String result = ptResult.getText().toString();
ptResult.setText(Eval.cal(result));
});
}
}
“`
이 코드는 버튼 클릭 이벤트를 처리하여 사용자가 숫자와 연산자를 입력할 수 있게 합니다. 또한, 입력된 수식을 계산하고 결과를 보여주는 기능도 포함되어 있습니다.
스크립트 엔진 설정
계산 기능을 구현하기 위해 JavaScript 엔진을 활용합니다. 아래는 JavaScript를 사용하여 입력된 수식을 평가하는 클래스를 정의한 예입니다.
“`java
package com.mary.countingapp;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Eval {
public static String cal(String result) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName(“js”);
try {
return engine.eval(result).toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
“`
이 클래스는 스크립트 엔진을 사용하여 입력된 수식을 평가하고, 결과를 반환합니다. 이를 통해 계산기를 완성합니다.
최종 정리
안드로이드 스튜디오를 활용하여 자바로 간단한 계산기 앱을 만들 수 있는 방법을 살펴보았습니다. XML 레이아웃을 통해 사용자 인터페이스를 구성하고, Java 코드를 통해 기능을 구현하는 과정을 통해 안드로이드 앱 개발의 기초를 익힐 수 있습니다. 이러한 프로젝트는 실용적인 앱 개발 경험을 쌓는 데 도움이 됩니다.