`
dengyin2000
  • 浏览: 1218875 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Path timeline android草根的实现方式。

 
阅读更多
在网上找了下   想看看有没有这样的组件。 发现有一个国内的家伙实现了, 动画效果做得还蛮酷的。
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=187725&extra=page%3D1&page=1 

这里下载:
http://ishare.iask.sina.com.cn/f/35209241.html

不过看了下代码感觉还蛮复杂的, 后来就想自己搞搞, 思考一会后发现其实只要知道scrollbar的位置   然后再scrollbar上面浮一个view不就是了吗?  然后很自然的想到在listview的 onScrollListener里面去干这件事。  通过算出listview滚动的高度,listview所占的高度,和listview里面items的总高度, 可以算出浮动层所在的位置,  其实在Y轴上就是scrollbar的Y。  附件里面是代码。

        list_view.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                if (list_view.getChildAt(0) != null) {
                    Log.i(TAG, "getChildAt(0) Top:" + list_view.getChildAt(0).getTop());
                    Log.i(TAG, "getFirstVisiblePosition:" + list_view.getFirstVisiblePosition());
//                    Log.i(TAG, "FirstVisiblePosition Top:" + list_view.getChildAt(list_view.getFirstVisiblePosition()).getTop());
                    int scrolly = -list_view.getChildAt(0).getTop() + list_view.getChildAt(0).getMeasuredHeight() * list_view.getFirstVisiblePosition() + list_view.getDividerHeight() * list_view.getChildAt(0).getMeasuredHeight();
                    Log.i(TAG, "ScrollY:" + scrolly);

                    int listviewHeight = list_view.getMeasuredHeight();
                    int listviewContentHeight = list_view.getChildAt(0).getMeasuredHeight() * 100;

                    Log.i(TAG, "listviewHeight:" + listviewHeight + ", listviewContentHeight:" + listviewContentHeight);

                    float floatY = (float)listviewHeight / listviewContentHeight * scrolly;
                    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) tvText.getLayoutParams();
                    int RealScrollY = (int)floatY - tvText.getMeasuredHeight() / 2;
                    Log.i(TAG, "RealScrollY:" + RealScrollY);
                    layoutParams.topMargin = RealScrollY;
                    tvText.setLayoutParams(layoutParams);
//                    layoutParams.y = RealScrollY;
//                    tvText.layout(0, RealScrollY, tvText.getMeasuredWidth(), RealScrollY + tvText.getMeasuredHeight());
                }
            }
        });

分享到:
评论

相关推荐

    Android时间轴(Timeline)效果的实现代码示例

    在Android开发中,时间轴(Timeline)是一种常用于展示序列事件或者步骤的视觉元素,它可以帮助用户更好地理解和跟踪一系列操作或活动。本示例将详细解释如何在Android应用中实现一个自定义的时间轴效果。 首先,...

    Android代码-Android-Timeline-View

    Android-Timeline-View Android timeline to display horizontal sliding cards in recycler view, group by Day, Month or Year. Demo Video Apps using the library: Gourmet (http://thegourmet.app) Play...

    Android时间轴(Timeline)效果的实现(使用RecyclerView)

    Android时间轴(Timeline)效果的实现(使用RecyclerView)代码示例,详细内容请参考:http://blog.csdn.net/u012939909/article/details/53510203

    Android高级应用源码-时间轴 TimeLine.zip

    【标题】"Android高级应用源码-时间轴 TimeLine.zip" 涉及的主要知识点是Android平台上的时间轴(TimeLine)设计与实现。在移动应用开发中,时间轴是一种常见的展示信息的方式,通常用于展示事件序列或者动态更新的...

    Android代码-TimeLineView

    Android Timeline View Library demonstrate the the power of ConstraintnLayout and RecyclerView. Showcase     Quick Setup 1. Include library Using Gradle TimelineView is currently available in...

    Android代码-Timeline-View

    Android Timeline View Library (Using RecyclerView) is simple implementation used to display view like Tracking of shipment/order, steppers etc. Specs Badges/Featured In Sample Project You can ...

    Android时间轴(Timeline)效果的实现(使用RecyclerView).zip

    在Android应用开发中,创建一个美观且功能丰富的用户界面是至关...这个项目的源码提供了一个很好的起点,帮助开发者理解和实践这一实现方式。通过深入研究和实践,你可以进一步优化和定制时间轴,满足各种复杂的需求。

    timeline时间线的实现方法

    在本篇文章中,我们将探讨“timeline时间线的实现方法”,并结合提供的资源文件来理解其核心概念和技术。 首先,时间线的基本构成通常包括时间轴、时间点(里程碑)和事件描述。时间轴是整个时间线的基础,它表示了...

    Android时间轴实现方式

    在Android应用开发中,时间轴(Timeline)是一种常见的UI设计元素,常用于展示一系列按时间顺序排列的事件或数据。这种设计模式在电商、社交、新闻等应用中尤为常见,如京东、淘宝的商品更新历史或者新闻动态更新。...

    Android代码-TimeLine

    Android Timeline View is used to display views like Tracking of shipment/order, steppers etc. Use compile 'com.lin:timeline:1.1@aar' final TimeLineDecoration decoration = new TimeLineDecoration...

    AndroidListView实现时间轴

    本篇文章将详细讲解如何在Android中利用ListView实现时间轴效果。 首先,我们需要理解时间轴的基本构成:时间点、事件内容和连接线。在ListView中,每个时间轴项可以是一个单独的ListView项,包含时间点(可能是一...

    时光轴 - TimeLine

    2. **实现方式**: - HTML/CSS/JavaScript:前端开发者通常会利用这三种技术栈构建时光轴。HTML用于结构化内容,CSS进行样式设置,JavaScript负责交互逻辑和动态加载。 - JavaScript库:例如D3.js、Chart.js、...

    android timeline控件源码

    支持完整的视频编辑交互:添加视频,删除视频,截取片段,播放进度控制

    Unity3D使用Timeline实现过场动画

    "Unity3D使用Timeline实现过场动画"的主题涉及到如何运用Unity的创新工具Timeline和Cinemachine来制作流畅、专业的过渡效果。 Timeline是Unity3D的一个核心组件,它允许开发者创建复杂的非线性序列,包括音频、动画...

    Android-ExpandableListView制作时间轴-TimeLine

    总之,这个“Android-ExpandableListView制作时间轴-TimeLine”项目为开发者提供了一个基础的时间轴实现,通过学习和扩展这个示例,你可以构建出适应各种业务需求的时间轴组件。无论是展示历史数据、跟踪任务进度...

    Android的时间轴实现方式.zip

    总结来说,这个"Android的时间轴实现方式"项目提供了一个基于ListView实现时间轴的示例,适用于那些希望快速集成时间轴功能的开发者。通过自定义Adapter和布局,以及合理的数据模型设计,可以在Android应用中实现...

    timelineview-master

    在Android开发领域,时间轴(TimelineView)是一种常见的UI组件,用于展示事件按照时间顺序排列的信息。"timelineview-master"项目显然就是一个专注于实现这种效果的开源库。它可以帮助开发者轻松地在应用程序中创建...

Global site tag (gtag.js) - Google Analytics