onTouchEvent
https://developer.android.google.cn/reference/kotlin/android/view/View.OnTouchListener?hl=en
https://www.cnblogs.com/bhlsheji/p/4370032.html
https://www.jianshu.com/p/f05d6b05ba17
https://blog.csdn.net/baidu_17619859/article/details/53861252
@Override public boolean onTouchEvent(MotionEvent event) { LogUtils.i("ee","Action = " + event.getAction()); LogUtils.i("ee","Position = (" + event.getX() + " , " + event.getY()+ ")"); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //按下 LogUtils.i("ee","down =============== " ); break; case MotionEvent.ACTION_MOVE: //移动 break; case MotionEvent.ACTION_UP: //松开 break; } return super.onTouchEvent(event); /*int Action = event.getAction(); float X = event.getX(); float Y = event.getY(); SetLabelHeight(); return true;*/ }
Android监听当前Activity屏幕的触摸点击事件 有个小男神 于 2018-01-30 10:49:25 发布 21249 收藏 8 分类专栏: 逻辑处理 文章标签: Android 监听 点击事件 触摸事件 屏幕 版权 逻辑处理 专栏收录该内容 1 篇文章0 订阅 订阅专栏 PS:最近接到一个需求: 当用户在某一页停留并且如果该用户在一段时间内没有点击或者触摸过屏幕,则弹窗提示用户已经长时间没有操作屏幕了. 查阅activity的方法,发现有dispatchTouchEvent()这个方法的Override 遂 开始干活! 下边是布局的代码: 很简单 需要其他内容 请自己添加. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/time_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="0" android:textColor="#000000" android:textSize="100sp" android:textStyle="bold" /> <Button android:id="@+id/button" android:layout_width="80dp" android:layout_height="50dp" android:layout_centerHorizontal="true" android:text="Button" /> </RelativeLayout> 下面是activity的代码: 临时起意 不太规范 见谅 public class MainActivity extends Activity { private TextView timeTv; private Button button; private Timer timer; private TimerTask task; private int currentTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); timeTv = (TextView) findViewById(R.id.time_tv); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showToast("点击了按钮"); } }); } private void showToast(String text) { Toast toast = Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } @Override protected void onResume() { super.onResume(); startTimer(); } private void initTimer() { // 初始化计时器 task = new MyTask(); timer = new Timer(); } class MyTask extends TimerTask { @Override public void run() { // 初始化计时器 runOnUiThread(new Runnable() { @Override public void run() { currentTime++; timeTv.setText(String.valueOf(currentTime)); if (currentTime == 10) { //在这里弹窗然后停止计时 showToast("你去哪里了?"); stopTimer(); } } }); } } @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: //有按下动作时取消定时 stopTimer(); break; case MotionEvent.ACTION_UP: //抬起时启动定时 startTimer(); break; } return super.dispatchTouchEvent(ev); } private void startTimer() { //启动计时器 /** * java.util.Timer.schedule(TimerTask task, long delay, long period): * 这个方法是说,delay/1000秒后执行task,然后进过period/1000秒再次执行task, * 这个用于循环任务,执行无数次,当然,你可以用timer.cancel();取消计时器的执行。 */ initTimer(); try { timer.schedule(task, 1000, 1000); } catch (IllegalStateException e) { e.printStackTrace(); initTimer(); timer.schedule(task, 1000, 1000); } } private void stopTimer() { if (timer != null) { timer.cancel(); } currentTime = 0; if (timeTv != null) { timeTv.setText(String.valueOf(currentTime)); } } @Override protected void onPause() { super.onPause(); //当activity不在前台是停止定时 stopTimer(); } @Override protected void onDestroy() { //销毁时停止定时 stopTimer(); super.onDestroy(); } } 到此为止了,目前使用效果还不错. ———————————————— 版权声明:本文为CSDN博主「有个小男神」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq912098812/article/details/79203032
1条回答默认最新
标签:
event
, onTouchEvent
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-02-26 Ubuntu16.04 安装Gitlab,并创建新项目
2021-02-26 Ubuntu下5大图片查看软件
2021-02-26 已解决】Could not get lock /var/lib/dpkg/lock-frontend
2021-02-26 Howto Install Picasa 3.5 in ubuntu
2016-02-26 SQL语句详细汇总