在开发过程中遇到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,在线程方法里控制延迟时间就行。

更多相关文章

  1. Android的状态机模式StateMachine与State
  2. Android中如何切换到主线程
  3. Android更新Ui线程的四个方法
  4. android checkbox 未选中状态 已选中状态 替换成自己的图片
  5. Android深入浅出系列课程---Lesson12 AFF110525_Android多线程系
  6. android学习笔记之多线程学习
  7. Android改变状态栏statusbar背景色
  8. Android AsyncTask两种线程池分析和总结

随机推荐

  1. 提升基于英特尔® 架构的 Android* 模拟
  2. android应用程序设置全屏
  3. [置顶] Android学习进阶路线导航线路(And
  4. Android中贪吃蛇游戏的学习(四)
  5. [置顶] Android开发之ScrollView去掉右侧
  6. 2011.07.18——— android AlphaBitmap
  7. android apk的安装
  8. Android(安卓)studio 启动出现错误AAPT:
  9. Android中各种onTouch事件
  10. android 解决eclipse无法更新SDK问题