介绍
使用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实现左滑删除控件功能