iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >android如何基于SwipeRefreshLayout实现类QQ的侧滑删除
  • 129
分享到

android如何基于SwipeRefreshLayout实现类QQ的侧滑删除

android 2023-05-30 18:05:11 129人浏览 薄情痞子
摘要

小编给大家分享一下Android如何基于SwipeRefreshLayout实现类QQ的侧滑删除,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!还是效果图优先效果图

小编给大家分享一下Android如何基于SwipeRefreshLayout实现类QQ的侧滑删除,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

还是效果图优先

android如何基于SwipeRefreshLayout实现类QQ的侧滑删除

效果图当中看不出来事件滑动的解决方案(或者是我不会如何录制手指在屏幕上滑动方向和点击,知道的大神请告诉下,谢谢)具体的可以去下方的GitHub上下载看。

还是先看怎么用

首先传送门地址 SwipeMenuRefreshView

项目中引用了一个侧滑菜单的库具体的地址 AndroidSwipeLayout (这是一个非常强大的库可以上下左右的滑动展示,具体可以去其gitHub上了解)

引用

compile 'com.nero.ren:SwipeMenu:1.2.0'

布局文件

<ren.widget.refresh.SwipeMenuRefreshView    android:id="@+id/refresh"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ListView      android:id="@+id/listview"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical" />  </ren.widget.refresh.SwipeMenuRefreshView>

Item布局文件

<com.daimajia.swipe.SwipeLayout xmlns:android="Http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  android:layout_width="match_parent"  android:layout_height="80dp"  app:clickToClose="true">  //侧滑出来的布局  <LinearLayout    android:id="@+id/bottom_wrapper_2"    android:layout_width="wrap_content"    android:layout_height="80dp"    android:tag="Bottom4">    <TextView      android:id="@+id/top"      android:layout_width="70dp"      android:layout_height="match_parent"      android:background="#cfcfcf"      android:gravity="center"      android:text="置顶" />    <TextView      android:id="@+id/noread"      android:layout_width="100dp"      android:layout_height="match_parent"      android:background="#ffa500"      android:gravity="center"      android:text="标记未读" />    <TextView      android:id="@+id/delete"      android:layout_width="70dp"      android:layout_height="match_parent"      android:background="#FF0000"      android:gravity="center"      android:text="删除" />  </LinearLayout>  //默认展示的布局  <RelativeLayout    android:layout_width="match_parent"    android:layout_height="80dp">    <TextView      android:id="@+id/text"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_centerVertical="true"      android:text="aaaaa"      android:textSize="18sp" />  </RelativeLayout></com.daimajia.swipe.SwipeLayout>

具体实现

实现思路

思路其实也很简单就是在实现自定义SwipeRefreshLayout重写onInterceptTouchEvent根据左右还是上下滑动进行事件的拦截和下发

判断滑动方向

主要根据用户滑动的夹角来判断是上下滑动还是左右滑动。判断后设置一个标记,下一次滑动的时候如果上下滑动(Listiview)的滑动那么就调用父类的的onInterceptTouchEvent方法正常滑动,此时事件在到达侧滑菜单的时候已经被消费了所有不会滑出侧滑菜单。如果是左右滑动则return false 不拦截事件交由子控件处理,这是左右滑动Listview是不会做消费所以会到达让侧滑菜单来处理。

case MotionEvent.ACTION_DOWN:        pressX = (int) ev.getX(); //记录按下的X坐标        pressY = (int) ev.getY();//记录按下的Y坐标        break;   case MotionEvent.ACTION_MOVE:        //判断滑动距离是否是正常的滑动        if (Math.abs(ev.getY() - pressY) < touchSlop && Math.abs(ev.getX() - pressX) < touchSlop)          return super.onInterceptTouchEvent(ev);        //如果用户是滑动listview则交由父类onInterceptTouchEvent处理        if (interceptStatus == REFRESH_STATUS)          return super.onInterceptTouchEvent(ev);          //用户如果是滑出SwipeLayout则不拦截时间交由SwipeLayout处理        else if (interceptStatus == SWIPE_MENU_OPEN)          return false;        //根据滑动角度判断用户是滑出SwipeLayout还是Listview        double angle = Math.atan((ev.getY() - pressY) / (ev.getX() - pressX));//计算滑动的角度        int degrees = (int) Math.toDegrees(angle);        degrees = Math.abs(degrees);        //大于45度则判断为Listview滑动        if (degrees > 45) {          Log.d(TAG, "正在上下滑动");          //如果当前是SwipeLayout内点击的事件序列则不允许滑动          if (interceptStatus == SWIPE_MENU_CLOSE)            return true;          interceptStatus = REFRESH_STATUS; //标记为Listview滑动          return super.onInterceptTouchEvent(ev);        } else { //小于45度则判断为SwipeLayout滑动          Log.e(TAG, "正在左右滑动");          currentSwipeLayout = getCurrentSwipeLayout(); //获取当前滑出的SwipeLayout          interceptStatus = SWIPE_MENU_OPEN; //标记为SwipeLayout滑动          return false;        }

3点击事件处理

点击事件分为几种情况

用户普通的item点击:此情况下不做任何处理

当滑出侧滑菜单栏以后,点击其他的item时,这是判断是否是当前滑出的侧滑菜单的position如若不是在down事件的时候变将其关闭并且 return true当在onInterceptTouchEvent中retur true 后此后所有的事件,直到手指抬起时的所有操作都交由自身的onTouchEvent处理而在onTouchEvent中也不做任何操作直接拦截即可达到需要的效果

判断是否是点击的当前滑出菜单的Item

if (currentSwipeLayout != null && currentSwipeLayout.getOpenStatus() != SwipeLayout.Status.Close) { //如果当前有打开或者正在打开的SwipeLayout          Log.d(TAG, "currentSwipeLayout.getOpenStatus() " + currentSwipeLayout.getOpenStatus());          interceptStatus = SWIPE_MENU_CLOSE;//此次用户操作为关闭SwipeLayout          Rect rect = new Rect();          currentSwipeLayout.getHitRect(rect);          //判断当前点击X Y坐标是否在当前SwipeLayout中,即用户是否点击这个SwipeLayout,有就不拦截时间交由SwipeLayout自己处理          if (rect.contains(pressX, pressY)) {            return false;          }        onInterceptTouchEvent中down事件     case MotionEvent.ACTION_DOWN:           //如果没有就关闭并且拦截此时间顺序中所有事件          currentSwipeLayout.close();          return true;     onTouchEvent中的move事件     case MotionEvent.ACTION_MOVE:        if (interceptStatus == SWIPE_MENU_CLOSE)//如果是SwipeLayout关闭事件序列则拦截事件          return true;

当用户点击的是当前侧滑菜单,这里又有两种情况如果点击的范围不是侧滑菜单的范围则return false这时如果抬手时是在侧滑菜单的范围内将会触发点击事件(如果有)如果没有在此范围则关闭侧滑菜单。如果此期间有move事件即用户有滑动会进入之前说的move判断逻辑。

简而言之就是按下的范围是滑出侧滑菜单的Item则不拦截交由儿子你说了算,如果有滑动就由父类进行开始说的判断,然后进行相应逻辑,此时就不是儿子说了算。

//判断当前点击X Y坐标是否在当前SwipeLayout中,即用户是否点击这个SwipeLayout,有就不拦截时间交由SwipeLayout自己处理          if (rect.contains(pressX, pressY)) {            return false;          }          //如果没有就关闭并且拦截此时间顺序中所有事件          currentSwipeLayout.close();          return true;

以上是“android如何基于SwipeRefreshLayout实现类QQ的侧滑删除”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: android如何基于SwipeRefreshLayout实现类QQ的侧滑删除

本文链接: https://www.lsjlt.com/news/220359.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android如何基于SwipeRefreshLayout实现类QQ的侧滑删除
    小编给大家分享一下android如何基于SwipeRefreshLayout实现类QQ的侧滑删除,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!还是效果图优先效果图...
    99+
    2023-05-30
    android
  • android实现QQ微信侧滑删除效果
    最近由于项目需求,需要做一个listview中的item策划删除的效果,与是查找资料和参考了一些相关的博客,终于完美实现了策划删除的效果。先看一下效果图(研究了半天竟然没研究出来真机上gif图怎么做,大家将就看一下吧)。 &nbs...
    99+
    2023-05-30
  • Android实现QQ侧滑(删除、置顶等)功能
    实现类似QQ滑动出现可操作项的功能,在网上看到有人自定义LinearLayout实现这个效果,但是灵活性有限。此demo使用开源项目SwipeLayout实现该功能。关于SwipeLayout的常用设置和属性,这里都做介绍,下面进入正题。一...
    99+
    2023-05-30
  • Android如何实现微信侧滑删除当前页面
    这篇文章给大家分享的是有关Android如何实现微信侧滑删除当前页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下效果图不是太明显 实际上有finish动画代码package com.fin...
    99+
    2023-05-30
  • 小程序如何实现侧滑删除功能
    这篇“小程序如何实现侧滑删除功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序如何实现侧滑删除功能”文章吧。页面布局&...
    99+
    2023-07-02
  • 怎么在Android中利用ListView实现一个侧滑删除功能
    本篇文章给大家分享的是有关怎么在Android中利用ListView实现一个侧滑删除功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求:listView可以侧滑item,展...
    99+
    2023-05-31
    android listview roi
  • Android仿iOS如何实现侧滑返回功能
    这篇文章将为大家详细讲解有关Android仿iOS如何实现侧滑返回功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先上个效果再说:原理Activity 本身是不可以滑动的,但是我们可以制造一个正在滑动 ...
    99+
    2023-05-30
  • mpvue小程序如何实现仿qq左滑置顶删除组件
    小编给大家分享一下mpvue小程序如何实现仿qq左滑置顶删除组件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果图:实现:1,上面说过mpvue的坑,比如里面的每一个的元素都是overf...
    99+
    2024-04-02
  • Android中DrawerLayout如何实现侧滑菜单效果
    这篇文章主要为大家展示了“Android中DrawerLayout如何实现侧滑菜单效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中DrawerLayout如何实现侧滑菜单效果”...
    99+
    2023-05-30
    drawerlayout android
  • 如何用javascript实现左滑删除
    这篇文章主要讲解了“如何用javascript实现左滑删除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用javascript实现左滑删除”吧! ...
    99+
    2024-04-02
  • Android基于ViewPager+Fragment如何实现左右滑屏效果
    这篇文章主要为大家展示了Android基于ViewPager+Fragment如何实现左右滑屏效果,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。本文实例讲述了Android基于ViewPage...
    99+
    2023-05-31
    android viewpager fragment
  • Android开发中如何实现一个滑动删除功能
    这篇文章将为大家详细讲解有关Android开发中如何实现一个滑动删除功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。先看一下效果activity_lookstaff.xml<Rela...
    99+
    2023-05-31
    android 滑动删除 roi
  • 如何在Android中使用RecyclerView实现一个滑动删除
    本篇文章为大家展示了如何在Android中使用RecyclerView实现一个滑动删除,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ItemTouchHelper.CallbackItemTouch...
    99+
    2023-05-31
    android recyclerview recycle
  • 如何在Android应用中实现一个侧滑功能
    本篇文章给大家分享的是有关如何在Android应用中实现一个侧滑功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现说明:通过自定义布局实现:SlidingLayout继承于...
    99+
    2023-05-31
    android roi
  • vue2如何实现左滑删除功能
    这篇文章主要介绍vue2如何实现左滑删除功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!左滑删除,很多UI框架里有,比如Mint-UI, Muse-UI等,一开始我们就是用的这两个...
    99+
    2024-04-02
  • iOS中给UITableView的侧滑删除增加多个按钮的实现方法
    一. 需求: cell的侧滑删除默认只有一个删除按钮, 给侧滑添加多个按钮, '删除', '置顶', '更多'. 二. 实现说明:1) 我们在使用一些应用的时候,在滑动一些联系人的某一行的时候,会出现删除、置顶、更多等等的按钮,在...
    99+
    2023-05-31
    ios uitableview 侧滑删除
  • Android自定义view实现左滑删除的RecyclerView详解
    目录概述需求编写代码I编写代码II编写代码III优化总结概述 最近安卓自定义view的知识看的很熟,但是却很久没动手了,这几天用kotlin手撕了原先一个左滑删除的RecyclerV...
    99+
    2022-11-13
    Android RecyclerView Android 左滑删除RecyclerView
  • 如何使用android实现左右侧滑菜单效果的方法
    这篇文章主要介绍了如何使用android实现左右侧滑菜单效果的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在android开发中,左右侧滑菜单的开发已成为我们现在开发的...
    99+
    2023-05-30
    android
  • 如何在android中利用RecyclerView实现Item的拖拽排序与滑动删除
    如何在android中利用RecyclerView实现Item的拖拽排序与滑动删除?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。需求和技术分析RecyclerV...
    99+
    2023-05-31
    recyclerview android recycle
  • 基于Angular.js如何实现触摸滑动动画
    小编给大家分享一下基于Angular.js如何实现触摸滑动动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先上图:这个主要用到...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作