使用Android实现左滑删除控件功能

  介绍

使用Android实现左滑删除控件功能吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

设计思路:最好以最小的代码侵入来实现左滑删除的功能,在不破坏原来逻辑的基础上,只需稍加改造便可具备左滑删除的能力。

首先分析下左滑删除的基础原理:

使用Android实现左滑删除控件功能

<强>原理分析:,

1。正常状态下,我们看到的是完整的内容部分,右侧菜单部分因为超出屏幕所以不在视线范围内。

2。手指滑动过程中,容器的内容跟随手指移动,从而拉出在屏幕外面的菜单区域。

3。当手指松开的时候,我们先假定一种逻辑,如果菜单区域显示超过一半,那就全部显示,如果少于一半那就滑出隐藏。

滑动原理分析完了之后,我们大概就有了实现思路了:

首先我们的控件里面需要两块区域,因为以前可能已经实现了列表项的显示,如果能不做任何改动,直接把以前的物品包含到我们的内容区域里面来,那么我们内容区域就轻松搞定了。
菜单区域,需要什么能力,就把相关的观点也传递给我容器,然后容器放到相应位置。
谈笑间,简单两步我们的左滑删除容器已经完成一个简单的雏形了!

接下来就是代码实现:

内容和菜单分别加入容器

/* *   *设置内容区域   * @param contentView   */公共空间addContentView(查看contentView) {   这一点。mContentView=contentView;   this.mContentView.setTag (“contentView");      查看简历=findViewWithTag (“contentView");   如果(简历!=null) {   this.removeView(简历);   }   LayoutParams LayoutParams=new LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT   ViewGroup.LayoutParams.MATCH_PARENT   );   this.addView(这一点。mContentView layoutParams);   }/* *   *设置右边菜单区域   */公共空间addMenuView(查看menuView) {   这一点。mMenuView=menuView;   this.mMenuView.setTag (“menuView");      视图mv=findViewWithTag (“menuView");   如果(mv !=null) {   this.removeView (mv);   }   LayoutParams LayoutParams=new LayoutParams (mRightCanSlide ViewGroup.LayoutParams.MATCH_PARENT);   this.addView(这一点。mMenuView layoutParams);   }

左滑处理

/* *   *拦截触摸事件   *   * @param电动车   * @return   */@Override   公共布尔>/* *   *处理触摸事件   *需要注意何时处理左滑,何时不处理   *   * @param电动车   * @return   */@Override   公共布尔>/* *   *删除按钮状态变化监听   */公共接口>/* *   *手指抬起执行动画   */私人空间upAnim () {   int scrollX=getScrollX ();      如果(scrollX==mRightCanSlide | | scrollX==0) {      如果(mStatusChangeLister !=null) {   mStatusChangeLister。onStatusChange (scrollX==mRightCanSlide);   }      返回;   }      clearAnim ();//如果显出一半松开手指,那么自动完全显示,否则完全隐藏   如果(scrollX祝辞=mRightCanSlide/2) {   mValueAnimator=ValueAnimator。ofInt (scrollX mRightCanSlide);   mValueAnimator。addUpdateListener(新ValueAnimator.AnimatorUpdateListener () {   @Override   公共空间>/* *   * @author luowang   * @date 2020-08-19 17:31   *左滑删除视图   */公开课LeftSlideView LinearLayout{延伸/* *   *标记   */公共静态最终字符串标签=癓eftSlideView";/* *   *上下文   */私人上下文mContext;/* *   *最小触摸距离   */私人int mTouchSlop;/* *   *右边可滑动距离   */私人int mRightCanSlide;/* *   *按下x   */私人mInitX浮动;/* *   *按下y   */私人mInitY浮动;/* *   *属性动画   */私人ValueAnimator mValueAnimator;/* *   *动画时长   */私人int mAnimDuring=200;/* *   *删除按钮的长度   */私人int mDelLength=76;/* *   *:viewpage   */私人:viewpage mViewPager;/* *   * RecyclerView   */私人RecyclerView mRecyclerView;/* * CardView */私人CardView mCardView;/* *是否重新计算*/私人布尔isReCompute=true;/* *状态监听*/私人>看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

使用Android实现左滑删除控件功能