【问题标题】:How to add values by holding button in countdowntimer如何通过在倒数计时器中按住按钮来添加值
【发布时间】:2021-05-01 03:29:16
【问题描述】:

我正在制作拳击倒数计时器并设置应该持续多长时间我使用两个按钮第一个“+”和第二个“-”我的时间每 5 秒添加一次,例如“5,10,15,20,25. ..”但我总是必须点击添加 5 秒。我想按住按钮,我的值会自动添加我该怎么办?

我希望我在我的问题中添加所有重要信息

我的按钮和显示代码

public void dodawanie1(View view) {
    iloscrund=iloscrund+1;
    display(iloscrund);

   public void odejmowanie1(View view) {
    if(iloscrund>1){
        iloscrund=iloscrund-1;
        display(iloscrund);
    }

}

  private void display(int numer) {
    TextView displayInteger=(TextView) findViewById(R.id.textView16);
    displayInteger.setText("" + numer);

}

odejmowanie 表示减少值 dodawanie的意思是增加价值

【问题讨论】:

    标签: java android android-studio button


    【解决方案1】:

    如果您的意思是在单击和按住之间进行判断,请使用 onTouchListener 来确定按住按钮事件。

    onTouchListener

    【讨论】:

      【解决方案2】:

      我认为你应该使用 Runnable 和 Handler 类来做到这一点。 这个链接应该很有用。 Android: Implement a 1 second interval timer before calling a function

      activity_auto_inc.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=".AutoIncActivity">
      
      <TextView
          android:id="@+id/num"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="24dp"
          android:gravity="center"
          android:text="1"
          android:textSize="26sp"
          android:textColor="@color/black"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent" />
      
      <Button
          android:id="@+id/add"
          android:text="add"
          android:textColor="@color/white"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          app:layout_constraintBottom_toBottomOf="parent"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintHorizontal_bias="0.498"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toBottomOf="@+id/num" />
      </androidx.constraintlayout.widget.ConstraintLayout>
      

      AutoIncActivity.java

      import androidx.appcompat.app.AppCompatActivity;
      import android.annotation.SuppressLint;
      import android.os.Bundle;
      import android.os.Handler;
      import android.view.MotionEvent;
      import android.view.View;
      import android.widget.Button;
      import android.widget.TextView;
      
      public class AutoIncActivity extends AppCompatActivity implements 
      View.OnLongClickListener, View.OnTouchListener {
      
      Button add;
      TextView txt;
      boolean isAddPressed = false;
      Handler handler;
      final int TIME_INTERVAL = 100;
      final int STEP = 1;
      
      @SuppressLint("ClickableViewAccessibility")
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_auto_inc);
      
          handler = new Handler();
          add = findViewById(R.id.add);
          txt = findViewById(R.id.num);
      
          add.setOnLongClickListener(this);
          add.setOnTouchListener(this);
      
      }
      
      @Override
      public boolean onLongClick(View view) {
          if (view.getId() == R.id.add) {
              isAddPressed = true;
              handler.postDelayed(new AutoInc(), TIME_INTERVAL);
          }
          return false;
      }
      
      @SuppressLint("ClickableViewAccessibility")
      @Override
      public boolean onTouch(View view, MotionEvent motionEvent) {
          if (motionEvent.getAction() == MotionEvent.ACTION_UP || 
             motionEvent.getAction() == MotionEvent.ACTION_CANCEL) {
              isAddPressed = false;
          }
          return false;
      }
      
      private class AutoInc implements Runnable {
          @Override
          public void run() {
              if (isAddPressed) {
                  
      txt.setText(String.valueOf(Integer.parseInt(txt.getText().toString()) + 
      STEP));
                  handler.postDelayed(this, TIME_INTERVAL);
              }
            }
         }
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 2023-04-11
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多