SwipeRefreshLayout:滑动进度动画

Sim*_*mon 13 android listview android-animation swiperefreshlayout

我对Android很新,我正在谷歌网站上探索示例代码.我目前的代码是SwipeRefreshLayout:http://developer.android.com/samples/SwipeRefreshLayoutBasic/index.html

在代码中,我们看到正在为列表视图执行SwipeRefreshLayout,换句话说,如果向下拖动列表视图,则会触发该方法并且listview将自行刷新.

<android.support.v4.widget.SwipeRefreshLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/swiperefresh"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

    <ListView
          android:id="@android:id/list"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />

</android.support.v4.widget.SwipeRefreshLayout>
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是,当您向下拖动时,进度动画栏的代码中没有布局显示在列表视图的顶部.你认为SwipeRefreshLayout在你向下拖动时自动生成一个进度动画条而不需要用户在xml中为它指定任何布局吗?

例如,如果想要在进度动画栏的两端放置填充,以便在刷新时动画不会触摸屏幕的末端,那么如何进行操作?

https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html并没有真正说什么.

Gil*_*ach 24

无法改变动画.

SwipeRefreshLayout你不能定制太多; 我相信这是Google试图让开发人员坚持常见模式的尝试.你可以设计的样式是动画的四种颜色,用setColorScheme().

SwipeRefreshLayout注意在它的顶部显示其预定义的动画.这可以是当canChildScrollUp()返回false并且用户'拉下'或者设置时setRefreshing(true).关闭动画setRefreshing(false).将您的逻辑放在onRefreshing()侦听器的方法中.canChildScrollUp()如果您放置了不属于ListView您的内容,请覆盖SwipeRefreshLayout.你应该好好离开这里.


Ste*_*tes 11

虽然你无法改变它,你仍然可以隐藏它,然后一旦触发就显示你自己:-)

SwipeRefreshLayout swiperefresh = (SwipeRefreshLayout)root.findViewById(R.id.swiperefresh);
swiperefresh.setOnRefreshListener(this);
swiperefresh.setColorSchemeColors(0,0,0,0);
swiperefresh.setProgressBackgroundColor(android.R.color.transparent); 
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 在eclipse中你必须添加@SuppressLint("ResourceAsColor")来编译它.

  • 你仍然需要在适当的时间点调用setRefreshing(false),否则onRefresh不会再次触发.