android 双击点击事件 两个种方式 简单实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bbtianshi/article/details/80307157

第一种

创建 一个抽象的类 DoubleClickListener  实现 OnClickListener

public  abstract class DoubleClickListener implements View.OnClickListener {
    private static final long DOUBLE_TIME = 1000;
    private static long lastClickTime = 0;

    @Override
    public void onClick(View v) {
        long currentTimeMillis = System.currentTimeMillis();
        if (currentTimeMillis - lastClickTime < DOUBLE_TIME) {
            onDoubleClick(v);
        }
        lastClickTime = currentTimeMillis;
    }
    public abstract void onDoubleClick(View v);
}

下面对应的 Activity 

public class DoubleActivity extends AppCompatActivity {
Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_double);
  btn = (Button)findViewById(R.id.double_click);
  btn.setOnClickListener(new DoubleClickListener() {
      @Override
      public void onDoubleClick(View v) {
          btn.setText("改变");
      }
  });
    }

}

第二种比较麻烦 

在对应的MainActivity里面  

    long mLastTime=0;
    long mCurTime=0;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 1:
                    Toast.makeText(SendActivity.this,"这是单击事件",Toast.LENGTH_LONG).show();
                    break;
                case 2:
                    Toast.makeText(SendActivity.this,"这是双击事件",Toast.LENGTH_LONG).show();
                     shuangji.setTextColor(2);
                    break;
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send);
     
        shuangji = (Button)findViewById(R.id.double_click);
       

        shuangji.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mLastTime=mCurTime;
                mCurTime= System.currentTimeMillis();
                if(mCurTime-mLastTime<300){//双击事件
                    mCurTime =0;
                    mLastTime = 0;
                    handler.removeMessages(1);
                    handler.sendEmptyMessage(2);
                }else{//单击事件
                    handler.sendEmptyMessageDelayed(1, 310);
                }


            }
        });

    }


猜你喜欢

转载自blog.csdn.net/bbtianshi/article/details/80307157