Android运用onTouchEvent自定义滑动布局
Android onTouchEvent 自定义滑动布局 Android 中的 onTouchEvent 事件是一种常用的触摸事件处理机制,它可以帮助开发者实现各种滑动布局需求。在本篇文章中,我们将详细介绍如何使用 onTouchEvent 事件来实现一个上下滑动的布局。 让我们了解一下 View 类中的 onTouch 事件和 onTouchEvent 事件。onTouch 事件是一种触摸事件处理机制,它可以帮助开发者处理触摸事件。但是,它有一个缺点,即当触摸事件发生时,它只会消费 down 事件,而不会消费 move 和 up 事件。为了解决这个问题,Android 提供了 onTouchEvent 事件,它可以消费所有的触摸事件。 onTouchEvent 事件有两个返回值,true 和 false。当返回 true 时,表示事件被完全消费;当返回 false 时,表示事件未被完全消费。在自定义控件时,我们通常需要使用 onTouchEvent 事件来处理触摸事件。 现在,让我们来实现一个上下滑动的布局。我们的需求是,在进入界面时,外层布局自动下滑一段距离,露出内层布局;外层布局可以以上下滑动,并且带有透明度渐变效果,改变内边距效果。 为了实现这个需求,我们需要自定义一个布局,并重写 onTouchEvent 事件。在 onTouchEvent 事件中,我们需要根据触摸事件的类型来处理滑动事件。当用户按下屏幕时,我们需要记录下按下的点的坐标;当用户移动时,我们需要计算出滑动的距离,并根据这个距离来改变布局的位置;当用户抬起时,我们需要根据当前的滑动距离来决定布局的最终位置。 以下是我们的自定义布局的代码: ```java public class MyViewGroup extends ViewGroup { private MyViewGroupListener listener;//接口,监听滑动事件 private int vertical = 0;//布局距离顶端距离(默认0) public MyViewGroup(Context context) { super(context); } public MyViewGroup(Context context, AttributeSet attrs) { super(context, attrs); } public MyViewGroup(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public MyViewGroup(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } private int downY = 0;//按下时的点 private int slide = 0;//最终移动距离 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: downY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: slide = downY - (int)event.getY(); if(slide < 0){//下滑 vertical = listener.marginTop(Math.abs(slide)); }else if(slide > 0){//上滑 vertical = listener.marginTop(-slide); } break; case MotionEvent.ACTION_UP: if(vertical < 300){//布局距离屏幕顶部小于300,就让布局充满整个屏幕 vertical = listener.marginTop(0); } break; } return true; } } ``` 在上面的代码中,我们使用 onTouchEvent 事件来处理滑动事件。在 onTouchEvent 事件中,我们根据触摸事件的类型来处理滑动事件。当用户按下屏幕时,我们记录下按下的点的坐标;当用户移动时,我们计算出滑动的距离,并根据这个距离来改变布局的位置;当用户抬起时,我们根据当前的滑动距离来决定布局的最终位置。 通过使用 onTouchEvent 事件,我们可以轻松地实现一个上下滑动的布局。同时,我们还可以使用动画来实现滑动的效果,使得布局的滑动更加平滑。
- 粉丝: 2
- 资源: 907
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip