MCPcopy Index your code
hub / github.com/ditclear/TimeLine

github.com/ditclear/TimeLine @3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.0 ↗ · + Follow
98 symbols 172 edges 11 files 12 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

TimeLine

关于本项目

最初的本意是做一个TimeLine时间轴,到后来逐渐成为了一个侧滑的自定义控件。也很感谢大家的支持,所以趁着年初有空闲,所以重构了当前项目。以后也会逐渐完善和维护本项目并提供maven依赖,再次感谢!

demo.apk

截图

Feature

  • SwipeDragLayout使用ViewDragHelper来进行滑动操作,代码少,易理解,核心代码不过150行
  • 使用了保留一个静态类的方法来确保只有一个展开,并在onDetachedFromWindow方法中进行关闭操作
  • 提供了多种自定义属性,见下表
  • sample使用了DataBinding和kotlin 进行了多类型的绑定,对于了解和使用DataBinding大有益处,添加多种Type更是十分简单,再也不用extends RecyclerView.Adapter了,可以参考BindingListAdapter

自定义属性

attr type default meaning
need_offset float 0.2f 最小需要滑动的距离
ios boolean false 拖动越界回弹效果
swipe_enable boolean true 开启滑动
swipe_direction int 1 滑动方向,默认1是左滑,2为右滑

回调监听

    public interface SwipeListener {

        /**
         * 拖动中,可根据offset 进行其他动画
         * @param layout
         * @param offsetRatio  偏移相对于menu宽度的比例
         * @param offset 偏移量px
         */
        void onUpdate(SwipeDragLayout layout, float offsetRatio, float offset);

        /**
         * 展开完成
         * @param layout
         */
        void onOpened(SwipeDragLayout layout);

        /**
         * 关闭完成
         * @param layout
         */
        void onClosed(SwipeDragLayout layout);
    }

License

MIT

Extension points exported contracts — how you extend this code

SwipeListener (Interface)
(no doc) [1 implementers]
swipelayout/src/main/java/com/ditclear/swipelayout/SwipeDragLayout.java
ItemClickPresenter (Interface)
(no doc)
app/src/main/java/vienan/app/expandableswipelistview/adapter/BindingViewAdapter.kt
ItemDecorator (Interface)
(no doc)
app/src/main/java/vienan/app/expandableswipelistview/adapter/BindingViewAdapter.kt
MultiViewTyper (Interface)
(no doc)
app/src/main/java/vienan/app/expandableswipelistview/adapter/MultiTypeAdapter.kt

Core symbols most depended-on inside this repo

close
called by 9
swipelayout/src/main/java/com/ditclear/swipelayout/SwipeDragLayout.java
setSwipeDirection
called by 5
swipelayout/src/main/java/com/ditclear/swipelayout/SwipeDragLayout.java
toast
called by 4
app/src/main/java/vienan/app/expandableswipelistview/RecyclerActivity.java
open
called by 4
swipelayout/src/main/java/com/ditclear/swipelayout/SwipeDragLayout.java
onClosed
called by 4
swipelayout/src/main/java/com/ditclear/swipelayout/SwipeDragLayout.java
navigateTo
called by 2
app/src/main/java/vienan/app/expandableswipelistview/MainActivity.java
setOpened
called by 2
app/src/main/java/vienan/app/expandableswipelistview/model/LineItem.java
getContent
called by 2
app/src/main/java/vienan/app/expandableswipelistview/model/LineItem.java

Shape

Method 82
Class 12
Interface 4

Languages

Java70%
Kotlin30%

Modules by API surface

swipelayout/src/main/java/com/ditclear/swipelayout/SwipeDragLayout.java32 symbols
app/src/main/java/vienan/app/expandableswipelistview/adapter/MultiTypeAdapter.kt12 symbols
app/src/main/java/vienan/app/expandableswipelistview/RecyclerActivity.java10 symbols
app/src/main/java/vienan/app/expandableswipelistview/model/LineItem.java8 symbols
app/src/main/java/vienan/app/expandableswipelistview/adapter/SingleTypeAdapter.kt8 symbols
app/src/main/java/vienan/app/expandableswipelistview/adapter/BindingViewAdapter.kt8 symbols
app/src/main/java/vienan/app/expandableswipelistview/MainActivity.java8 symbols
app/src/main/java/vienan/app/expandableswipelistview/DemoListActivity.java8 symbols
app/src/androidTest/java/vienan/app/expandableswipelistview/ApplicationTest.java2 symbols
app/src/main/java/vienan/app/expandableswipelistview/model/Dummy.java1 symbols
app/src/main/java/vienan/app/expandableswipelistview/adapter/BindingViewHolder.kt1 symbols

For agents

$ claude mcp add TimeLine \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact