ABOUT ME

-

Today
-
Yesterday
-
Total
-
choco@desktop:~/tistory
$ 정보처리기사 요점정리
1과목 2과목 3과목 4과목 5과목 실기

$ Linux Kernel
Power Management DVFS
  • 안드로이드 스튜디오로 계산기 어플 만들기
    SW개발/안드로이드 스튜디오 2019. 1. 10. 13:38

    안드로이드 스튜디오로 계산기 어플 만들기


    본 게시물은 하단 링크의 안드로이드 스튜디오 강좌 2강을 따라한 내용입니다.

    https://www.youtube.com/watch?v=dk_AyDJL61g&t=138s



    안드로이드 스튜디오에서 새 프로젝트를 열어서 res > layout > activity_main.xml 파일을 열어줍니다.



    기본으로 들어있는 Hello World 글자는 선택해서 지워줍니다. 그리고 먼저 Text > Plain Text를 마우스로 끌어서 다음과 같이 화면에 넣어줍니다.


    이 Plain Text는 첫번째 숫자를 입력할 칸입니다. 두 번째 숫자를 입력할 칸 또한 아래에 하나 더 Plain Text를 이용해 만들어 줍니다. 그래서 총,  Plain Text 2개, Button 4개, TextView 1개를 마우스로 끌어서 만들어 주면 다음과 같습니다.



    그리고 각 요소를 클릭해서 우측에서 내용을 변경해줍니다. Plain Text의 ID를 number1, hint는 첫번째 숫자, text는 빈칸으로 만들어줍니다.



    Button의 ID 를 addButton으로 작성하고, text에는 더하기라고 작성해줍니다. 나머지 버튼도 다음과 같이 써줍니다.


    ID:  addButton

    text:  더하기


    ID: subtractButton

    text: 빼기


    ID: multiplyButton

    text: 곱하기


    ID: divideButton

    text: 나누기




    TextView에는 ID를 result라고 적어주고, text는 지워줍니다. 그리고 textAppearance 옆에 App.Compat.Display1 을 선택해주면

    글자가 커집니다.




    각 버튼에서 할 작업을 이제 MainActivity 코드에서 함수로 구현해주면 됩니다.

    먼저, import 부분을 작성합니다.


    그리고 필요한 함수들 ex) addClick(View v) 등도 하단에 작성해줍니다.

    전체 코드 내용은 다음과 같습니다.

    package comby1994.httpsgithub.my_application_1;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {

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

    public void addClick(View v){
    EditText number1 = (EditText) findViewById(R.id.number1);
    EditText number2 = (EditText) findViewById(R.id.number2);
    TextView result = (TextView) findViewById(R.id.result);
    int n1 = Integer.parseInt(number1.getText().toString());
    int n2 = Integer.parseInt(number2.getText().toString());
    result.setText(Integer.toString(n1 + n2));
    }

    public void subtractClick(View v){
    EditText number1 = (EditText) findViewById(R.id.number1);
    EditText number2 = (EditText) findViewById(R.id.number2);
    TextView result = (TextView) findViewById(R.id.result);
    int n1 = Integer.parseInt(number1.getText().toString());
    int n2 = Integer.parseInt(number2.getText().toString());
    result.setText(Integer.toString(n1 - n2));
    }

    public void multiplyClick(View v){
    EditText number1 = (EditText) findViewById(R.id.number1);
    EditText number2 = (EditText) findViewById(R.id.number2);
    TextView result = (TextView) findViewById(R.id.result);
    int n1 = Integer.parseInt(number1.getText().toString());
    int n2 = Integer.parseInt(number2.getText().toString());
    result.setText(Integer.toString(n1 * n2));
    }

    public void divideClick(View v){
    EditText number1 = (EditText) findViewById(R.id.number1);
    EditText number2 = (EditText) findViewById(R.id.number2);
    TextView result = (TextView) findViewById(R.id.result);
    int n1 = Integer.parseInt(number1.getText().toString());
    int n2 = Integer.parseInt(number2.getText().toString());
    result.setText(Integer.toString(n1 / n2));
    }
    }

    원래 어플의 레이아웃이 보인 곳에서 하단에 보이는 Text 탭이나 마우스 오른쪽 버튼을 화면에 누르고 Go to xml을 클릭하면 xml 편집 화면으로 넘어갈 수 있습니다.


    xml에서 <Button>들마다 android:onClick="addClick" 이런 식으로 아까 만든 함수 이름을 작성해줍니다. 전체 xml 코드는 다음과 같습니다.

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.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"
    tools:layout_editor_absoluteY="81dp">

    <EditText
    android:id="@+id/number1"
    android:layout_width="wrap_content"
    android:layout_height="58dp"
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="46dp"
    android:layout_marginBottom="56dp"
    android:ems="10"
    android:hint="첫 번째 숫자"
    android:inputType="textPersonName"
    app:layout_constraintBottom_toBottomOf="@+id/number2"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

    <EditText
    android:id="@+id/number2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="114dp"
    android:ems="10"
    android:hint="두 번째 숫자"
    android:inputType="textPersonName"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

    <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="69dp"
    android:layout_marginLeft="69dp"
    android:layout_marginBottom="128dp"
    android:text="Name"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toEndOf="parent" />

    <Button
    android:id="@+id/addButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="15dp"
    android:layout_marginRight="15dp"
    android:onClick="addClick"
    android:text="더하기"
    app:layout_constraintBaseline_toBaselineOf="@+id/subtractButton"
    app:layout_constraintEnd_toStartOf="@+id/subtractButton" />

    <Button
    android:id="@+id/subtractButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="22dp"
    android:onClick="subtractClick"
    android:text="빼기"
    app:layout_constraintBottom_toTopOf="@+id/multiplyButton"
    app:layout_constraintStart_toStartOf="@+id/divideButton" />

    <Button
    android:id="@+id/multiplyButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="15dp"
    android:layout_marginRight="15dp"
    android:layout_marginBottom="39dp"
    android:onClick="multiplyClick"
    android:text="곱하기"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/divideButton" />

    <Button
    android:id="@+id/divideButton"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_marginTop="12dp"
    android:onClick="divideClick"
    android:text="나누기"
    app:layout_constraintBottom_toBottomOf="@+id/multiplyButton"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/subtractButton" />

    <TextView
    android:id="@+id/result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="25dp"
    android:layout_marginLeft="25dp"
    android:layout_marginTop="50dp"
    android:textAppearance="@style/TextAppearance.AppCompat.Display1"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/number2" />
    </android.support.constraint.ConstraintLayout>


    혹시 다음과 같은 에러메세지가 뜨고 컴파일이 되지 않는다면 (컴파일 되지 않는 가장 큰 원인은 오타이기 때문에 오타를 먼저 확인해야 합니다 ㅠㅠ!!) Missing Constraints in ConstrainLayout 위에 표시한 버튼 (Infer Constraints) 을 클릭합니다!


    run을 돌려서 동작을 확인해봅니다!

    끝!


    오류 메세지 해결 방법

    https://stackoverflow.com/questions/47778506/getting-error-missing-constraints-in-constraintlayout

    댓글

Designed by Tistory.