感谢大佬:https://www.cnblogs.com/zkb-0928/p/3768209.html 感谢大佬:https://blog.csdn.net/sweiqin/article/details/50847996

在android开发中,我们经常会用到一种非常方便的效果,就是左右或上下滑动进行切换内容或控件,比如要删除一条信息,向左滑动会出现一个删除功能键进行删除。

要实现这个功能我们就可以使用onTouch事件来处理,具体代码如下:

package com.example.text;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView; public class MainActivity extends Activity {
private TextView txtTest; private float moveX;
private float moveY;
private float pressX;
private float pressY; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); txtTest = (TextView)findViewById(R.id.txtTest); txtTest.setOnTouchListener(new OnTouchListener() { @Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
//按下
case MotionEvent.ACTION_DOWN:
pressX = event.getX();
pressY = event.getY();
break;
//移动
case MotionEvent.ACTION_MOVE:
moveX = event.getX();
moveY = event.getY();
break;
//松开
case MotionEvent.ACTION_UP:
if (moveX-pressX > 0 && Math.abs(moveY - pressY) < 50) {
Log.i("message", "向右");
} else if (moveX - pressX < 0 && Math.abs(moveY - pressY) < 50) {
Log.i("message", "向左");
}
break;
default:
break;
}
return true;
}
});
} }
1、
若return false说明没有成功执行onTouch事件,在执行完onTouch里面的代码之后,onTouch事件并没有结束。因此某些组件如Gallery会自动执行它所在view里onTouch方法的代码。若在onTouch方法里面增加你的代码并且最后return false就会执行你在OnTouch方法中的处理操作了。 

2、
若return true说明你已经成功执行onTouch方法了,在执行完onTouch中的代码之后,这个onTouch事件就结束了。也不会再调用组件如Gallery默认的onTouch方法了。在onTouch方法中,我们可以做很多操作,如move,down,up等等,若我们在move里面return false,那么接着的fling,up等后面的事件也不会处理。 

Gallery.setOnTouchListener(new OnTouchListener(){  

    //@Override  
    public boolean onTouch(View v, MotionEvent event) {  
System.out.println("Gallery onTouch");  
if(event.getAction()==MotionEvent.ACTION_MOVE){  
   mDismiss.removeMessages(1);  
   System.out.println("ACTION_MOVE ");  
     
}else if(event.getAction()==MotionEvent.ACTION_UP){  
   mDismiss.sendEmptyMessageDelayed(1,10000);  
   System.out.println("ACTION_UP ");  
}  
return false;  
    }  
      
}); 
 
注意:
1.
在ViewGroup中onInterceptTouchEvent方法若反回false,那么触屏事件会继续向下传递,但如果没有子View去处理这个事件,即子view的onTouchEvent没有返回True,则最后还是由ViewGroup去处理这个事件,也就又执行了自己的onTouchEvent。
2.
onTouch调用前会自动调用onInterceptTouchEvent 如果onInterceptTouchEvent返回的false,则不会调用onTouchEvent,若重写onInterceptTouchEvent让它在需要调用onTouchEvent时返回true

Android--控件的滑动事件的更多相关文章

  1. Android控件点击事件

    1. 介绍 本文介绍了Android控件的点击事件 Android控件点击(onClick)事件可以用如下三种方式来实现 2. 实现onClick方法 在layout的xml中指定onClick方法, ...

  2. Android判断Touch为滑动事件还是操作控件

    Android判断Touch为滑动事件还是操作控件 因为在项目中要判断WebView是否处于滚动状态,但它不像ListView有onScrollStateChanged方法来监听,要实现就得手动监听它 ...

  3. Android实现监听控件点击事件

    Android实现监听控件点击事件 引言 这篇文章主要想写一下Android实现监听点击事件的几种方法,Activity和Fragment实现起来有些方法上会有些不同,这里也略做介绍. 最近一直在忙一 ...

  4. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  5. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

  6. 从Android系统出发,分析Android控件构架

    从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...

  7. Android控件系列之RadioButton&RadioGroup(转)

    学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...

  8. Android控件系列之CheckBox

    学习目的: 1.掌握在Android中如何建立CheckBox 2.掌握CheckBox的常用属性 3.掌握CheckBox选中状态变换的事件(监听器) CheckBox简介: CheckBox和Bu ...

  9. Android控件TextView的实现原理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8636153 在前面一个系列的文章中,我们以窗口 ...

  10. Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现 2015-03-10 22:38 28419人阅读 评论(17) 收藏 举报  分类: Android ...

随机推荐

  1. nginx -g "daemon off;" 你学废了吗?

    去年的时候写了一篇原创<前后端分离,如何在前端项目中动态插入后端API基地址?(in docker)>, 我自认为这篇生产实践是对大前端. 容器化.CI/CD的得意之作. 对于前后端分离的 ...

  2. Java初学者作业——学生成绩等级流程图练习

    返回本章节 返回作业目录 在Word 中编写算法实现学生成绩等级的输出,并绘制对应算法的流程图. 功能要求:输入学生成绩,输出对应成绩等级,输出规则如下: 学生成绩区间 对应成绩等级 [90,100] ...

  3. 使用JavaScript控制HTML元素的显示和隐藏

    利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一: document.getElementB ...

  4. css中cursor(光标类型)

    值 描述 url 需使用的自定义光标的 URL. 注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标. default 默认光标(通常是一个箭头) auto 默认.浏览器 ...

  5. 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内

    查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...

  6. SQLServer中的CTE(Common Table Expression)通用表表达式使用详解

    概述 我们经常会编写由基本的 SELECT/FROM/WHERE 类型的语句派生而来的复杂 SQL 语句.其中一种方案是需要编写在 FROM 子句内使用派生表(也称为内联视图)的 Transact-S ...

  7. Itellij Idea使用

    图片如果损坏,点击链接查看 https://www.toutiao.com/i6491635946176381454/ 创建Maven项目 JDK环境 目前大多数IDE都没有集成JDK环境,IDEA也 ...

  8. 浅讲EF高级用法之自定义函数

    介绍 好久没给大家更新文章了,前2个月因家庭原因回到青岛,比较忙所以没有什么时间给大家更新知识分享,这2个月在和同事一起做项目,发现了很多好意思的东西拿出来给大家讲一讲. 正文 大家先来下面这幅图,这 ...

  9. spring-data-jpa -hibernate --specificationExecutor

    Specifications动态查询 在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecu ...

  10. Java的JDBC

    第一个JDBC程序 创建测试数据库 CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStud ...