在开发过程中遇到View长按事件处理,发现还有一种简单写法。

一般常用长按View监听setOnLongClickListener,大概3s时间。如需要更长的需要自己自定义。我根据触摸监听setOnTouchListener的三种状态ACTION_DOWN,ACTION_MOVE,ACTION_UP去判断View的状态。代码示例如下:

Handler mHandler = new Handler();


View.setOnTouchListener(new View.OnTouchListener() { 

@Override

public boolean onTouch(View view,MotionEvent motionEvent) {

switch(motionEvent.getAction()) {

case MotionEvent.ACTION_DOWN:

//在按下时使用SharedPreference记录一个标记值。

SharedPreferenceUtil.setInt("shili",one);

//开启一个线程,此线程定义自己需要延时多少s。

mHandler.postDelayed(mRunnable,5000);

break;

case MotionEvent.ACTION_MOVE:

break;

caseMotionEvent.ACTION_UP:

SharedPreferenceUtil.setInt("shili",two);

mHandler.removeCallbacks(mRunnable);

break;

}

}

});


Runnable mRunnable = new Runnable(){

@Override

public void run(){

int getnum = SharedPreferenceUtil.getInt(“shili”,two);

if(getnum == one) {

//此处根据判断可添加自己延迟后要执行的逻辑

}

}

}


使用过程中,本地存储SharedPreference要多注意,如果还需要使用setOnClickListener(),在ACIONT_DOWN处使用SharedPreference在添加个标记就行,此处不在过多描述,此方法可替代setOnTouchListener,在线程方法里控制延迟时间就行。

更多推荐