결과 화면 :
숫자를 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이므로, 숫자를 넣을 경우 형변환을 해야한다. 필자의 경우 ""를 붙여 묵시적 형변환을 하여 문자열로 값을 넣어 만들었다.
반응형
'Android' 카테고리의 다른 글
안드로이드 스튜디오] 이벤트가 실행되기 까지 (0) | 2020.07.14 |
---|---|
안드로이드 스튜디오,java] 간단한 계산기 앱 만들기 (0) | 2020.07.14 |
안드로이드 스튜디오] 인★그램 시작화면 만들어보기 (0) | 2020.07.14 |
안드로이드 스튜디오] 마우스를 클릭하면 변경되는 버튼 제작하기 (0) | 2020.07.14 |
안드로이드 스튜디오 단말에서 Action Bar 제거하기 (0) | 2020.07.10 |