【问题标题】:Android: OnlongClickListener, detect when it stops [duplicate]Android:OnlongClickListener,检测何时停止[重复]
【发布时间】:2017-08-06 07:59:29
【问题描述】:

我想检测何时未单击按钮。例如,在上面的代码中,我想替换 ???????有一个条件表明图像视图仍在被单击,一旦图像视图不再被长时间单击,就退出循环。你有想法吗?

imageView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            while(?????)
            {
                int number =(Integer.parseInt(hours.getText().toString())+1)%24;
                String text_number= String.valueOf(number);
                if(number>-1 && number<10)
                {
                    text_number="0"+text_number;
                }
                hours.setText(text_number);
            }

            return true;
        }
    });

【问题讨论】:

标签: android view onlongclicklistener


【解决方案1】:

使用View.OnTouchListener

示例:https://stackoverflow.com/a/39588668/4586742

您将收到带有不同事件的onTouch 回调。

MotionEvent.ACTION_DOWN: 当用户开始按下视图时。

MotionEvent.ACTION_UP:当用户停止按下视图时。

【讨论】:

    【解决方案2】:

    我从你的问题和建议的答案中得到什么。

    `

    public class Main2Activity extends AppCompatActivity {
    
    private boolean isImageViewBeingClicked = true;
    private boolean isLongPressed = false;
    private ImageView imageView;
    private TextView hours;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    
    
        imageView = (ImageView) findViewById(R.id.imageView);
        hours = (TextView) findViewById(R.id.textView);
    
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
    
                while (isImageViewBeingClicked) {
                    int number = (Integer.parseInt(hours.getText().toString()) + 1) % 24;
                    String text_number = String.valueOf(number);
                    if (number > -1 && number < 10) {
                        text_number = "0" + text_number;
                    }
                    hours.setText(text_number);
                }
    
    
            }
        });
    
    
        imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                    if (isLongPressed) {
                        isImageViewBeingClicked = false;
                    }
                }
                return false;
            }
        });
    
        imageView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                isLongPressed = true;
                return false;
            }
        });
    
    }
     }
    

    `

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-10
      • 2016-10-18
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2012-01-01
      • 1970-01-01
      相关资源
      最近更新 更多