• Android左滑删除,自定义左滑删除控件


    左滑显示更多,或配套listView使用快速实现左滑删除布局

    效果图

     使用简单粗暴

    仓库地址  GitHub - IHoveYou/LeftSlideView: 好用的左滑删除控件,支持左滑布局,支持直接预览

    1. allprojects {
    2. repositories {
    3. ...
    4. maven { url 'https://jitpack.io' }
    5. }
    6. }
    1. dependencies {
    2. implementation 'com.github.IHoveYou:LeftSlideView:v1.1'
    3. }

    LeftSlideHorizontalScrollView 为滑动控制View 继承自 HorizontalScrollView

    LeftSlideView 控件内包裹2个任意View  左侧View为内容区域,右侧View为左滑显示区域

    view 可以为任何类型 也可以是ViewGroup,自由度极高可放置任意布局

    效果可直接预览

    1. <com.example.leftslideview.LeftSlideHorizontalScrollView
    2. android:scrollbars="none"
    3. android:id="@+id/leftSlideHorizontalScrollView"
    4. android:layout_width="match_parent"
    5. android:fillViewport="true"
    6. android:layout_height="40dp"
    7. >
    8. <com.example.leftslideview.LeftSlideView
    9. android:id="@+id/leftSlideView"
    10. android:layout_width="match_parent"
    11. android:layout_height="match_parent"
    12. >
    13. <LinearLayout
    14. android:paddingHorizontal="15dp"
    15. android:orientation="vertical"
    16. android:layout_width="300dp"
    17. android:layout_height="match_parent">
    18. <TextView
    19. android:gravity="center_vertical"
    20. android:text="23333"
    21. android:id="@+id/textView"
    22. android:layout_width="match_parent"
    23. android:layout_height="match_parent"/>
    24. LinearLayout>
    25. <LinearLayout
    26. android:orientation="vertical"
    27. android:id="@+id/llLeftSlidButton"
    28. android:background="@color/teal_700"
    29. android:layout_width="50dp"
    30. android:layout_height="match_parent"/>
    31. com.example.leftslideview.LeftSlideView>
    32. com.example.leftslideview.LeftSlideHorizontalScrollView>

    LeftSlideHorizontalScrollView 的API

    1. /**
    2. * 触摸回调
    3. */
    4. interface MoveClickListener {
    5. /**
    6. * 移动中回调
    7. * @param leftSlideHorizontalScrollView
    8. * @param moveX x轴移动距离
    9. */
    10. fun onMoveClickListener(leftSlideHorizontalScrollView: LeftSlideHorizontalScrollView?, moveX: Int)
    11. /**
    12. * 移动结束
    13. * @param leftSlideHorizontalScrollView
    14. * @param isRollOut 当前状态 true 展开 false 收起
    15. */
    16. fun onUpClickListener(leftSlideHorizontalScrollView: LeftSlideHorizontalScrollView?, isRollOut: Boolean)
    17. }
    18. //设置滑动监听
    19. void setMoveClickListener(MoveClickListener onListener);
    20. //手动初始化布局 执行关闭无动画
    21. void initScrollow();
    22. //手动设置按钮展开状态 true 展开 false关闭
    23. void setRollOut(boolen isRollOut)
    24. //获取当前布局显示状态 展开状态 true 展开 false关闭
    25. boolean getRollOut()
    列表布局 左滑展开控制类 LeftSlideUtils
    
    addView  添加需要联动的View 添加在一起的View 同时只能展开一个
    

    实现原理

    LeftSlideHorizontalScrollView 继承 HorizontalScrollView

    监听用户手指移动事件 记录用户点击位置,移动方向,放开后移动距离计算得出是否展开

    LeftSlideView 继承 ViewGrop

    重写onMeasure方法 在方法内计算控件实际可用宽度,将内容布局宽度设置为实际宽度,获取右侧按钮布局宽度 ,实际可用位置+右侧可用宽度 = LeftSlideView实际整体宽度,配合LeftSlideHorizontalScrollView实现左右滑动,通过点击时获取按钮布局宽度计算展开、折叠动画。

    重新LeftSlideView的onLayout方法对子控件进行重新布局将内容区域放在左侧显示位,将按钮区域放置于右侧折叠位,具体代码实现可下载代码仓库进行查看学习。

  • 相关阅读:
    Java源码分析 | Object
    基于Java+微信小程序实现《购物商城系统》
    如何在Linux环境搭建SVN服务器并实现公网访问
    打造更懂投资人的发展模式 锦江酒店(中国区)属地化深耕赋能
    威尔士和英格兰同属英国,但为啥还要在世界杯上进行PK?
    【Luogu】 P3206 [HNOI2010] 城市建设
    YOLOv5算法改进(18)— 更换激活函数(SiLU、ReLU、ELU、Hardswish、Mish、Softplus等)
    Elasticsearch通过Http请求实现聚合分组及聚合计算查询
    安全狗| 一家云原生安全厂商的成长独白
    大数据挖掘企业服务平台-道路运输安全大数据分析解决方案
  • 原文地址:https://blog.csdn.net/qq_35644925/article/details/126118985