如何检查按钮是否在 2 秒后被单击?

How to check if a button is clicked after 2 secs?

我有一个 android 应用程序可以将喜欢发送到服务器。

我想做的不是立即向服务器发送点赞,而是如果用户仍然喜欢 post,则在 2 秒后发送。

我喜欢void;

public void rotationAnimation(ImageView button, int source1, int source2){
    if(isLikeClicked){
        button.setImageResource(source1);
        button.startAnimation(rotate_backward);
        isLikeClicked = false;
    }else{
        button.setImageResource(source2);
        button.startAnimation(rotate_forward);
        isLikeClicked = true;
    }

    ChangeLikeCount();

    if(isReadyToPost)
        if(!isLikeClicked){
            Like like = new Like();
            like.execute(ServerCons.HOST + "unlike");
        }else{
            Like like = new Like();
            like.execute(ServerCons.HOST + "like");
        }

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            // I thought the solution could be there
        }
    }, 2000);
}

您可以尝试创建一个休眠 2 秒的线程,然后它会检查用户是否仍然喜欢 post 然后更新您的数据库

使用 isReadyToPost 标记:

if(isReadyToPost){
  isReadyToPost=false;
}else{
  // try after 2 secs for next like
}

并在 Handler. postDelayed 中将 isReadyToPost 在 2 秒后更改为 true:

  @Override
    public void run() {
        isReadyToPost=true;
    }

isReadyToPost 默认值为 true.

试试这个方法:

boolean isReadyToPost= false;
boolean liked = false;//control like click (witch)

public void onLikePressed() {
  if (liked && isReadyToPost) {
    sendLikeToServer();//send to server after 2 secs
    return;
   }

  this.isReadyToPost= false;
  Toast.makeText(this, "waiting for any dislike... in 2 secs", Toast.LENGTH_SHORT).show();
if (liked){
   new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        isReadyToPost=true; 
        onLikePressed();                      
     }
   }, 2000);
 }//end if
} //end onlikepress