iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >android实现QQ微信侧滑删除效果
  • 711
分享到

android实现QQ微信侧滑删除效果

2023-05-30 16:05:07 711人浏览 八月长安
摘要

最近由于项目需求,需要做一个listview中的item策划删除的效果,与是查找资料和参考了一些相关的博客,终于完美实现了策划删除的效果。先看一下效果图(研究了半天竟然没研究出来真机上gif图怎么做,大家将就看一下吧)。 &nbs

最近由于项目需求,需要做一个listview中的item策划删除的效果,与是查找资料和参考了一些相关的博客,终于完美实现了策划删除的效果。

先看一下效果图(研究了半天竟然没研究出来真机上gif图怎么做,大家将就看一下吧)。

android实现QQ微信侧滑删除效果     

侧滑效果图

android实现QQ微信侧滑删除效果

点击删除后的截图

android实现QQ微信侧滑删除效果

点击删除后,listview中的第一个“微信团队”被删除。

接下来看代码部分,很多注释都在代码中,直接上代码。

首先自定义个SlideView继承LinearLayout。

import Android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.Scroller; import android.widget.TextView;    public class SlideView extends LinearLayout {      private static final String TAG = "SlideView";      private Context mContext;      // 用来放置所有view的容器    private LinearLayout mViewContent;      // 用来放置内置view的容器,比如删除 按钮    private RelativeLayout mHolder;      // 弹性滑动对象,提供弹性滑动效果    private Scroller mScroller;      // 滑动回调接口,用来向上层通知滑动事件    private OnSlideListener mOnSlideListener;      // 内置容器的宽度 单位:dp    private int mHolderWidth = 120;      // 分别记录上次滑动的坐标    private int mLastX = 0;    private int mLastY = 0;      // 用来控制滑动角度,仅当角度a满足如下条件才进行滑动:tan a = deltaX / deltaY > 2    private static final int TAN = 2;      public interface OnSlideListener {      // SlideView的三种状态:开始滑动,打开,关闭      public static final int SLIDE_STATUS_OFF = 0;      public static final int SLIDE_STATUS_START_SCROLL = 1;      public static final int SLIDE_STATUS_ON = 2;        public void onSlide(View view, int status);    }      public SlideView(Context context) {      super(context);      initView();    }      public SlideView(Context context, AttributeSet attrs) {      super(context, attrs);      initView();    }      private void initView() {      mContext = getContext();      // 初始化弹性滑动对象      mScroller = new Scroller(mContext);      // 设置其方向为横向      setOrientation(LinearLayout.HORIZONTAL);      // 将slide_view_merge加载进来      View.inflate(mContext, R.layout.slide_view_merge, this);      mViewContent = (LinearLayout) findViewById(R.id.view_content);      mHolderWidth = Math.round(TypedValue.applyDimension(          TypedValue.COMPLEX_UNIT_DIP, mHolderWidth, getResources()              .getDisplayMetrics()));    }      // 设置按钮的内容,也可以设置图标啥的,我没写    public void setButtonText(CharSequence text) {      ((TextView) findViewById(R.id.delete)).setText(text);    }      // 将view加入到ViewContent中    public void setContentView(View view) {      mViewContent.addView(view);    }      // 设置滑动回调    public void setOnSlideListener(OnSlideListener onSlideListener) {      mOnSlideListener = onSlideListener;    }      // 将当前状态置为关闭    public void shrink() {      if (getScrollX() != 0) {        this.smoothScrollTo(0, 0);      }    }      // 根据MotionEvent来进行滑动,这个方法的作用相当于onTouchEvent    // 如果你不需要处理滑动冲突,可以直接重命名,照样能正常工作    public void onRequireTouchEvent(MotionEvent event) {      int x = (int) event.getX();      int y = (int) event.getY();      int scrollX = getScrollX();      Log.d(TAG, "x=" + x + " y=" + y);        switch (event.getAction()) {      case MotionEvent.ACTION_DOWN: {        if (!mScroller.isFinished()) {          mScroller.abortAnimation();        }        if (mOnSlideListener != null) {          mOnSlideListener.onSlide(this,              OnSlideListener.SLIDE_STATUS_START_SCROLL);        }        break;      }      case MotionEvent.ACTION_MOVE: {        int deltaX = x - mLastX;        int deltaY = y - mLastY;        if (Math.abs(deltaX) < Math.abs(deltaY) * TAN) {          // 滑动不满足条件,不做横向滑动          break;        }          // 计算滑动终点是否合法,防止滑动越界        int newScrollX = scrollX - deltaX;        if (deltaX != 0) {          if (newScrollX < 0) {            newScrollX = 0;          } else if (newScrollX > mHolderWidth) {            newScrollX = mHolderWidth;          }          this.scrollTo(newScrollX, 0);        }        break;      }      case MotionEvent.ACTION_UP: {        int newScrollX = 0;        // 这里做了下判断,当松开手的时候,会自动向两边滑动,具体向哪边滑,要看当前所处的位置        if (scrollX - mHolderWidth * 0.75 > 0) {          newScrollX = mHolderWidth;        }        // 慢慢滑向终点        this.smoothScrollTo(newScrollX, 0);        // 通知上层滑动事件        if (mOnSlideListener != null) {          mOnSlideListener.onSlide(this,              newScrollX == 0 ? OnSlideListener.SLIDE_STATUS_OFF                  : OnSlideListener.SLIDE_STATUS_ON);        }        break;      }      default:        break;      }        mLastX = x;      mLastY = y;    }      private void smoothScrollTo(int destX, int destY) {      // 缓慢滚动到指定位置      int scrollX = getScrollX();      int delta = destX - scrollX;      // 以三倍时长滑向destX,效果就是慢慢滑动      mScroller.startScroll(scrollX, 0, delta, 0, Math.abs(delta) * 3);      invalidate();    }      @Override    public void computeScroll() {      if (mScroller.computeScrollOffset()) {        scrollTo(mScroller.getCurrX(), mScroller.getCurrY());        postInvalidate();      }    }    }

--结束END--

本文标题: android实现QQ微信侧滑删除效果

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

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

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

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

下载Word文档
猜你喜欢
  • android实现QQ微信侧滑删除效果
    最近由于项目需求,需要做一个listview中的item策划删除的效果,与是查找资料和参考了一些相关的博客,终于完美实现了策划删除的效果。先看一下效果图(研究了半天竟然没研究出来真机上gif图怎么做,大家将就看一下吧)。 &nbs...
    99+
    2023-05-30
  • ViewDragHelper实现QQ侧滑效果
    前言       侧滑的实现方式有很多方式来实现,这次总结的ViewDragHelper就是其中一种方式,ViewDragHelper是2013年谷歌I/O大会发布的新的控件,为了...
    99+
    2023-05-30
    viewdraghelper qq侧滑 he
  • Android实现QQ侧滑(删除、置顶等)功能
    实现类似QQ滑动出现可操作项的功能,在网上看到有人自定义LinearLayout实现这个效果,但是灵活性有限。此demo使用开源项目SwipeLayout实现该功能。关于SwipeLayout的常用设置和属性,这里都做介绍,下面进入正题。一...
    99+
    2023-05-30
  • Android如何实现微信侧滑删除当前页面
    这篇文章给大家分享的是有关Android如何实现微信侧滑删除当前页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下效果图不是太明显 实际上有finish动画代码package com.fin...
    99+
    2023-05-30
  • Android怎么实现微信侧滑关闭页面效果
    这篇文章主要介绍了Android怎么实现微信侧滑关闭页面效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。原理在每个Activity里面都有一个底层的View,也就是所谓的r...
    99+
    2023-05-30
  • android如何基于SwipeRefreshLayout实现类QQ的侧滑删除
    小编给大家分享一下android如何基于SwipeRefreshLayout实现类QQ的侧滑删除,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!还是效果图优先效果图...
    99+
    2023-05-30
    android
  • Android Drawerlayout实现侧滑菜单效果
    本文实例为大家分享了Drawerlayout侧滑菜单的具体代码,供大家参考,具体内容如下Drawerlayout的xml布局<?xml version="1.0" encoding="utf-8"?><Re...
    99+
    2023-05-30
    drawerlayout 侧滑菜单 roi
  • 微信小程序中如何实现左滑删除效果
    小编给大家分享一下微信小程序中如何实现左滑删除效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先看效果要实现的效果:1,当向左...
    99+
    2024-04-02
  • 微信小程序实现列表项左滑删除效果
    本文实例为大家分享了微信小程序实现列表项左滑删除效果的具体代码,供大家参考,具体内容如下 效果 图片 WXML <view class="container">...
    99+
    2024-04-02
  • Android使用DrawerLayout实现侧滑菜单效果
    一、概述DrawerLayout是一个可以方便的实现Android侧滑菜单的组件,我最近开发的项目中也有一个侧滑菜单的功能,于是DrawerLayout就派上用场了。如果你从未使用过DrawerLayout,那么本篇博客将使用一个简单的案例...
    99+
    2023-05-30
    android drawerlayout 侧滑菜单
  • 微信小程序中侧滑删除的方法
    这篇文章将为大家详细讲解有关微信小程序中侧滑删除的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序 侧滑删除(左滑删除)如图所示,demo是小程序的侧滑删除,...
    99+
    2024-04-02
  • RecyclerView进阶:使用ItemTouchHelper实现拖拽和侧滑删除效果
    前言现在RecyclerView的应用越来越广泛了,不同的应用场景需要其作出不同的改变。有时候我们可能需要实现侧滑删除的功能,比如知乎首页的侧滑删除,又或者长按Item进行拖动与其他Item进行位置的交换,但RecyclerView没有提供...
    99+
    2023-05-31
    recyclerview 侧滑 recycle
  • 微信小程序uniapp实现左滑删除效果(完整代码)
    微信小程序uniapp实现左滑删除效果 实现效果 1,列表中侧滑删除 2,删除不同时存在 3,上下滑动与侧滑删除不影响 在本页面引入组件并使用 (文件在文章的最下方附上) 在需要...
    99+
    2024-04-02
  • Android中DrawerLayout如何实现侧滑菜单效果
    这篇文章主要为大家展示了“Android中DrawerLayout如何实现侧滑菜单效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中DrawerLayout如何实现侧滑菜单效果”...
    99+
    2023-05-30
    drawerlayout android
  • 微信小程序实现滑动删除
    本文实例为大家分享了微信小程序实现滑动删除的具体代码,供大家参考,具体内容如下 wxml <view class="bgwhite bor-bom-f2 row just-b...
    99+
    2024-04-02
  • uniapp怎么实现侧滑删除功能
    近年来,移动应用程序的用户体验已经成为了设计师和开发者越来越重视的领域。使用流畅、易于操作的界面成为应用程序赢得用户青睐的关键所在。侧滑删除作为用户体验的一部分,可以使应用程序的操作更加方便,使用户更快速地找到需要的内容,因此在各种应用程序...
    99+
    2023-05-14
  • 小程序实现侧滑删除功能
    本文实例为大家分享了小程序实现侧滑删除的具体代码,供大家参考,具体内容如下 1.页面布局 <view class='dialogue-box'>       <sc...
    99+
    2024-04-02
  • 微信小程序实现滑动侧边栏
    本文实例为大家分享了微信小程序滑动侧边栏的具体代码,供大家参考,具体内容如下 效果图: 手指向右滑动可以显示侧边栏,向左滑动隐藏侧边栏 代码附上:.wxml <view cl...
    99+
    2024-04-02
  • Android实现简单底部导航栏 Android仿微信滑动切换效果
    Android仿微信滑动切换最终实现效果:大体思路: 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标;2. 底部导航栏的设置方法类似于TabLayout的关联,View...
    99+
    2023-05-30
    android 导航栏
  • 怎么在android中使用View实现一个滑动删除效果
    这篇文章给大家介绍怎么在android中使用View实现一个滑动删除效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现功能可以向左滑动,右侧出现删除2、向左滑动如果删除出现一大半,松手打开删除,反之关闭删除3、应用...
    99+
    2023-05-31
    android view roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作