在Twitter(官方应用)等Android应用中,当你遇到一个ListView时,你可以下拉它(它会在发布时反弹)来刷新内容。

我想知道,在你看来,最好的实现方式是什么?

我能想到的一些可能性:

一个在ListView顶部的项目-然而我不认为滚动回项目位置1(基于0)在ListView上的动画是一个简单的任务。 ListView之外的另一个视图-但我需要注意在它被拉时将ListView位置向下移动,我不确定我们是否可以检测到对ListView的拖动触摸是否仍然真正滚动ListView上的项。

你有什么推荐吗?

另外,我想知道官方的Twitter应用程序源代码什么时候发布。有消息说它会发布,但6个月过去了,我们一直没有听到它的消息。


当前回答

要获得最新的棒棒糖拉刷新:

下载最新的棒棒糖SDK和Extras/Android支持库 将项目的构建目标设置为Android 5.0(否则支持包可能会与资源有错误) 更新libs/android-support-v4.jar到21版 使用android.support.v4.widget。swiperfreshlayout + android.support.v4.widget. swiperfreshlayout . onrefreshlistener

详细的指南可以在这里找到:http://antonioleiva.com/swiperefreshlayout/

加上ListView,我建议阅读评论中的canChildScrollUp();)

其他回答

如果你不想让你的程序看起来像一个强行安装在Android上的iPhone程序,目标是一个更原生的外观和感觉,并做一些类似于Gingerbread的事情:

我还为Android实现了一个健壮的、开源的、易于使用的和高度可定制的PullToRefresh库。你可以用PullToRefreshListView替换你的ListView,就像在项目页面的文档中描述的那样。

https://github.com/erikwt/PullToRefresh-ListView

我已经尝试实现一个拉刷新组件,它还远远没有完成,但演示了一个可能的实现,https://github.com/johannilsson/android-pulltorefresh。

主要逻辑在扩展ListView的PullToRefreshListView中实现。在内部,它使用smoothScrollBy (API Level 8)来控制头视图的滚动。这个小部件现在更新了,支持1.5及以后的版本,请阅读README以获得1.5的支持。

在你的布局中,你只需像这样添加它。

<com.markupartist.android.widget.PullToRefreshListView
    android:id="@+id/android:list"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    />

没有人提到新的类型的“拉刷新”,显示在操作栏的顶部,就像谷歌Now或Gmail应用程序。

有一个ActionBar-PullToRefresh库,它的工作原理完全相同。

我们首先应该知道什么是拖动刷新布局在android。我们可以在android中调用滑动刷新来刷新。当你从上到下滑动屏幕时,它会基于setOnRefreshListener做一些动作。

这是一个演示如何实现android拉刷新的教程。我希望这能有所帮助。