ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드 스튜디오] 버튼을 누르는 동안 숫자를 증가 시키기(JAVA/자바)
    안드로이드 공부 2022. 4. 13. 19:26

    안녕하세요~ 코딩하는 코알못 코메인입니다.

    안드로이드 어플 개발 공부를 하는 중에 다른 사람들에게도 이 방법을 공유하고, 필자도 기록과 공부를 위해 쓰는 글입니다.

     

    제목 그대로 버튼을 누르면 숫자가 한번만 증가하게 만드는 것은 온클릭만으로도 가능하지만, 필자가 구현하고 싶었던 것은 누르는 것을 유지하면, 숫자가 누르는 동안 계속 증가하는 것을 구현해 볼 것이다. 클릭을 멈추면 증가도 멈추게 할 것이다.

     

    사용하는 것은

    Handler

    onTouch

    를 사용해 구현 할 것이다.

     

    xml

    <?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:id="@+id/UpButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="UP"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.456" />
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="172dp"
            android:layout_height="69dp"
            android:gravity="center"
            android:text="0"
            android:textColor="@color/black"
            android:textSize="24sp"
            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.3" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>

     

    MainActivity

    package com.example.touching_countup;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        TextView textview;
    
        //핸들러를 만들어준다.
        Handler PHandler = new Handler(){
            public void handleMessage(Message msg){
                String result = textview.getText().toString();
                if(result == null || result.equals("")) result = "0";
                result = String.valueOf(Integer.parseInt(result) + 1);
                textview.setText(result);
                //값이 증가할때마다의 딜레이 (0, 값(높을 수록 딜레이가 느려진다.))
                PHandler.sendEmptyMessageDelayed(0, 10);
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            textview = findViewById(R.id.textView);
            Button Up = findViewById(R.id.UpButton);
    
            Up.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    if(motionEvent.getAction() == 0){
                        //버튼 터치하고 값이 오르기 시작할때까지의 딜레이 (0, 값(높을 수록 딜레이가 느려진다.))
                        PHandler.sendEmptyMessageDelayed(0, 500);
                    }
                    if(motionEvent.getAction() == 1){
                        PHandler.removeMessages(0);
                    }
                    return false;
                }
            });
        }
    }

     

     

    결과

     

     

     


     

    깃허브에도 올려 두었으니 직접 가져가서 쓰셔도 됩니다.

    https://github.com/goodunkuck/Touching-CountAutoUp/tree/master

     

    GitHub - goodunkuck/Touching-CountAutoUp

    Contribute to goodunkuck/Touching-CountAutoUp development by creating an account on GitHub.

    github.com

     

    공부하는 중이기에 충분히 틀린 부분과 더 개선 할 부분이 많다고 생각하고 있습니다.

    의견 있으신 분은 언제든지 댓글로 말해주시면 감사하겠습니다.

    댓글