android View长按事件简单写法
在开发过程中遇到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,在线程方法里控制延迟时间就行。
更多相关文章
- Android的状态机模式StateMachine与State
- Android中如何切换到主线程
- Android更新Ui线程的四个方法
- android checkbox 未选中状态 已选中状态 替换成自己的图片
- Android深入浅出系列课程---Lesson12 AFF110525_Android多线程系
- android学习笔记之多线程学习
- Android改变状态栏statusbar背景色
- Android AsyncTask两种线程池分析和总结