Android源码初探之ListView 的 smoothScrollByOffset()

本文探讨了在Android中,ListView如何根据Position实现平滑滚动到指定位置的功能。通过分析`smoothScrollByOffset()`方法,发现其内部不仅涉及简单的父类调用,还包含复杂的判断逻辑和动画计算,确保视图正确滚动到目标位置。
摘要由CSDN通过智能技术生成

剧情:
前几天参加了去哪儿网的泛前段的分享会,谈的大多是去哪儿网对FaceBook的ReactNative的优化。谈到ListView的优化问题,大致意思是reactnative在不知道控件高度的情况下不容易直接根据Position找到控件的位置。不嫌事大的小伙伴问了个问题:
请问原声的Android是如何根据Position找到ListView的位置的呢?
答曰:
原声是可以直接根据位置找到的。
全场:嗯嗯嗯嗯~。
宝宝第一个不服,我就不感觉原声有这么厉害。
看了下ListView的方法,大概大神们说的是这个方法。

 listview.smoothScrollToPosition(int position);

第一层的smoothScrollByOffset(int offset)仅仅是super了一下父类的方法。

  public void smoothScrollByOffset(int offset) {
        super.smoothScrollByOffset(offset);
    }

里面是什么呢?

/**
     * Allows RemoteViews to scroll relatively to a position.
     */
    void smoothScrollByOffset(int position) {
        int index = -1;
        if (position < 0) {
            index = getFirstVisiblePosition();//获取第一个可见的位置
        } else 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值